# 인라인 필터로 디택션 수정하기

## 개요

기존 [룰을 쉽게 조정할 수 있습니다](/ko/detections/rules.md), 다음을 포함하여 [Panther에서 관리하는 룰](/ko/detections/panther-managed.md), Inline Filters를 추가하여 가능합니다. Inline Filter는 디택션 로직이 실행되기 전에 통과해야 하는 조건입니다. Inline Filters는 예약된 룰이나 정책이 아닌 룰에서만 사용할 수 있습니다.

다음에서 [Panther Console에서,](#creating-filters-in-the-panther-console) 노코드 빌더를 사용하여 Inline Filters를 생성할 수 있습니다. 다음에서는 [CLI 워크플로](#creating-filters-in-the-cli-workflow), 다음을 추가하여 Inline Filters를 생성할 수 있습니다 `InlineFilters` YAML 키입니다.

필터의 일반적인 사용 사례는 허용 목록 또는 거부 목록을 추가하는 것입니다.

### Inline Filters의 작동 방식

필터 문은 디택션의 로직보다 먼저 평가됩니다. 필터는 `true` 를 반환해야 하며(즉, 이벤트와 일치해야 함), 그래야 디택션 로직 자체가 실행됩니다. 즉, Inline Filters는 포함 필터입니다.

Console과 CLI 워크플로 모두에서 필터는 `AND` 또는 `OR` 로직을 사용해 그룹화할 수 있습니다. Inline Filters는 [드모르간의 법칙](https://en.wikipedia.org/wiki/De_Morgan's_laws)을 따릅니다. 이 기술 자료 문서에서 로직 예제를 확인하세요: [Panther 디택션 Inline Filters 문제 해결 가이드](https://help.panther.com/articles/9840276836-why-is-my-panther-inline-filter-not-working-as-expected).

이벤트에 필터가 평가하는 필드가 없으면 필터는 통과됩니다. 필터가 평가하는 필드의 값이 `none`인 경우, 필터는 `false` 긍정 비교 연산자 또는 적용되지 않는 비교 연산자에서는 를 반환하고, `true` 역비교 연산자에서는 를 반환합니다.

Console에서는 새 룰 생성 중에는 필터를 사용할 수 없습니다. CLI 워크플로에서는 `InlineFilters` 를 새 룰에 포함할 수 있습니다.

{% hint style="info" %}
CLI 워크플로와 Console을 모두 사용하여 디택션 콘텐츠를 관리하는 것은 전반적으로 권장되지 않지만, 이는 *은* Console에서 CLI 워크플로와 함께 Inline Filters를 사용하는 것이 가능합니다. Console에서 생성된 필터는 CLI 워크플로에서 디택션 콘텐츠를 업데이트할 때 덮어쓰이거나 삭제되지 않습니다.
{% endhint %}

## Panther Console에서 필터 만들기

룰의 편집 페이지에서 또는 해당 룰에 의해 트리거된 알러트 내에서 룰에 필터를 추가할 수 있습니다.

{% tabs %}
{% tab title="룰에서" %}
**룰의 편집 페이지에서 필터 추가**

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **Detections**.
2. 디택션 목록에서 룰의 이름을 클릭하여 세부 정보 페이지를 봅니다.
3. 다음 내부의 **Detect** 섹션에서, **다음만 포함하도록 필터링:** 의 아래 및 **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."](/files/cbacf052ce59466064bcafc3ec1632261e08a38b)
4. 각 필터(단독 또는 그룹 내)를 대해 로직을 정의합니다:
   1. 다음을 클릭하세요. **키**, 그런 다음 조건이 적용될 이벤트 키를 선택합니다.
      * 중첩된 필드를 나타내려면 JSON 경로 표기법을 사용합니다.
      * 일부 옵션에는 `[*]`가 포함될 수 있으며, 이는 해당 키가 객체 배열임을 나타냅니다. [아래에서 객체 배열 인덱싱에 대해 자세히 알아보기](#indexing-an-array-of-objects).
   2. 다음을 클릭하세요. **조건**, 그런 다음 조건을 선택합니다.
   3. 선택한 **조건** 에 입력 값이 필요하면(예: `은` 또는 `포함`), 값 또는 값 목록을 제공합니다.
      * 값(s) 필드가 배열을 받는 경우, 아래를 참조하세요. [아래의 배열 값 입력 지침](#inputting-array-values).
5. 각 필터와 필터 그룹 사이에서 올바른 결합자(즉, **및** 또는 **또는**)가 선택되었는지 확인하세요.
6. 추가된 필터(s)와 함께 통과하는지 확인하기 위해 단위 테스트를 실행하세요.
7. 페이지 오른쪽 상단 모서리에서 **배포** 를 클릭하여 변경 사항을 저장하세요.
   {% endtab %}

{% tab title="알러트 이벤트에서" %}
**알러트 이벤트에서 필터 추가**

관련된 알러트에서 나온 이벤트에서 룰에 인라인 필터를 직접 추가할 수 있습니다. 이는 잘못된 양성 알러트를 받았고, 향후 유사한 이벤트와 일치하지 않도록 트리거된 디택션을 조정하고 싶을 때 특히 유용합니다.

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **알러트**.
2. 조정하려는 관련 룰의 알러트를 찾은 다음, 해당 이름을 클릭하세요.
3. 알러트의 세부 정보 페이지에서 아래로 스크롤하여 **이벤트** 섹션.
4. 이벤트 JSON에서 새 필터의 대상이 될 표시 위에 마우스를 올리고 대상 아이콘을 클릭하세요.\
   ![While viewing an alert, the event JSON is shown. One event field is hovered over, and three icons have appeared. The third is a target, and the tooltip reads "Add to Rule Filter"](/files/8d5012ea8724f598ebb065013126b12c09884505)
   * 다음 **필터 추가** 슬라이드아웃 패널이 창 오른쪽에 열립니다.
5. 다음에서 **필터 추가** 슬라이드아웃 패널에서 새 필터는 다음과 같이 미리 채워집니다:
   * **키**: 이벤트 JSON에서 대상 아이콘을 클릭한 필드를 기본값으로 사용합니다.
   * **조건**: 기본값은 **이 아닙니다**, 향후 이와 같은 이벤트에 대한 알러트를 받고 싶다고 가정합니다. *표시되지 않지만* 와 비슷한 이벤트에 대한 알러트를 향후 받기를 원하기 때문입니다.
   * **문자열**: 이벤트 JSON에서 선택한 필드의 값이 기본값으로 사용됩니다.\
     ![The Ad Filter panel is shown. It displays a Target, Filters section (with a new filter pre-populated with "actionName is not SIGN\_IN", a read-only Rule Function section, and a Unit Test section. at the bottom there are buttons for Close, Discard Changes, and Save & Run Test](/files/52dbab403a299a0943afb2c9b1af83a3286b302a)
6. 필터에 원하는 변경 사항을 적용하세요. 미리 채워진 모든 필드(즉, **키**, **조건** 및 **문자열**)는 편집할 수 있습니다.
7. 다음을 찾으세요. **단위 테스트** 패널 하단 근처의 섹션입니다. 룰이 [Panther 관리형](/ko/detections/panther-managed.md) 이 아니고 현재 이벤트를 사용해 룰에 대한 새 단위 테스트를 만들고 싶다면, 다음으로 표시된 체크박스를 클릭하세요. **현재 알러트 이벤트를 단위 테스트로 추가**.
   * 라고 표시된 토글은 **디택션은 예시 이벤트를 기반으로 트리거되어야 합니다** 편집할 수 있습니다. 기본값은 **아니요**입니다. 향후 이와 같은 알러트를 방지하려는 경우가 많기 때문입니다.\
     ![The Unit Test section of the panel is shown. A checkbox labeled "Add the current alert event as a unit test" is checked. There is a toggle below with the label "The detection should trigger based on the example event:"](/files/e132107a1d8ef111a8dd80dfdf94b3ec4169a515)
   * 룰이 [Panther 관리형](/ko/detections/panther-managed.md)인 경우, 이 옵션은 회색으로 비활성화됩니다.\
     ![The Unit Test section is greyed out. The informational tooltip says "Unit Test is created and managed by the Panther team."](/files/c6f8586868d1849c6a0a4152c79f68313ac847fb)
8. 다음을 클릭하세요. **저장 및 테스트 실행**.
   * 이렇게 하면 대상 룰의 모든 단위 테스트가 실행됩니다. 7단계에서 새 단위 테스트를 만들었다면 그것도 함께 실행됩니다.
   * 새 필터(s)를 저장하려면 룰의 모든 단위 테스트가 통과해야 합니다. 단위 테스트 중 하나라도 실패하면:
     * 룰이 [Panther 관리형](/ko/detections/panther-managed.md)의 오른쪽에서, 다음을 클릭합니다 **디택션 보기** 를 선택하여 룰의 세부 정보 페이지로 이동해 단위 테스트를 편집하세요. সেখানে에서 **Update** 를 클릭하여 룰에 대한 변경 사항을 저장할 수 있습니다.\
       ![An error message reads "There were errors trying to save the rule with additional filter(s). Changes have not been saved to your detection." A button reads "View Detection"](/files/f0c2652951d3d58c6bd3b5d0d4ef504a84da00a6)
     * 룰이 [Panther 관리형](/ko/detections/panther-managed.md)인 경우, 단위 테스트는 읽기 전용이므로 실패한 테스트를 수정하여 통과하게 만들 수 없습니다. 필터를 성공적으로 추가하려면 대신 다음을 따르세요. [필터를 사용한 실패한 단위 테스트 처리](#working-with-failed-unit-tests-with-filters) 워크플로
       {% endtab %}
       {% endtabs %}

### 배열 값 입력

선택한 룰 필터 연산자가 값 필드에 배열이 필요로 하는 경우(예: `다음 중 하나` 연산자), 값 필드를 클릭하면 나타나는 모달에서 배열 값을 입력하게 됩니다.

배열에 값을 추가하려면:

1. 필터에 사용할 **키** 및 **조건** 을 선택한 후 값 필드를 클릭하세요.

   <figure><img src="/files/844e3897492dc73d45cb5281e9c380e6379dbd11" alt="In the Filters to only include: section, Field, Operator and List inputs are shown. Field has an &#x22;EventId&#x22; value, Operator has an &#x22;is in&#x22; value, and (empty list) doesn&#x27;t yet have a value, but the field is circled."><figcaption></figcaption></figure>

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

       <img src="/files/c01bd4794ae52a796ab63614e4718a934df3d2e1" alt="The array input modal says &#x22;Enter a list of strings...&#x22; at the top. It has an input textfield, and a checkbox that says &#x22;Values entered above are comma-delimited,&#x22; which is checked. Three values have been entered: User 3, User 2, and User 1." data-size="original">
   * 입력이 쉼표로 구분되어 있지 않으면 **위에 입력된 값들은 쉼표로 구분됩니다** 선택하지 않은 상태로 두세요.
     * 이 필드를 선택하지 않은 상태에서는 쉼표를 포함하는 값을 한 번에 하나씩 추가할 수 있습니다. 예를 들어 "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](/files/0872d9f9fa4856657a61a6b46263f81fdf0d2386)
3. 다음을 클릭하세요. **추가**.
4. 배열에 모든 값이 추가될 때까지 필요한 만큼 2-3단계를 반복하세요.
5. 다음을 클릭하세요. **적용**.

### 객체 배열 인덱싱

필터 표현식을 만드는 동안, 값이 객체 배열인 이벤트 키가 있으면 해당 키는 배열 인덱싱 기호와 함께 드롭다운 선택기에 표시됩니다 `[*]`, 그리고 객체의 필드도 함께 표시됩니다. 다음을 사용할 수 있습니다 `[*]` 를 사용해 배열 내 모든 객체에서 선택한 필드를 대상으로 하거나, `*` 를 정수로 바꿔 배열의 인덱스를 지정하여 단일 필드를 대상으로 할 수 있습니다.

#### 예시

예를 들어 다음 `resources` 필드를 [`AWS.CloudTrail` 스키마에서 살펴보겠습니다](https://docs.panther.com/ko/detections/rules/pages/2c1da8057c863c39494f4a159ac24e02406365e5#aws.cloudtrail):\
![A "resources" field is shown, with three nested fields: arn, accountId, and type. "resources" and the nested fields are circled.](/files/2c3d3fd618b9521a6ae1bdfe6a34a64c339a49e1)

이 필드는 이벤트 필드 선택기에서 다음과 같이 표시됩니다:

!["Where,"가 앞에 붙은 필드에는 비어 있는 필터 표현식이 표시됩니다. 필드 선택기가 열려 있으며, 다음 필드들이 원으로 표시되어 있습니다: resources\[\*\].accountId, resources\[\*\].arn, resources\[\*\].type.](/files/186ed05b672d6044c8a5fa983ff63f03ee042d65)

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

![필터 표현식에서 키로 "resources\[\*\].type"가 선택되어 있고 조건 선택기가 열려 있습니다. 비어 있음, 비어 있지 않음, 포함, 포함하지 않음의 네 가지 조건이 표시되어 원으로 표시됩니다.](/files/12c76d982604d6ad4316d5e1525a39915de2774d)

예를 들어 아래 필터 표현식(`resources[*].type` `포함` `AWS::IAM::Role`)은 이벤트가 다음 경우 일치함을 의미합니다 *어떤* 의 값이 `type` 에서 `resources` 배열이 `AWS::IAM::Role`.

![필터 칩에 "resources\[\*\].type contains AWS::IAM::Role"라고 표시됩니다](/files/d46396f08d0a57dfd1bee83374d9cafc20c8a202)

그러나 `*` 를 정수로 바꿔 배열의 인덱스를 지정할 수 있으며, 이는 배열 내 단일 객체를 지정합니다. 이 경우 Panther는 해당 인덱스의 중첩 필드 값만 평가합니다.

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

![필터 표현식에서 키 선택기는 "resources\[0\].type"라고 표시되고 조건 드롭다운이 열려 있습니다. 예를 들어 is not, is in, is public 등의 다양한 조건이 표시됩니다.](/files/224e481015031cc39f86d60052e86c4122818d9d)

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

Panther Console에서 노코드 룰 필터를 만드는 것 외에도, 다음과 같이 작성된 룰에 YAML 필터를 만들 수도 있습니다 [간단한 디택션](/ko/detections/rules/writing-simple-detections.md) 또는 [Python 디택션](/ko/detections/rules/python.md).

Console에서 만든 필터와 마찬가지로, YAML 필터는 룰의 디택션 로직보다 먼저 평가됩니다. 필터가 `true`를 반환하면 디택션 로직이 실행됩니다. 필터가 `false`를 반환하면 디택션 평가가 중지되고, 디택션은 `false` 를 완전히 반환합니다.

### YAML `InlineFilter` 구문

YAML 필터는 다음으로 표시됩니다 `InlineFilters` 키. 내부에서 `InlineFilters`, 하나 이상의 일치 표현식을 나열합니다. 다음을 사용할 수 있습니다 `위에 나열된 검색용 로그 유형별 RBAC의 모든` 및 `Any` [결합자](/ko/detections/rules/writing-simple-detections/match-expression.md#combinators) 를 사용하여 각각 AND 또는 OR 논리를 지정하고, 결합자를 중첩하여 필터 그룹을 만들 수 있습니다. 결합자가 바로 아래에 지정되지 않은 경우 `InlineFilters`, `위에 나열된 검색용 로그 유형별 RBAC의 모든` 가 가정됩니다.

다음을 참조하세요 [심플 디택션 일치 표현식 참조](/ko/detections/rules/writing-simple-detections/match-expression.md) 에서 다양한 유형의 일치 표현식을 구성하는 방법을 알아보세요.

예시:

```yaml
InlineFilters: 
  - KeyPath: environment
    Condition: StartsWith
    Value: "Sandbox"
```

### YAML 인라인 필터의 제한 사항

에 설명된 일부 일치 표현식 기능은 [심플 디택션 일치 표현식 참조](/ko/detections/rules/writing-simple-detections/match-expression.md) 에서는 사용할 수 없습니다 `InlineFilters`. 이러한 제한 사항은 다음과 같습니다:

* `InlineFilters` 는 예약된 룰 또는 정책에는 사용할 수 없고, 룰에만 사용할 수 있습니다.
* 다음 [일치 표현식 유형은](/ko/detections/rules/writing-simple-detections/match-expression.md#types-of-match-expressions) 내에서는 사용할 수 없습니다 `InlineFilters`:
  * [다중 키 일치 표현식](/ko/detections/rules/writing-simple-detections/match-expression.md#multi-key-match-expressions)
  * [리스트 컴프리헨션 일치 표현식](/ko/detections/rules/writing-simple-detections/match-expression.md#list-comprehension-match-expressions)
  * [절대 일치 표현식](/ko/detections/rules/writing-simple-detections/match-expression.md#absolute-match-expressions)
  * [Enrichment 일치 표현식](/ko/detections/rules/writing-simple-detections/match-expression.md#enrichment-match-expressions)
* 다음 `키` 및 `DeepKey` [키 지정자](/ko/detections/rules/writing-simple-detections/match-expression.md#key-specifiers) 내에서는 사용할 수 없습니다 `InlineFilters`—오직 `KeyPath` 만 사용할 수 있습니다.
* 다음 `OnlyOne` 및 `None` [결합자](/ko/detections/rules/writing-simple-detections/match-expression.md#combinators) 내에서는 사용할 수 없습니다 `InlineFilters`—오직 `위에 나열된 검색용 로그 유형별 RBAC의 모든` 및 `Any` 만 사용할 수 있습니다.
* 특정 [`조건`](/ko/detections/rules/writing-simple-detections/match-expression.md#condition) 값은 내에서 사용할 수 없습니다 `InlineFilters`. 다음 조건은 지원되지 않습니다:
  * `Exists`
  * `DoestNotExist`
  * `IsNull`
  * `IsNotNull`
  * `IsIPAddress`
  * `IsIPv4Address`
  * `IsIPv6Address`
  * `AnyElement`
  * `AllElements`
  * `OnlyOneElement`
  * `NoElement`

### CLI 워크플로에서 인라인 필터를 만드는 방법

Python 또는 심플 디택션으로 생성된 룰의 CLI 워크플로에서 인라인 필터를 만들려면, 디택션의 YAML 파일에 다음을 포함합니다 `InlineFilters` 키. 내부에서 `InlineFilters`, 하나 이상의 [일치 표현식](/ko/detections/rules/writing-simple-detections/match-expression.md).

## 필터를 사용한 실패한 단위 테스트 처리

\~에 대해 [Panther 관리형](/ko/detections/panther-managed.md) 필터가 있는 룰의 경우, 현재 단위 테스트를 추가하거나 수정할 수 없습니다. 단위 테스트가 통과하지 않으면 룰을 저장할 수 없습니다.

단위 테스트가 실패하면 다음 단계를 따르세요:

1. Panther가 관리하는 룰을 복제합니다.
2. 복제한 룰에 필터를 추가합니다.
3. 복제한 룰의 단위 테스트를 통과하도록 수정합니다.

## 인라인 필터 참조

Console에서 필터를 작성할 때 아래 연산자와 값 유형을 참조하세요.

### 지원되는 Console 연산자

<table data-full-width="false"><thead><tr><th width="138">연산</th><th width="280">사용 지침</th><th width="195">지원되는 필드 유형</th><th>예시</th></tr></thead><tbody><tr><td>같음 / 같지 않음</td><td>필드가 필터의 값과 일치하거나 일치하지 않을 때 이벤트가 매칭됩니다</td><td>string, ip, bool, int</td><td>username is “root”</td></tr><tr><td>is / is not (대소문자 구분 안 함)</td><td>필드가 필터의 값과 대소문자를 구분하지 않고 일치하거나 일치하지 않을 때 이벤트가 매칭됩니다</td><td>string, ip, bool, int</td><td>username is (대소문자 구분 안 함) “rOot”</td></tr><tr><td>is in / is not in</td><td>필드가 필터의 값 목록 중 항목과 일치하거나 일치하지 않을 때 이벤트가 매칭됩니다</td><td>string, int</td><td><p>username is in [ “root”, “admin” ]<br></p><p>port is in [25, 553]</p></td></tr><tr><td>비어 있음</td><td>필드의 값이 지정되지 않았을 때 이벤트가 매칭됩니다. 이 연산자는 데이터의 부재만 검사합니다</td><td>string, int array, ip array, float array, bool array, string array</td><td>errors_list is empty</td></tr><tr><td>비어 있지 않음</td><td>필드의 값이 지정되었을 때 이벤트가 매칭됩니다. 이 연산자는 데이터의 존재만 검사합니다</td><td>string, int array, ip array, float array, bool array, string array</td><td>errors_list is not empty</td></tr><tr><td>포함</td><td><p>지정된 필드의 값에 제공된 값이 포함되어 있을 때 이벤트가 매칭됩니다</p><p>이벤트 값이 문자열 또는 문자열 배열인 경우 부분 일치가 지원됩니다</p></td><td>string, int array, ip array, bool array, string array</td><td><p>domain contains “.google.com”<br></p><p>p_any_port contains 22</p></td></tr><tr><td>contains (대소문자 구분 안 함)</td><td><p>지정된 필드의 값에 제공된 값이 대소문자를 구분하지 않고 포함되어 있을 때 이벤트가 매칭됩니다</p><p>이벤트 값이 문자열 또는 문자열 배열인 경우 부분 일치가 지원됩니다</p></td><td>string, string array</td><td>username contains (대소문자 구분 안 함) "bad"\n\np_any_email contains (대소문자 구분 안 함) "bad"</td></tr><tr><td>포함하지 않음</td><td><p>지정된 필드의 값에 제공된 값이 포함되지 않을 때 이벤트가 매칭됩니다</p><p>이벤트 값이 문자열 또는 문자열 배열인 경우 부분 일치가 지원됩니다</p></td><td>string, int array, ip array, bool array, string array</td><td><p>domain !contains “.google.com”<br></p><p>p_any_port !contains 22</p></td></tr><tr><td>does not contain (대소문자 구분 안 함)</td><td><p>지정된 필드의 값에 제공된 값이 대소문자를 구분하지 않고 포함되지 않을 때 이벤트가 매칭됩니다</p><p>이벤트 값이 문자열 또는 문자열 배열인 경우 부분 일치가 지원됩니다</p></td><td>string, string array</td><td><p>domain !contains (대소문자 구분 안 함) “.gOogle.com”<br></p><p>p_any_email !contains "good"</p></td></tr><tr><td>starts with</td><td>지정된 필드의 값이 제공된 값으로 시작할 때 이벤트가 매칭됩니다</td><td>문자열</td><td>role starts with “admin_”</td></tr><tr><td>starts with (대소문자 구분 안 함)</td><td>지정된 필드의 값이 제공된 값으로 대소문자를 구분하지 않고 시작할 때 이벤트가 매칭됩니다</td><td>문자열</td><td>role starts with (대소문자 구분 안 함) “aDmin_”</td></tr><tr><td>does not start with</td><td>지정된 필드의 값이 제공된 값으로 시작하지 않을 때 이벤트가 매칭됩니다</td><td>문자열</td><td>role does not start with "admin_"</td></tr><tr><td>does not start with (대소문자 구분 안 함)</td><td>지정된 필드의 값이 제공된 값으로 대소문자를 구분하지 않고 시작하지 않을 때 이벤트가 매칭됩니다</td><td>문자열</td><td>role does not start with (대소문자 구분 안 함) "aDmin_"</td></tr><tr><td>ends with</td><td>지정된 필드의 값이 제공된 값으로 끝날 때 이벤트가 매칭됩니다</td><td>문자열</td><td>domain ends with “.cc”</td></tr><tr><td>ends with (대소문자 구분 안 함)</td><td>지정된 필드의 값이 제공된 값으로 대소문자를 구분하지 않고 끝날 때 이벤트가 매칭됩니다</td><td>문자열</td><td>domain ends with (대소문자 구분 안 함) “.Cc”</td></tr><tr><td>does not end with</td><td>지정된 필드의 값이 제공된 값으로 끝나지 않을 때 이벤트가 매칭됩니다</td><td>문자열</td><td>domain does not end with ".com"</td></tr><tr><td>does not end with (대소문자 구분 안 함)</td><td>지정된 필드의 값이 제공된 값으로 대소문자를 구분하지 않고 끝나지 않을 때 이벤트가 매칭됩니다</td><td>문자열</td><td>domain does not end with ".coM"</td></tr><tr><td>보다 큼</td><td>필드의 값이 필터에 제공된 값보다 클 때 이벤트가 매칭됩니다</td><td>int, float</td><td>port > 1023</td></tr><tr><td>보다 작음</td><td>필드의 값이 필터에 제공된 값보다 작을 때 이벤트가 매칭됩니다</td><td>int, float</td><td>port &#x3C; 1024</td></tr><tr><td>보다 크거나 같음</td><td>필드의 값이 필터에 제공된 값보다 크거나 같을 때 이벤트가 매칭됩니다</td><td>int</td><td>count ≥ 1</td></tr><tr><td>보다 작거나 같음</td><td>필드의 값이 필터에 제공된 값보다 작거나 같을 때 이벤트가 매칭됩니다</td><td>int</td><td>count ≤ 100</td></tr><tr><td>is private</td><td>지정된 IP 주소가 사설일 때 이벤트가 매칭됩니다</td><td>IP</td><td>dst_ip is_private</td></tr><tr><td>is public</td><td>지정된 IP 주소가 공용일 때 이벤트가 매칭됩니다</td><td>IP</td><td>src_ip is_public</td></tr><tr><td>is in CIDR / is not in CIDR</td><td>지정된 IP 주소가 제공된 CIDR(Classless Inter-Domain Routing) 블록 안에 있거나/없을 때 이벤트가 매칭됩니다</td><td>IP</td><td>src_ip in_cidr 192.168.0.0/16</td></tr><tr><td>CIDR 내 IP를 포함하지 않음</td><td>지정된 IP 배열에 제공된 CIDR 블록 안의 IP 주소가 하나도 포함되지 않을 때 이벤트가 매칭됩니다</td><td>ip array</td><td><p>p_any_ip_address !contains_ip 8.8.0.0/16<br></p><p>p_any_ip_address !contains_ip 1.1.1.1/32</p></td></tr><tr><td>CIDR 내 IP를 포함함</td><td>지정된 IP 배열에 제공된 CIDR 블록 안의 IP 주소가 포함될 때 이벤트가 매칭됩니다</td><td>ip array</td><td><p>p_any_ip_address contains_ip 8.8.0.0/16<br></p><p>p_any_ip_address contains_ip 1.1.1.1/32</p></td></tr></tbody></table>

### 지원되는 값 유형

<table><thead><tr><th width="153">값 유형</th><th>설명</th></tr></thead><tbody><tr><td><code>문자열</code></td><td>문자열 값</td></tr><tr><td><code>int</code></td><td>범위의 32비트 정수 <code>-2147483648</code>, <code>2147483647</code></td></tr><tr><td><code>float</code></td><td>64비트 부동소수점 숫자</td></tr><tr><td><code>불리언</code></td><td>불리언 값 <code>true</code> / <code>false</code></td></tr><tr><td><code>array</code></td><td>각 요소가 동일한 유형인 JSON 배열</td></tr><tr><td><code>ip</code></td><td>유효한 단일 IPv4 또는 IPv6 주소</td></tr><tr><td><code>CIDR</code></td><td>클래스 없는 인터도메인 라우팅 블록</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.panther.com/ko/detections/rules/inline-filters.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
