인라인 필터로 탐지 수정(베타)

코드를 작성하지 않고 기존 규칙을 수정하기

개요

circle-info

인라인 필터는 Panther 버전 1.54부터 오픈 베타입니다. 버그 리포트나 기능 요청이 있으면 계정 팀에 공유해 주세요.

기존 규칙을(를) 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" } 논리로 그룹화할 수 있습니다. 인라인 필터는 드모르간의 법칙arrow-up-right을 따릅니다. 논리 예시는 이 지식 베이스 문서를 참조하세요: Panther 탐지 인라인 필터 문제 해결 가이드arrow-up-right.

이벤트에 필터가 평가하려는 필드가 포함되어 있지 않으면 필터는 통과합니다. 필터가 평가하는 필드의 값이 없음이면 필터는 true 양의 비교 연산자 또는 적용되지 않는 비교 연산자에서는 부울 값 반대 비교 연산자에서는

콘솔에서는 새 규칙 생성 중에 필터를 사용할 수 없습니다. CLI 워크플로우에서는 새 규칙에 InlineFilters 를 포함할 수 있습니다.

circle-info

탐지 콘텐츠를 CLI 워크플로우와 콘솔을 동시에 사용하여 관리하는 것은 일반적으로 권장되지 않지만, 정의되어 있더라도 콘솔에서 인라인 필터를 CLI 워크플로우와 함께 사용하는 것이 가능합니다. 콘솔에서 생성된 필터는 CLI 워크플로우에서 탐지 콘텐츠를 업데이트할 때 덮어쓰거나 삭제되지 않습니다.

Panther 콘솔에서 필터 생성하기

규칙 편집 페이지 또는 해당 규칙으로 트리거된 알림의 이벤트 내에서 규칙에 필터를 추가할 수 있습니다.

규칙 편집 페이지에서 필터 추가

  1. Panther 콘솔의 왼쪽 탐색 바에서 클릭하십시오 탐지.

  2. 탐지 목록에서 규칙 이름을 클릭하여 해당 규칙의 세부 페이지를 엽니다.

  3. 내에서 탐지 섹션, 아래의 이벤트만 포함하도록 필터: 의 오른쪽에 Where활성화되어 있다면, 클릭하세요 +.

    • 표시되는 메뉴에서 필터 추가 또는 필터 그룹 추가. There is a plus button (+) next to the word "Where." A menu is open below the plus, with options "Add Filter" and "Add Filter Group."

  4. 각 필터(단독 또는 그룹 내)마다 논리를 정의하세요:

    1. 클릭 그런 다음 조건이 적용될 이벤트 키를 선택합니다.

    2. 클릭 조건그런 다음 조건을 선택하세요.

    3. 선택된 조건 이(가) 입력 값(예: 정의되어 있더라도 또는 포함)을 필요로 하는 경우 값 또는 값 목록을 입력하세요.

  5. 를 참조하세요. 또는 또는각 필터와 필터 그룹 사이에 올바른 결합자(AND 또는 OR 중 하나)가 선택되어 있는지 확인하세요.

  6. 추가된 필터로 단위 테스트를 실행하여 통과하는지 확인하세요.

  7. 페이지 오른쪽 상단에서 배포 를 클릭하여 변경사항을 저장하세요.

배열 값 입력

선택한 규칙 필터 연산자가 값 필드에 배열을 요구하는 경우(예: is in 연산자), 값 필드를 클릭하면 팝업되는 모달에서 배열 값을 입력합니다.

배열에 값을 추가하려면:

  1. 필터에 대해 조건 를 선택한 후 값 필드를 클릭하세요.

    In the Filters to only include: section, Field, Operator and List inputs are shown. Field has an "EventId" value, Operator has an "is in" value, and (empty list) doesn't yet have a value, but the field is circled.
    • 이렇게 하면 배열 입력 모달이 열립니다.

  2. 모달에서 입력 필드에 배열 값(들)을 입력하세요.

    • 입력이 쉼표로 구분된 경우, 위에 입력된 값은 쉼표로 구분됩니다 체크박스를 선택하세요.

      • 이 필드가 선택되면 값 필드에 입력된 텍스트는 쉼표 구분자로 나누어 여러 값으로 분리됩니다. 예: "User 1,User 2,User 3"를 입력하면 세 개의 값이 추가됩니다.

        The array input modal says "Enter a list of strings..." at the top. It has an input textfield, and a checkbox that says "Values entered above are comma-delimited," which is checked. Three values have been entered: User 3, User 2, and User 1.

    • 입력이 쉼표로 구분되지 않는 경우 위에 입력된 값은 쉼표로 구분됩니다 선택하지 않은 상태로 두세요.

      • 이 필드가 선택 해제되면 쉼표를 포함한 값을 하나씩 추가할 수 있습니다. 예: "1,000"을 입력하면 하나의 값이 추가됩니다. The array input modal says "Enter a list of strings..." at the top. It has an input textfield, and a checkbox that says "Values entered above are comma-delimited," which is unchecked. One value has been entered: 1,000

  3. 클릭 리디렉트 URL.

  4. 필요에 따라 2-3단계를 반복하여 모든 값을 배열에 추가하세요.

  5. 클릭 적용.

객체 배열 인덱싱

필터 표현식을 만드는 동안 이벤트 키의 값이 객체 배열인 경우 해당 키는 드롭다운 선택기에서 배열 인덱싱 기호 [*]와 함께 객체의 필드들이 표시됩니다. 선택된 필드의 모든 객체를 대상으로 하려면 [*] 를 사용할 수 있으며, 배열을 인덱싱하여 단일 필드를 대상으로 하려면 * 를 정수로 바꿔 사용합니다.

예제

예를 들어, 다음의 resources 필드를 AWS.CloudTrail 업로더는 기존 스키마가 있는지 확인하고 업데이트를 진행하거나 일치하는 스키마 이름이 없으면 새로 생성합니다.: A "resources" field is shown, with three nested fields: arn, accountId, and type. "resources" and the nested fields are circled.

에서 가져온다고 합시다.

이것은 이벤트 필드 선택기에서 다음과 같이 표현됩니다:

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

필터 표현식에서 키로 "resources[*].type"이 선택되어 있고 조건 선택기가 열려 있습니다. 네 가지 조건이 표시되어 있고 강조되어 있습니다: 비어 있음, 비어 있지 않음, 포함, 포함하지 않음.

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

있을 경우

그러나 배열의 단일 객체를 지정하려면 * 를 정수로 바꿔 배열을 인덱싱할 수 있습니다. 이 경우 Panther는 해당 인덱스의 중첩 필드 값만 평가합니다.

표시되는 조건은 선택한 중첩 필드의 데이터 유형에 적용 가능한 조건으로 업데이트됩니다:

필터 표현식에서 키 선택기는 "resources[0].type"을 표시하고 조건 드롭다운이 열려 있습니다. 여러 조건이 표시되어 있습니다(예: is not, is in, is public).

CLI 워크플로우에서 필터 생성하기

Panther 콘솔에서 노코드 규칙 필터를 생성하는 것 외에도, 규칙에 대해 간단한 탐지(Simple Detections) 또는 Python 탐지(Python detections).

로 작성된 YAML 필터를 생성할 수 있습니다. 부울 값콘솔에서 생성된 필터와 마찬가지로 YAML 필터는 규칙의 탐지 로직보다 먼저 평가됩니다. 필터가 true를 반환하면 탐지 로직이 실행됩니다. 필터가 true 를 반환하면 탐지 평가가 중단되고 탐지는

완전히 YAML 구문

InlineFilter InlineFilters YAML 필터는 InlineFilters키로 표시됩니다. 모든내에서 하나 이상의 일치 표현식을 나열하세요. Any 결합자 InlineFilters, 모든 를 사용하여 각각 AND 또는 OR 논리를 지정하고, 결합자를 중첩하여 필터 그룹을 만들 수 있습니다. 만약 결합자가

참조 아래에 직접 지정되지 않으면 가 가정됩니다.

예시:

Condition: StartsWith

Value: "Sandbox" 아래에 직접 지정되지 않으면 YAML 인라인 필터의 제한 사항 InlineFilters에서 설명된 일부 일치 표현식 기능은

  • InlineFilters 에서 사용할 수 없습니다. 이러한 제한 사항에는 다음이 포함됩니다:

  • 스케줄된 규칙이나 정책이 아니라 규칙에만 사용할 수 있습니다. 다음 일치 표현식 유형은 InlineFilters:

  • 설정은 Enrichment 일치 표현식 DeepKey 일치 표현식 유형은 InlineFilters키 지정자 — 오직 KeyPath

  • 설정은 만 사용할 수 있습니다.매개변수 를 받습니다. 기대한 위치에 키가 없거나 해당 위치의 값이 Any 일치 표현식 유형은 InlineFilters키 지정자 모든내에서 하나 이상의 일치 표현식을 나열하세요. KeyPath

  • OnlyOne 조건 Certain InlineFilters특정

    • 값은

    • 내에서 사용할 수 없습니다. 지원되지 않는 조건은 다음과 같습니다:

    • Exists

    • DoesNotExist

    • IsNull

    • IsNotNull

    • IsIPAddress

    • IsIPv4Address

    • IsIPv6Address

    • AnyElement

    • AllElements

OnlyOneElement

NoElement InlineFilters YAML 필터는 InlineFiltersCLI 워크플로우에서 인라인 필터 생성 방법 Python 또는 Simple Detection으로 생성된 규칙에 대해 CLI 워크플로우에서 인라인 필터를 생성하려면 탐지의 YAML 파일에.

필터로 실패한 단위 테스트 작업

다음을 위해 Panther 관리 를 포함하고 하나 이상의

일치 표현식을 포함하세요.

  1. 필터가 있는 규칙에서는 현재 단위 테스트를 추가하거나 편집할 수 없습니다. 단위 테스트가 통과하지 않으면 규칙을 저장할 수 없습니다.

  2. 단위 테스트가 실패하면 다음 단계를 수행하세요:

  3. 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

p_any_ip_address contains_ip 1.1.1.1/32
설명

string

타입 값들

int

int -2147483648, 2147483647

실수

float

부울

64비트 부동 소수점 숫자 부울 값 / true

타임스탬프 값

배열

cidr

지원되는 값 유형

CIDR

값 유형들입니다, (Value types) 번역 참조하세요: 매치에 사용될 수 있는 값의 유형입니다 (예: IPv4/IPv6 등).

Last updated

Was this helpful?