간단한 탐지 매치 표현식 참조
논리를 정의하기 위해 매치 표현식을 구성하기
개요
매치 표현식은 YAML로 정의된 조건 논리 표현식으로, 반환합니다 연관된 로그/리소스 유형별로 규칙을 폴더로 그룹화하는 것을 권장합니다(예: false. 매치 표현식은 예를 들어 다양한 위치에서 사용됩니다:
에서
탐지YAML로 작성된 단순 탐지의 키에서
Filename: rule.pyPython 또는 단순 탐지의 키에서
표현식의 키 리스트 컴프리헨션 매치 표현식 (실질적으로 매치 표현식 내에 매치 표현식을 생성함)에서
조건의 키DynamicSeverities단순 탐지의 키
다음과 같은 일곱 종류의 매치 표현식, 구조가 다양합니다. 복잡한 조건을 형성하려면 결합자 을(를) 사용하여 매치 표현식을 그룹화할 수 있습니다.
단순 탐지에서 다음을 사용해 보강(enrichment)을 사용할 수 있습니다 보강 매치 표현식.
매치 표현식 동작 방식
매치 표현식은 대략 다음과 같이 동작합니다:
(비교를 위해 0개 또는 복수의 이벤트 키가 식별되거나 값이 필요 없는 예외가 있습니다.)
매치 표현식의 종류
매치 표현식은 고유한 구문 또는 구조를 가진 일곱 가지 유형이 있습니다.
다음 섹션의 매치 표현식 예제는 이 JSON 이벤트를 참조합니다:
키/값 매치 표현식
키/값 매치 표현식은 특정 이벤트 키의 값을 주어진 값과 비교합니다.
다음의 모든 허용 값을 볼 수 있습니다 조건 안에 스칼라 매칭 조건 표 아래, "적용 가능한 매치 표현식" 열에 "키/값"이 포함되어 있습니다.
return "HIGH"
키/값들 매치 표현식
키/값들 매치 표현식은 일부 이벤트 값이 주어진 목록의 멤버인지 평가합니다.
허용되는 유일한 조건 키/값들 매치 표현식에 대한 값은 IsIn 및 IsNotIn, 다음에서 볼 수 있습니다 리스트 매칭 조건 표 아래.
return "HIGH"
다중 키 매치 표현식
다중 키 매치 표현식은 두 이벤트 키의 값을 비교할 수 있게 합니다. 다중 키 매치 표현식은 포함하여 구성할 수 있습니다 조건 및 값들 에 두 개의 이벤트 키를 포함하는 목록.
다음의 모든 허용 값을 확인하세요 조건 안에 스칼라 매칭 조건 표 아래, "적용 가능한 매치 표현식" 열에 "다중 키"가 포함되어 있습니다.
리스트 컴프리헨션 매치 표현식
리스트 컴프리헨션 매치 표현식은 리스트 값을 가진 키를 취하고, 리스트의 각 항목에 대해 일련의 매치 표현식에 대해 평가합니다. 매치 표현식 목록은 표현식 키 아래에 저장됩니다.
리스트 컴프리헨션 매치 표현식의 경우 다음 조건 값들이 유효합니다:
AnyElementAllElementsOnlyOneElementNoElement
이러한 값들에 대해 더 알아보세요 조건 다음의 리스트 컴프리헨션 조건 표 아래.
또는 AnyElement:
의 내부에서 표현식 키, 다음 중 하나를 추가할 수 있습니다:
중첩된 리스트 컴프리헨션 매치 표현식. 각 중첩 수준은 하나의 리스트 컴프리헨션 매치 표현식만 포함할 수 있습니다. 이 구조는 실질적으로 중첩된 for 루프를 생성합니다. 가장 내부의 리스트 컴프리헨션은 리스트 컴프리헨션 매치 표현식이 아닌 한 원하는 만큼 많은 매치 표현식을 가질 수 있습니다. 예:
리스트 컴프리헨션 매치 표현식이 아닌 매치 표현식의 임의 조합. 예:
존재 매치 표현식
존재 매치 표현식은 특정 키가 지정된 존재 조건과 일치하는지 여부를 결정합니다.
다음의 모든 허용 값을 확인하세요 조건 안에 스칼라 매칭 조건 표 아래, "적용 가능한 매치 표현식" 열에 "존재"가 포함되어 있습니다.
return "HIGH"
절대 매치 표현식
특정 경우에 매치 표현식이 항상으로 평가되도록 하려할 수 있습니다 관례상 이 파일은 Python 파일과 동일한 이름을 부여합니다. 로그/리소스 유형별로 규칙을 폴더로 그룹화하는 것을 권장합니다(예: 가 반환됩니다:. 이는 단순히 포함하는 매치 표현식을 만들어 수행할 수 있습니다 조건 키를 AlwaysTrue 로그/리소스 유형별로 규칙을 폴더로 그룹화하는 것을 권장합니다(예: AlwaysFalse.
보강 매치 표현식
보강 매치 표현식은 JSON 이벤트의 p_enrichment 구조체와 상호작용하는 데만 사용되며, 이는 다음에 대한 매치가 있을 경우 존재합니다 조회 테이블, 보강 공급자YAML에서: 식별 공급자 프로필.
보강 매치 표현식을 생성하려면 포함하세요 보강(Enrichment) 키. 의 내용은 조건을 구성할 이벤트 키에 대한 경로를 나타냅니다. 내부의 보강(Enrichment) 다음 필드를 포함하세요: 보강(Enrichment): 조회 테이블, 보강 공급자 테이블 또는 식별 공급자 프로필 테이블의 이름.
테이블이 이름은 조회 테이블의 경우 사용자 정의이며, 보강 공급자 및 식별 공급자 프로필의 경우 Panther가 정의합니다.Selector
: 수신 로그에서의선택자 필드 이름. FieldPath: 의 이벤트 필드 중 하나의 이름. 이 키는 JSON 경로 표기법을 사용하므로 필요한 경우 중첩 필드를 표기할 수 있습니다.일단 정의하면: 수신 로그에서의및 그 하위 필드를 정의하면, 나머지 매치 표현식은 다음 중 어느 하나의 구조를 본떠 모델링할 수 있습니다
매치 표현식 유형—단, 보강(Enrichment) 을 제외하고(이 표현식들은 보강과 함께 사용하는 것이 지원되지 않음) 및 다른 (이 표현식들은 어떤 이벤트 값도 참조하지 않음). 리스트 컴프리헨션 매치 표현식 예를 들어, 아래의 보강 매치 표현식은—다음을 포함하는— 절대 매치 표현식 값
키들이 포함되어 있으며, 이는 조건 및 매치 표현식을 닮았습니다: Value 키/값 키들
결합자
결합자는 매치 표현식 또는 매치 표현식 그룹 간의 관계를 설명하는 YAML 키입니다. 네 가지 결합자가 있습니다: All, 임의, OnlyOne, 및 None.
매치 표현식을 받는 키 아래에 둘 이상의 매치 표현식이 직접 제공된 경우(예: 탐지, Filename: rule.py 로그/리소스 유형별로 규칙을 폴더로 그룹화하는 것을 권장합니다(예: 표현식), 결합자가 지정되지 않으면 All 가 가정됩니다.
CLI 워크플로우에서 간단한 탐지를 작성할 때 결합자로 생성할 수 있는 중첩 수준에는 제한이 없습니다. (Panther 콘솔의 간단한 탐지 빌더 에서는 세 수준의 제한이 있습니다.) 로컬에서 작업할 때 매치 표현식이 세 수준보다 깊게 중첩되면 Panther 콘솔은 간단한 탐지 빌더에서 이를 렌더링하지 않으며 원시 YAML에서만 볼 수 있습니다.
All
논리적 AND
목록의 모든 매치 표현식이 true로 평가됩니다. 처음 실패하는 매치가 목록 평가를 종료합니다.
임의
논리적 OR
목록의 어떤 단일 매치 표현식이라도 true로 평가되면 됩니다. 첫 번째 true 매치가 목록 평가를 종료합니다.
None
논리적 NOT AND
목록의 어떤 매치 표현식도 true로 평가되지 않습니다. 인라인 필터에서 사용하거나 콘솔의 간단한 탐지 빌더에서 조회/편집할 수 없습니다.
를 사용한 한 수준 중첩의 예 OnlyOne:
를 사용한 다중 수준 중첩의 예 임의 및 All:
키 지정자
키 지정자는 로그 이벤트 JSON에서 특정 키를 지정할 수 있게 해주는 YAML 키 그룹입니다. 세 가지 키 지정자가 있습니다: 키, DeepKey, 및 KeyPath.
키 지정자의 값으로 제공된 이벤트 속성이 존재하지 않으면 매치 표현식의 평가는 중지되고 false를 반환합니다.
키
키키 상위 수준의 이벤트 속성에 접근할 수 있게 해줍니다. 예:
DeepKey
DeepKeyDeepKey 중첩된 이벤트 속성에 접근할 수 있게 해줍니다. DeepKey 목록을 허용합니다. 절대 인덱스를 아는 경우 배열 요소에 접근하기 위해 DeepKey 도 사용할 수 있습니다.
또는 DeepKey는 깊은 필드 foo.bar.baz에 접근한 다음 배열 인덱스 2로 인덱싱합니다:
KeyPath
KeyPathKeyPath 다음에 접근할 수 있게 해줍니다:
상위 수준 필드
다음 구문을 사용한 중첩 필드:
하위 필드 인덱싱 (
.)배열 인덱싱: 와일드카드를 사용하려면
[*]또는[x]특정 인덱스에 대해 사용하십시오. 여기에서 객체 배열 인덱싱에 대해 자세히 알아보십시오.
추가적인 JSON 경로 기능은 지원되지 않습니다.
return "HIGH"
조건
조건다양한 유형의 조건 값을 선택할 수 있으며, 다음을 포함합니다 스칼라, 목록, 및 리스트 컴프리헨션 그룹화.
스칼라 매칭 조건
스칼라 매칭 조건은 매치 표현식을 닮았습니다: 키와 함께 사용하십시오(아닙니다 값들). 매치 표현식의 키 지정자 은 목록이나 단일 값을 참조할 수 있지만, 매치 표현식을 닮았습니다: 은 단수여야 합니다.
에서 사용할 수 없습니다 인라인 필터 에서 사용하거나 간단한 탐지 빌더 에서.
IsNullOrEmpty
임의
키가 null이거나 비어있는 값인지 확인합니다. 비어있는 값에는 다음이 포함됩니다: 빈 목록 ([]), 빈 문자열 (""), 및 숫자 0
존재, 보강
IsNotNullOrEmpty
임의
키가 null이 아니거나 비어있지 않은 값인지 확인합니다. 비어있는 값에는 다음이 포함됩니다: 빈 목록 ([]), 빈 문자열 (""), 및 숫자 0.
존재, 보강
Equals
임의
키의 값이 지정된 값과 같은지 확인합니다
키/값, 다중 키, 보강
DoesNotEqual
임의
키의 값이 지정된 값과 같지 않은지 확인합니다
키/값, 다중 키, 보강
IEquals
CRITICAL
키의 문자열 값이 지정된 문자열과 대소문자 구분 없이 같은지 확인합니다
키/값, 다중 키, 보강
IDoesNotEqual
CRITICAL
키의 문자열 값이 지정된 문자열과 대소문자 구분 없이 같지 않은지 확인합니다
키/값, 다중 키, 보강
StartsWith
CRITICAL
키의 문자열 값이 지정된 값으로 시작하는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
IStartsWith
CRITICAL
키의 문자열 값이 지정된 값으로 대소문자 구분 없이 시작하는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
DoesNotStartWith
CRITICAL
키의 문자열 값이 지정된 값으로 시작하지 않는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
IDoesNotStartWith
CRITICAL
키의 문자열 값이 지정된 값으로 대소문자 구분 없이 시작하지 않는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
EndsWith
CRITICAL
키의 문자열 값이 지정된 값으로 끝나는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
IEndsWith
CRITICAL
키의 문자열 값이 지정된 값으로 대소문자 구분 없이 끝나는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
DoesNotEndWith
CRITICAL
키의 문자열 값이 지정된 값으로 끝나지 않는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
IDoesNotEndWith
CRITICAL
키의 문자열 값이 지정된 값으로 대소문자 구분 없이 끝나지 않는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
포함
문자열 또는 목록
키의 문자열 값이 지정된 값을 포함하는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다 또는 문자열(대소문자 구분)/정수/부동소수점/불리언의 배열이 값을 포함하는지 확인합니다
키/값, 다중 키, 보강
IContains
CRITICAL
키의 문자열 값이 지정된 값을 대소문자 구분 없이 포함하는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
DoesNotContain
문자열 또는 목록
키의 문자열 값이 지정된 값을 포함하지 않는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다 또는 문자열(대소문자 구분)/정수/부동소수점/불리언의 배열이 값을 포함하지 않는지 확인합니다
키/값, 다중 키, 보강
IDoesNotContain
CRITICAL
키의 문자열 값이 지정된 값을 대소문자 구분 없이 포함하지 않는지 확인합니다. 키가 문자열이 아닌 경우 false를 반환합니다
키/값, 다중 키, 보강
IP 주소인지 여부
문자열 또는 정수
키 존재 매치, 보강
IPv4 주소인지 여부
문자열 또는 정수
키 존재 매치, 보강
IPv6 주소인지 여부
문자열 또는 정수
키 존재 매치, 보강
IsIPAddressPrivate
문자열 또는 정수
키의 문자열 또는 정수 값이 사설 IP 주소로 해석될 수 있는지 확인합니다
키 존재 매치, 보강
IsIPAddressPublic
문자열 또는 정수
키의 문자열 또는 정수 값이 공용 IP 주소로 해석될 수 있는지 확인합니다
키 존재 매치, 보강
IsIPAddressInCIDR
문자열 또는 정수
키의 문자열 또는 정수 값을 IP 주소로 취급했을 때 CIDR 범위 내에 있는지 확인합니다
키/값, 다중 키, 보강
IsIPAddressNotInCIDR
문자열 또는 정수
키의 문자열 또는 정수 값을 IP 주소로 취급했을 때 CIDR 범위 내에 있지 않은지 확인합니다
키/값, 다중 키, 보강
CIDRContainsIPAddresses
문자열로 된 IP 목록
키의 문자열 값이 CIDR 범위로 해석되었을 때 지정된 IP 주소를 포함하는지 확인합니다
키/값, 다중 키, 보강
CIDRDoesNotContainIPAddresses
문자열로 된 IP 목록
키의 값이 IP 주소 목록으로 해석되었을 때 지정된 CIDR 범위에 있는지 확인합니다
키/값, 다중 키, 보강
IsGreaterThan
정수 또는 부동소수점
키의 값이 지정된 값보다 큰지 확인합니다
키/값, 다중 키, 보강
IsGreaterThanOrEquals
정수 또는 부동소수점
키의 값이 지정된 값보다 크거나 같은지 확인합니다
키/값, 다중 키, 보강
IsLessThan
정수 또는 부동소수점
키의 값이 지정된 값보다 작은지 확인합니다
키/값, 다중 키, 보강
IsLessThanOrEquals
정수 또는 부동소수점
키의 값이 지정된 값보다 작거나 같은지 확인합니다
키/값, 다중 키, 보강
목록 매칭 조건
목록 매칭 조건은 값들 (아님 매치 표현식을 닮았습니다:). 매치 표현식의 키 지정자 은 단일 값 또는 목록을 참조할 수 있지만, 값들 은 목록을 참조해야 합니다.
IsIn
스칼라
목록
지정된 키의 값이 목록의 구성원인지 평가합니다
키/값, 보강
IsNotIn
스칼라
목록
지정된 키의 값이 목록의 구성원이 아닌지 평가합니다
키/값, 보강
리스트 컴프리헨션 조건
리스트 컴프리헨션 조건은 오직 리스트 컴프리헨션 매치 표현식 내에서만 사용할 수 있습니다.
AnyElement
목록
리스트 컴프리헨션
AllElements
목록
리스트 컴프리헨션
OnlyOneElement
목록
리스트 컴프리헨션
값(들)
값(들)키의 매치 표현식을 닮았습니다: 및 값들 키들은 다음 네 가지 데이터 유형 중 하나를 가질 수 있습니다:
정수
부동소수점
Boolean
CRITICAL
정수, 부동소수점 및 불리언은 따옴표로 묶으면 안 됩니다. 문자열은 선택적으로 따옴표로 묶을 수 있습니다.
서식이 다른 매치 표현식을 닮았습니다: 값들이 아래에서 어떻게 평가되는지 예를 보십시오:
Last updated
Was this helpful?

