인라인 필터로 탐지 수정(베타)
코드를 작성하지 않고 기존 규칙을 수정하기
개요
기존 규칙을(를) Panther 관리 규칙조정하려면 인라인 필터를 추가하세요. 인라인 필터는 탐지 로직이 실행되기 전에 통과해야 하는 조건입니다. 인라인 필터는 스케줄된 규칙이나 정책이 아니라 규칙에서만 사용할 수 있습니다.
다음 Panther 콘솔에서는 노코드 빌더를 사용하여 인라인 필터를 생성할 수 있습니다. 를 클릭하세요.CLI에서는 InlineFilters YAML 키를 추가하여 인라인 필터를 생성할 수 있습니다.
필터의 일반적인 사용 사례는 허용 목록(allowlist) 또는 차단 목록(denylist)을 추가하는 것입니다.
인라인 필터 작동 방식
필터 문장은 탐지 로직보다 먼저 평가됩니다. 필터는 부울 값 (즉, 이벤트와 일치) 를 반환해야만 탐지 로직이 실행됩니다. 다시 말해 인라인 필터는 포함 필터입니다.
콘솔과 CLI 워크플로우 모두에서 필터는 AND 또는 { "ip": "10.0.0.1", "un": "[email protected]", "country": "France" }{ "ip": "10.0.0.2", "un": "[email protected]", "country": "France" }{ "ip": "10.0.0.3", "un": "[email protected]", "country": "France" } 논리로 그룹화할 수 있습니다. 인라인 필터는 드모르간의 법칙을 따릅니다. 논리 예시는 이 지식 베이스 문서를 참조하세요: Panther 탐지 인라인 필터 문제 해결 가이드.
이벤트에 필터가 평가하려는 필드가 포함되어 있지 않으면 필터는 통과합니다. 필터가 평가하는 필드의 값이 없음이면 필터는 true 양의 비교 연산자 또는 적용되지 않는 비교 연산자에서는 부울 값 반대 비교 연산자에서는
콘솔에서는 새 규칙 생성 중에 필터를 사용할 수 없습니다. CLI 워크플로우에서는 새 규칙에 InlineFilters 를 포함할 수 있습니다.
Panther 콘솔에서 필터 생성하기
규칙 편집 페이지 또는 해당 규칙으로 트리거된 알림의 이벤트 내에서 규칙에 필터를 추가할 수 있습니다.
규칙 편집 페이지에서 필터 추가
Panther 콘솔의 왼쪽 탐색 바에서 클릭하십시오 탐지.
탐지 목록에서 규칙 이름을 클릭하여 해당 규칙의 세부 페이지를 엽니다.
내에서 탐지 섹션, 아래의 이벤트만 포함하도록 필터: 의 오른쪽에 Where활성화되어 있다면, 클릭하세요 +.
표시되는 메뉴에서 필터 추가 또는 필터 그룹 추가.

각 필터(단독 또는 그룹 내)마다 논리를 정의하세요:
클릭 키그런 다음 조건이 적용될 이벤트 키를 선택합니다.
중첩 필드를 표시하려면 JSON 경로 표기법을 사용하세요.
일부 옵션에는
[*]가 포함될 수 있으며, 이는 해당 키가 객체 배열임을 나타냅니다. 아래에서 객체 배열 인덱싱에 대해 자세히 알아보세요.
클릭 조건그런 다음 조건을 선택하세요.
선택된 조건 이(가) 입력 값(예:
정의되어 있더라도또는포함)을 필요로 하는 경우 값 또는 값 목록을 입력하세요.값 필드가 배열을 받는 경우, 아래의 배열 값 입력 지침.
를 참조하세요. 와 또는 또는각 필터와 필터 그룹 사이에 올바른 결합자(AND 또는 OR 중 하나)가 선택되어 있는지 확인하세요.
추가된 필터로 단위 테스트를 실행하여 통과하는지 확인하세요.
페이지 오른쪽 상단에서 배포 를 클릭하여 변경사항을 저장하세요.
경보 이벤트에서 필터 추가
연관된 알림의 이벤트에서 규칙에 직접 인라인 필터를 추가할 수 있습니다. 이는 특히 오탐 경고를 받은 경우에 유용하며, 향후 유사한 이벤트에 대해 해당 탐지가 일치하지 않도록 튜닝할 때 도움이 됩니다.
Panther 콘솔의 왼쪽 탐색 바에서 클릭하십시오 Alerts.
조정하려는 규칙과 관련된 알림을 찾아 이름을 클릭하세요.
알림 세부 페이지에서 아래로 스크롤하여 이벤트 섹션.
이벤트의 JSON에서 새 필터가 대상으로 삼을 표시기 위에 마우스를 올리고 대상 아이콘을 클릭하세요.

설정은 필터 추가 슬라이드 아웃 패널이 창의 오른쪽에 열립니다.
다음 필터 추가 슬라이드 아웃 패널에서는 새 필터가 다음과 같이 미리 채워집니다:
키: 이벤트 JSON에서 대상 아이콘을 클릭한 필드를 기본값으로 설정합니다.
조건: 기본값은 가 아닙니다이며, 이는 향후 이와 유사한 이벤트에 대해 알림을 받기를 에 설치해야 하며 원할 것이라고 가정한 것입니다.
문자열: 이벤트 JSON에서 선택된 필드의 값을 기본값으로 설정합니다.

필터에 원하는 변경을 수행하세요. 모든 미리 채워진 필드(예: 키, 조건 와 문자열)는 편집 가능합니다.
다음을 찾으십시오 단위 테스트 패널 하단 근처의 섹션. 규칙이 Panther 관리 이 아니고 현재 이벤트를 사용하여 규칙에 대한 새 단위 테스트를 생성하려면 현재 알림 이벤트를 단위 테스트로 추가.
라벨이 붙은 체크박스를 클릭하세요. 탐지는 예시 이벤트를 기반으로 트리거되어야 합니다 라벨이 붙은 토글은 편집 가능합니다. 기본값은 예상 값이며, 향후 이러한 이벤트와 같은 알림을 방지하려는 경우가 대부분이므로 이 값이 기본값입니다.

규칙이 Panther 관리인 경우 이 옵션은 비활성화됩니다.

클릭 저장 및 테스트 실행.
이렇게 하면 대상 규칙의 모든 단위 테스트가 실행됩니다. 7단계에서 새 단위 테스트를 생성한 경우 해당 테스트도 실행됩니다.
새 필터가 저장되려면 규칙의 모든 단위 테스트가 통과해야 합니다. 단위 테스트가 하나라도 실패하면:
규칙이 Panther 관리활성화되어 있다면, 클릭하세요 탐지 보기 를 클릭하여 규칙의 세부 페이지로 이동해 단위 테스트를 편집하세요. 거기에서 Diff 보기 를 클릭하여 규칙에 대한 변경 사항을 저장할 수 있습니다.

규칙이 Panther 관리인 경우 해당 규칙의 단위 테스트는 읽기 전용이며, 실패한 테스트를 수정하여 통과시키는 것이 불가능합니다. 필터를 성공적으로 추가하려면 대신 필터로 실패한 단위 테스트 작업 워크플로를 따르세요.
배열 값 입력
선택한 규칙 필터 연산자가 값 필드에 배열을 요구하는 경우(예: is in 연산자), 값 필드를 클릭하면 팝업되는 모달에서 배열 값을 입력합니다.
배열에 값을 추가하려면:
필터에 대해 키 와 조건 를 선택한 후 값 필드를 클릭하세요.

이렇게 하면 배열 입력 모달이 열립니다.
모달에서 입력 필드에 배열 값(들)을 입력하세요.
입력이 쉼표로 구분된 경우, 위에 입력된 값은 쉼표로 구분됩니다 체크박스를 선택하세요.
이 필드가 선택되면 값 필드에 입력된 텍스트는 쉼표 구분자로 나누어 여러 값으로 분리됩니다. 예: "User 1,User 2,User 3"를 입력하면 세 개의 값이 추가됩니다.

입력이 쉼표로 구분되지 않는 경우 위에 입력된 값은 쉼표로 구분됩니다 선택하지 않은 상태로 두세요.
이 필드가 선택 해제되면 쉼표를 포함한 값을 하나씩 추가할 수 있습니다. 예: "1,000"을 입력하면 하나의 값이 추가됩니다.

클릭 리디렉트 URL.
필요에 따라 2-3단계를 반복하여 모든 값을 배열에 추가하세요.
클릭 적용.
객체 배열 인덱싱
필터 표현식을 만드는 동안 이벤트 키의 값이 객체 배열인 경우 해당 키는 드롭다운 선택기에서 배열 인덱싱 기호 [*]와 함께 객체의 필드들이 표시됩니다. 선택된 필드의 모든 객체를 대상으로 하려면 [*] 를 사용할 수 있으며, 배열을 인덱싱하여 단일 필드를 대상으로 하려면 * 를 정수로 바꿔 사용합니다.
예제
예를 들어, 다음의 resources 필드를 AWS.CloudTrail 업로더는 기존 스키마가 있는지 확인하고 업데이트를 진행하거나 일치하는 스키마 이름이 없으면 새로 생성합니다.:

에서 가져온다고 합시다.

기본적으로 Panther는 와일드카드 배열 인덱스([*])를 적용하여 배열의 모든 객체에서 선택한 필드의 값을 검색합니다. [*] 가 사용되면 이러한 값들의 배열이 생성되어 검색됩니다. 이 때문에 배열 조건만 사용 가능합니다: 비어 있음, 비어 있지 않음, 포함, 포함하지 않음.

예를 들어, 아래 필터 표현식(resources[*].type 포함 AWS::IAM::Role) 은 이벤트가 다음과 같을 때 일치함을 의미합니다: 모든 의 값이 유형 요일 resources 배열에 AWS::IAM::Role.

그러나 배열의 단일 객체를 지정하려면 * 를 정수로 바꿔 배열을 인덱싱할 수 있습니다. 이 경우 Panther는 해당 인덱스의 중첩 필드 값만 평가합니다.
표시되는 조건은 선택한 중첩 필드의 데이터 유형에 적용 가능한 조건으로 업데이트됩니다:

CLI 워크플로우에서 필터 생성하기
Panther 콘솔에서 노코드 규칙 필터를 생성하는 것 외에도, 규칙에 대해 간단한 탐지(Simple Detections) 또는 Python 탐지(Python detections).
로 작성된 YAML 필터를 생성할 수 있습니다. 부울 값콘솔에서 생성된 필터와 마찬가지로 YAML 필터는 규칙의 탐지 로직보다 먼저 평가됩니다. 필터가 true를 반환하면 탐지 로직이 실행됩니다. 필터가 true 를 반환하면 탐지 평가가 중단되고 탐지는
완전히 YAML 구문
YAML 구문InlineFilter InlineFilters YAML 필터는 InlineFilters키로 표시됩니다. 모든 와 내에서 하나 이상의 일치 표현식을 나열하세요. Any 결합자 InlineFilters, 모든 를 사용하여 각각 AND 또는 OR 논리를 지정하고, 결합자를 중첩하여 필터 그룹을 만들 수 있습니다. 만약 결합자가
참조 아래에 직접 지정되지 않으면 가 가정됩니다.
예시:
Condition: StartsWith
Value: "Sandbox" 아래에 직접 지정되지 않으면 YAML 인라인 필터의 제한 사항 InlineFilters에서 설명된 일부 일치 표현식 기능은
InlineFilters에서 사용할 수 없습니다. 이러한 제한 사항에는 다음이 포함됩니다:스케줄된 규칙이나 정책이 아니라 규칙에만 사용할 수 있습니다. 다음 일치 표현식 유형은
InlineFilters:설정은
키와Enrichment 일치 표현식DeepKey 일치 표현식 유형은InlineFilters키 지정자— 오직KeyPath설정은
만 사용할 수 있습니다.와매개변수 를 받습니다. 기대한 위치에 키가 없거나 해당 위치의 값이Any 일치 표현식 유형은InlineFilters키 지정자모든와내에서 하나 이상의 일치 표현식을 나열하세요.KeyPathOnlyOne
조건CertainInlineFilters특정값은내에서 사용할 수 없습니다. 지원되지 않는 조건은 다음과 같습니다:ExistsDoesNotExistIsNullIsNotNullIsIPAddressIsIPv4AddressIsIPv6AddressAnyElementAllElements
OnlyOneElement
NoElement InlineFilters YAML 필터는 InlineFiltersCLI 워크플로우에서 인라인 필터 생성 방법 Python 또는 Simple Detection으로 생성된 규칙에 대해 CLI 워크플로우에서 인라인 필터를 생성하려면 탐지의 YAML 파일에.
필터로 실패한 단위 테스트 작업
다음을 위해 Panther 관리 를 포함하고 하나 이상의
일치 표현식을 포함하세요.
필터가 있는 규칙에서는 현재 단위 테스트를 추가하거나 편집할 수 없습니다. 단위 테스트가 통과하지 않으면 규칙을 저장할 수 없습니다.
단위 테스트가 실패하면 다음 단계를 수행하세요:
Panther 관리 규칙을 복제하세요.
복제된 규칙에 필터를 추가하세요.
복제된 규칙의 단위 테스트를 편집하여 통과하도록 만드세요.
인라인 필터 참조
같음 / 같지 않음
사용 지침
지원되는 필드 유형
필드가 필터의 값과 일치/불일치할 때 이벤트가 일치합니다
string, ip, bool, int
username는 “root”입니다
지원되는 필드 유형
is / is not (대소문자 구분 없음)
필드가 대소문자 구분 없이 필터의 값과 일치/불일치할 때 이벤트가 일치합니다
username는(대소문자 구분 없이) “rOot”입니다
is in / is not in
필드가 필터의 값 목록 중 항목과 일치/불일치할 때 이벤트가 일치합니다
string, int
비어 있음
username는 [ “root”, “admin” ]에 있습니다
port는 [25, 553]에 있습니다
필드 값이 지정되지 않았을 때 이벤트가 일치합니다. 이 연산자는 데이터의 부재만을 테스트합니다
비어 있지 않음
string, int 배열, ip 배열, float 배열, bool 배열, string 배열
port는 [25, 553]에 있습니다
errors_list가 비어 있음
포함
필드 값이 지정되어 있을 때 이벤트가 일치합니다. 이 연산자는 데이터의 존재만을 테스트합니다
errors_list가 비어 있지 않음
지정된 필드 값이 제공된 값을 포함할 때 이벤트가 일치합니다
이벤트 값이 문자열이나 문자열 배열인 경우 부분 일치가 지원됩니다
string, int 배열, ip 배열, bool 배열, string 배열
domain이 “.google.com”을 포함함
p_any_port가 22를 포함함
errors_list가 비어 있지 않음
contains (대소문자 구분 없음)
지정된 필드 값이 대소문자 구분 없이 제공된 값을 포함할 때 이벤트가 일치합니다
포함하지 않음
string, string 배열
errors_list가 비어 있지 않음
지정된 필드 값이 제공된 값을 포함할 때 이벤트가 일치합니다
username은 대소문자 구분 없이 "bad"를 포함함 p_any_email는 대소문자 구분 없이 "bad"를 포함함
지정된 필드 값이 제공된 값을 포함하지 않을 때 이벤트가 일치합니다
domain이 “.google.com”을 포함하지 않음
p_any_port가 22를 포함하지 않음
errors_list가 비어 있지 않음
contains (대소문자 구분 없음)
does not contain (대소문자 구분 없음)
지정된 필드 값이 대소문자 구분 없이 제공된 값을 포함하지 않을 때 이벤트가 일치합니다
domain이 대소문자 구분 없이 “.gOogle.com”을 포함하지 않음
p_any_email는 "good"을 포함하지 않음
string
starts with
지정된 필드 값이 제공된 값으로 시작할 때 이벤트가 일치합니다
role이 “admin_”로 시작함
string
starts with (대소문자 구분 없음)
지정된 필드 값이 대소문자 구분 없이 제공된 값으로 시작할 때 이벤트가 일치합니다
role은 대소문자 구분 없이 “aDmin_”로 시작함
string
does not start with
지정된 필드 값이 제공된 값으로 시작하지 않을 때 이벤트가 일치합니다
role이 "admin_"로 시작하지 않음
string
does not start with (대소문자 구분 없음)
지정된 필드 값이 대소문자 구분 없이 제공된 값으로 시작하지 않을 때 이벤트가 일치합니다
role은 대소문자 구분 없이 "aDmin_"로 시작하지 않음
string
ends with
지정된 필드 값이 제공된 값으로 끝날 때 이벤트가 일치합니다
domain이 “.cc”로 끝남
string
ends with (대소문자 구분 없음)
지정된 필드 값이 대소문자 구분 없이 제공된 값으로 끝날 때 이벤트가 일치합니다
domain은 대소문자 구분 없이 “.Cc”로 끝남
string
does not end with
지정된 필드 값이 제공된 값으로 끝나지 않을 때 이벤트가 일치합니다
domain이 ".com"으로 끝나지 않음
string
does not end with (대소문자 구분 없음)
지정된 필드 값이 대소문자 구분 없이 제공된 값으로 끝나지 않을 때 이벤트가 일치합니다
domain이 ".coM"으로 끝나지 않음
is greater than
필드 값이 필터에 제공된 값보다 클 때 이벤트가 일치합니다
int, float
port > 1023
is greater than
is less than
필드 값이 필터에 제공된 값보다 작을 때 이벤트가 일치합니다
port < 1024
int
is greater than or equal
필드 값이 필터에 제공된 값보다 크거나 같을 때 이벤트가 일치합니다
count ≥ 1
int
is less than or equal
필드 값이 필터에 제공된 값보다 작거나 같을 때 이벤트가 일치합니다
count ≤ 100
IP
is private
지정된 IP 주소가 사설 IP일 때 이벤트가 일치합니다
dst_ip is_private
IP
is public
지정된 IP 주소가 공용 IP일 때 이벤트가 일치합니다
src_ip is_public
IP
is in CIDR / is not in CIDR
지정된 IP 주소가 제공된 CIDR(클래스 없는 도메인 간 라우팅) 블록 내에 있는지/없는지 여부에 따라 이벤트가 일치합니다
src_ip in_cidr 192.168.0.0/16
does not contain IP in CIDR
지정된 IP 배열에 제공된 CIDR 블록 내의 어떤 IP 주소도 포함되어 있지 않을 때 이벤트가 일치합니다
ip 배열
p_any_ip_address !contains_ip 8.8.0.0/16
p_any_ip_address !contains_ip 1.1.1.1/32
does not contain IP in CIDR
contains IP in CIDR
지정된 IP 배열에 제공된 CIDR 블록 내의 IP 주소가 포함되어 있을 때 이벤트가 일치합니다
p_any_ip_address contains_ip 8.8.0.0/16
string
타입 값들
int
int -2147483648, 2147483647
실수
float
부울
64비트 부동 소수점 숫자 부울 값 / true
타임스탬프 값
배열
cidr
지원되는 값 유형
CIDR
값 유형들입니다, (Value types) 번역 참조하세요: 매치에 사용될 수 있는 값의 유형입니다 (예: IPv4/IPv6 등).
Last updated
Was this helpful?

