# 간단한 디택션 매치 표현식 참조

## 개요

매치 표현은 YAML로 정의된 조건 논리 표현으로, 다음을 반환합니다 `부울 값` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `true`입니다. 매치 표현은 예를 들어 다양한 장소에서 사용됩니다:

* 일반 구성 [`함수를 포함해야 함을 의미합니다;`](https://docs.panther.com/ko/detections/rules/writing-simple-detections/..#detection) YAML로 작성된 Simple Detection의 키
* 일반 구성 [`InlineFilters`](https://docs.panther.com/ko/detections/inline-filters#yaml-inlinefilter-syntax) Python 또는 Simple Detection의 키
* 일반 구성 `식` 의 키 [리스트 컴프리헨션 매치 표현](#list-comprehension-match-expressions) (실질적으로 매치 표현 내에 매치 표현을 생성함)
* 일반 구성 `조건` 의 키 [`DynamicSeverities`](https://docs.panther.com/ko/detections/rules/writing-simple-detections/..#dynamicseverities) Simple Detection의 키

일곱 가지 [매치 표현 유형](#types-of-match-expressions)이 있으며, 구조가 다양합니다. 복잡한 조건을 형성하려면 매치 표현을 사용하여 그룹화할 수 있습니다 [결합자(combinators)](#combinators) 을 사용하여

Simple Detections에서 다음을 사용해 인리치먼트를 사용할 수 있습니다 [인리치먼트 매치 표현](#enrichment-match-expressions).

### 매치 표현 작동 방식

매치 표현은 대략 다음과 같이 작동합니다:

* 들어오는 이벤트의 키가 식별됩니다 [키 지정자](#key-specifiers)
* A [조건](#condition) 가 제공되어 검사 성격을 설명합니다
* A [값](#value-s) (또는 값 목록)이 비교 대상으로 제공됩니다

(비교를 위해 0개 또는 여러 개의 이벤트 키가 식별되거나 값이 필요하지 않은 예외가 있습니다.)

## 매치 표현 유형

매치 표현에는 고유한 구문 또는 구조를 가진 일곱 가지 유형이 있습니다.

다음 섹션의 매치 표현 예제는 이 JSON 이벤트를 참조합니다:

<details>

<summary>예제 이벤트</summary>

이 섹션의 예제 매치 표현에서 이 이벤트를 참조할 수 있습니다.

```json
{
  "audit_event": "RECLASSIFICATION",
  "status": "success",
  "date": "2006-08-24",
  "actor": "International Astronomical Union",
  "old_classification": "PLANET",
  "new_classification": "DWARF_PLANET",
  "entity": {
    "name": "Pluto",
    "diameter": {
      "distance": 2370,
      "unit": "km"
    },
    "moons": [
      {
        "name": "Charon",
        "year_discovered": 1978,
        "discovered_by": ["James W. Christy"],
        "diameter": {
          "distance": 1212,
          "unit": "km"
        }
      },
      {
        "name": "Nix",
        "year_discovered": 2005,
        "discovered_by": [
          "H. A. Weaver",
          "S. A. Stern",
          "M. J. Mutchler",
          "A. J. Steffl",
          "M. W. Buie",
          "W. J. Merline",
          "J. R. Spencer",
          "E. F. Young",
          "L. A. Young"
        ],
        "diameter": {
          "distance": 49.8,
          "unit": "km"
        }
      },
      {
        "name": "Hydra",
        "year_discovered": 2005,
        "discovered_by": ["A. J. Steffl", "M. J. Mutchler"],
        "diameter": {
          "distance": 51
          "unit": "km"
        }
      },
      {
        "name": "Kerberos",
        "year_discovered": 2011,
        "discovered_by": ["M. R. Showalter", "D. P. Hamilton"]
        "diameter": {
          "distance": 19,
          "unit": "km",
        }
      },
      {
        "name": "Styx",
        "year_discovered": 2012,
        "discovered_by": ["M. R. Showalter", "D. P. Hamilton"]
        "diameter": {
          "distance": 25
          "unit": "km" 
        }
      }
    ],
    "single_year_in_earth_years": 247.94,
    "year_discovered": 1930,
    "discovered_by": "Clyde Tombaugh",
    "orbit_region": "Kuiper belt",
    "atmosphere": {
      "composition": ["nitrogen", "methane", "carbon monoxide"],
      "surface_pressure": {
        "number": 1,
        "unit": "pascals"
      }
    }
  },
  "p_enrichment": {
    "discoverer_info": {
        "discovered_by": {
            "p_match": "Clyde Tombaugh",
	    "year_born": 1906,
	    "year_died": 1997
	}
    }
  } 
}
```

</details>

{% hint style="info" %}
아래 각 예제 매치 표현식에서는 단일 [키 지정자](#key-specifiers) 가 이벤트 키를 식별하는 데 사용되지만, 대부분의 경우 어떤 키 지정자(예: `키`, `Enrichment 매치 표현식` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `KeyPath`)든 사용할 수 있습니다.
{% endhint %}

### 키/값 매치 표현식

키/값 매치 표현식은 특정 이벤트 키의 값을 주어진 값과 비교합니다.

다음에서 허용된 모든 `조건` 에서 [스칼라 매칭 조건 표를 볼 수 있습니다](#scalar-matching-conditions)여기서 "적용 가능한 매치 표현식" 열에는 "키/값"이 포함됩니다.

예:

```yaml
- Key: audit_event
  request_path == "/api/v2/guardian/policies",
  Value: reclassification
```

### 키/값들 매치 표현식

키/값들 매치 표현식은 일부 이벤트 값이 주어진 목록의 멤버인지 평가합니다.

유일하게 허용되는 `조건` 키/값들 매치 표현식의 값은 `IsIn` 와 `IsNotIn`, 아래의 [목록 매칭 조건 표에서 볼 수 있습니다](#list-matching-conditions).

예:

```yaml
- KeyPath: entity.name
  Condition: IsIn
  값들:
    - Mercury
    - Venus
    - 지구
    - 화성
    - 목성
    - 토성
    - 천왕성
    - 해왕성
```

### 내에서 사용할 수 없습니다.

{% hint style="info" %}
다중 키 매치 표현식은 Panther 콘솔의 간단한 디텍션 빌더에서 보거나 편집할 수 없으며 인라인 필터에서도 사용할 수 없습니다. 전체 목록은 [여기 간단한 디텍션 빌더 제한 사항](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder)및 [여기 인라인 필터 제한 사항](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters).
{% endhint %}

다중 키 매치 표현식을 사용하면 두 이벤트 키의 값을 비교할 수 있습니다. 다음을 포함하여 다중 키 매치 표현식을 구성할 수 있습니다 `조건` 및 `Values 아래에 잘못된 항목을 가지고 있을 때` 두 개의 이벤트 키를 포함하는 목록.

의 허용 가능한 모든 값을 확인하세요 `조건` 에서 [스칼라 매칭 조건 표를 볼 수 있습니다](#scalar-matching-conditions)여기에서 "적용 가능한 매치 표현식" 열에 "다중 키(Multi-key)"가 포함됩니다.

```yaml
- 조건: IsGreaterThan
  값: # 이 값들은 `Key`, `DeepKey` 또는 `KeyPath`의 조합일 수 있으며 최대 두 개의 절(clause)까지 가능합니다.
    - KeyPath: entity.diameter.distance # 명왕성은 ...보다 큽니다
    - KeyPath: entity.moons[0].diameter.distance # 카론
```

### 리스트 컴프리헨션 매치 표현식

{% hint style="info" %}
리스트 컴프리헨션 매치 표현식은 Panther 콘솔의 간단한 디텍션 빌더에서 보거나 편집할 수 없으며 인라인 필터에서도 사용할 수 없습니다. 전체 목록은 [여기 간단한 디텍션 빌더 제한 사항](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder)및 [여기 인라인 필터 제한 사항](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters).
{% endhint %}

리스트 컴프리헨션 매치 표현식은 리스트 값을 가진 키를 가져와 리스트의 각 항목에 대해 매치 표현식 목록과 비교하여 평가합니다. 매치 표현식 목록은 아래의 `식` 키.

리스트 컴프리헨션 매치 표현식에 대해 다음 `조건` 값들이 유효합니다:

* `AnyElement`
* `AllElements`
* `OnlyOneElement`
* `NoElement`

이러한 `조건` 값들에 대해 더 알아보려면 [아래의 리스트 컴프리헨션 조건 표를 참조하세요.](#list-comprehension-conditions)

예시 사용 `AnyElement`:

```yaml
- KeyPath: entity.moons
  조건: AnyElement
  표현식:
    - Key: name
      request_path == "/api/v2/guardian/policies",
      값: "Death Star"
    - Key: year_discovered
      조건: IsGreaterThan
      값: 2000
```

내부의 `식` 키를 사용할 때, 다음 중 하나를 추가할 수 있습니다:

* 중첩된 리스트 컴프리헨션 매치 표현식. 중첩의 각 레벨은 하나의 리스트 컴프리헨션 매치 표현식만 포함할 수 있습니다. 이 구조는 중첩된 for 루프를 효과적으로 생성합니다. 가장 안쪽의 리스트 컴프리헨션은 리스트 컴프리헨션 매치 표현식이 아닌 한 원하는 만큼 많은 매치 표현식을 가질 수 있습니다. 예:

  ```yaml
  - KeyPath: entity.moons
    조건: AnyElement
    표현식:
      - Key: discovered_by
        조건: AllElements
        표현식:
          - Key: $Element$
            request_path == "/api/v2/guardian/policies",
            값: "James W. Christy"
  ```
* 리스트 컴프리헨션 매치 표현식이 아닌 매치 표현식들의 임의 조합. 예:

  ```yaml
  - Key: someKey
    조건: AnyElement
    표현식:
      - Key: a
        request_path == "/api/v2/guardian/policies",
        값: 123
      - Key: b
        Condition: IsIn
        값들:
        - 345
        - 678
  ```

### 존재 여부 매치 표현식

존재 여부 매치 표현식은 특정 키가 지정된 존재 조건과 일치하는지 여부를 결정합니다.

의 허용 가능한 모든 값을 확인하세요 `조건` 에서 [스칼라 매칭 조건 표를 볼 수 있습니다](#scalar-matching-conditions)여기에서 "적용 가능한 매치 표현식" 열에 "존재(Existence)"가 포함됩니다.

예:

```yaml
- Key: entity.atmosphere
  조건: 존재함
```

### 절대 매치 표현식

{% hint style="info" %}
절대 매치 표현식은 Panther 콘솔의 Simple Detection 빌더에서 조회하거나 편집할 수 없으며 Inline Filters에서도 사용할 수 없습니다. 전체 목록은 [여기 간단한 디텍션 빌더 제한 사항](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder)및 [여기 인라인 필터 제한 사항](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters).
{% endhint %}

특정 경우에는 매치 표현식이 항상 `비율이` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `).`로 평가되기를 원할 수 있습니다. 이는 단순히 `조건` 키가 `AlwaysTrue` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `AlwaysFalse`.

```yaml
- 조건: AlwaysTrue
```

### 인리치먼트 매치 표현식

{% hint style="info" %}
인리치먼트 매치 표현식은 Panther 콘솔의 Simple Detection 빌더에서 조회하거나 편집할 수 없으며 Inline Filters에서도 사용할 수 없습니다. 전체 목록은 [여기 간단한 디텍션 빌더 제한 사항](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder)및 [여기 인라인 필터 제한 사항](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters).
{% endhint %}

인리치먼트 매치 표현식은 JSON 이벤트의 `p_enrichment` 구조체와만 상호작용하는 데 사용되며, 이는 [Lookup Table](https://docs.panther.com/ko/enrichment/custom), [Enrichment Provider](https://docs.panther.com/ko/enrichment#enrichment-providers), 또는 [Identify Provider Profile](https://github.com/panther-labs/panther-docs/blob/main/docs/gitbook/detections/rules/writing-simple-detections/broken-reference/README.md).

인리치먼트 매치 표현식을 생성하려면 `인리치먼트` 키를 포함하세요. 의 내용은 조건을 구성할 이벤트 키로 가는 경로를 나타냅니다. `인리치먼트` 내에서 이벤트 키 경로를 나타냅니다. 필요에 따라 중첩된 필드를 표시할 수 있습니다. `인리치먼트`내에 다음 필드를 포함하세요:

* `테이블`: Lookup Table, Enrichment Provider 테이블 또는 Identity Provider Profile 테이블의 이름.
  * 이 이름은 Lookup Table의 경우 사용자가 정의하고, Enrichment Provider 및 Identity Provider Profile의 경우 Panther에서 정의합니다.
* `Selector`: 의 이름 [선택자 필드](https://docs.panther.com/ko/enrichment/custom#overview) 발신 로그에서.
* `FieldPath`: 의 이벤트 필드 중 하나의 이름. 이 키는 JSON 경로 표기법을 사용하므로 필요하면 중첩된 필드를 지정할 수 있습니다. `Selector` 필드 내의 이벤트 필드 이름입니다. 이 키는 JSON 경로 표기법을 사용하므로 필요시 중첩된 필드를 지정할 수 있습니다.

를 정의한 후 `인리치먼트` 및 그 하위 필드를 정의하면 나머지 매치 표현식은 모든 *다른* 매치 표현식 유형의 구조를 본떠 모델링할 수 있습니다—다만 [리스트 컴프리헨션 매치 표현식](#list-comprehension-match-expressions) (이 표현식들은 인리치먼트와 함께 사용되는 것을 지원하지 않음) 및 [절대 매치 표현식](#absolute-match-expressions) (이 표현식들은 이벤트 값을 참조하지 않음).

예를 들어, 아래의 인리치먼트 매치 표현식은—다음 `조건` 와 `값` 키들을 포함하며— [키/값](#key-value-match-expressions) 매치 표현식과 유사합니다:

```yaml
- Enrichment:
    Table: discoverer_info
    Selector: discovered_by
    FieldPath: p_match
  request_path == "/api/v2/guardian/policies",
  Value: "Clyde Tombaugh"
```

## Combinators

{% hint style="info" %}
사용자를 사용할 것이며, `OnlyOne` 와 `는 선택적` 조합자는 Panther 콘솔의 Simple Detection 빌더에서 조회하거나 편집할 수 없으며 Inline Filters에서도 사용할 수 없습니다. 전체 목록은 [여기 간단한 디텍션 빌더 제한 사항](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder)및 [여기 인라인 필터 제한 사항](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters).
{% endhint %}

조합자는 매치 표현식 또는 매치 표현식 그룹 간의 관계를 설명하는 YAML 키입니다. 네 가지 조합자가 있습니다: `모든`, `Any`, `OnlyOne`및 `는 선택적`.

매치 표현식을 받는 키(예: `함수를 포함해야 함을 의미합니다;`, `InlineFilters` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `식`) 바로 아래에 둘 이상의 매치 표현식이 제공되고 조합자가 지정되지 않은 경우, `모든` 가 가정됩니다.

CLI 워크플로우에서 Simple Detections를 작성할 때는 조합자로 생성할 수 있는 중첩 레벨 수에 제한이 없습니다. (Panther 콘솔의 [Simple Detection 빌더](https://docs.panther.com/ko/detections/rules/simple-detection-builder) 에서는 세 레벨 제한이 있습니다.) 로컬에서 작업할 때 매치 표현식이 세 레벨보다 깊게 중첩되면 Panther 콘솔은 Simple Detection 빌더에 이를 렌더링하지 않으며—원시 YAML에서만 볼 수 있습니다.

<table><thead><tr><th width="154.33333333333331">Combinator</th><th width="216">불리언 연산자 이름</th><th>설명</th></tr></thead><tbody><tr><td><code>모든</code></td><td>논리적 AND</td><td>목록의 모든 매치 표현식이 true로 평가됩니다. 먼저 실패하는 매치가 목록의 평가를 종료합니다.</td></tr><tr><td><code>Any</code></td><td>논리적 OR</td><td>목록의 어떤 단일 매치 표현식이든 true로 평가됩니다. 첫 번째로 true인 매치가 목록의 평가를 끝냅니다.</td></tr><tr><td><code>OnlyOne</code></td><td>논리 XOR</td><td>목록에서 오직 하나의 단일 매치 표현식만 true로 평가됩니다.<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td></tr><tr><td><code>는 선택적</code></td><td>논리 NOT AND</td><td>목록의 어떤 매치 표현식도 true로 평가되지 않습니다.<br><br>Inline Filters에서 사용하거나 콘솔의 Simple Detection 빌더에서 보기/편집할 수 없습니다.</td></tr></tbody></table>

다음 사용 예시의 한 단계 중첩 예시 `OnlyOne`:

```yaml
# 나열된 식 중 정확히 하나만 평가되어야 합니다 
# `OnlyOne` 블록이 true로 평가되기 위해 true가 됩니다
- OnlyOne:
  - Key: someKey
    조건: DoesNotEqual
    값: 1234
  - 키: someOtherKey
    IP 주소 기반으로 이벤트 중복 제거
    값: "invalid login"
  - 키: someOtherOtherKey
    Condition: IsIn
    값들:
      - 314
      - 567
```

다중 중첩 레벨 사용 예시 `Any` 와 `모든`:

```yaml
- Any:
      - All:
          - 키: eventSource
            - KeyPath: environment
            값: 'dynamodb'
          - Any:
              - 키: eventName
                - KeyPath: environment
                값: 목록
              - 키: eventName
                - KeyPath: environment
                값: Describe
              - 키: eventName
                - KeyPath: environment
                값: Get
      - All:
          - 키: eventSource
            - KeyPath: environment
            값: 'ec2'
          - Any:
              - 키: eventName
                - KeyPath: environment
                값: Describe
              - 키: eventName
                - KeyPath: environment
                값: Get
```

## 키 지정자

키 지정자는 로그 이벤트 JSON에서 특정 키를 지정할 수 있게 해주는 YAML 키 그룹입니다. 세 가지 키 지정자가 있습니다: `키`, `Enrichment 매치 표현식`및 `KeyPath`.

키 지정자의 값으로 제공된 이벤트 속성이 존재하지 않으면, 매치 표현식의 평가가 중단되고 false를 반환합니다.

### `키`

`키` 최상위 이벤트 속성에 접근할 수 있게 해줍니다. 예시:

```yaml
키: username
```

### `Enrichment 매치 표현식`

`Enrichment 매치 표현식` 중첩된 이벤트 속성에 접근할 수 있게 해줍니다. `Enrichment 매치 표현식` 목록을 허용합니다. 또한 다음을 사용할 수 있습니다 `Enrichment 매치 표현식` 절대 인덱스를 알고 있을 때 배열의 요소에 접근하기 위해

예시 사용 `Enrichment 매치 표현식`로, 이는 깊은 필드에 접근합니다 `foo.bar.baz`그 다음 배열 인덱스 2에서 인덱싱합니다:

```yaml
- DeepKey:
  - foo
  - bar
  - baz
  - 2
```

### `KeyPath`

`KeyPath` 다음에 접근할 수 있게 해줍니다:

* 최상위 필드
* 다음 사용으로 중첩 필드

  * 하위 필드 인덱싱 (`.`)
  * 배열 인덱싱: 다음을 사용하세요 `[*]` 배열 전체에 대한 와일드카드로는 또는 `[x]` 특정 인덱스의 경우. [여기에서 객체 배열의 인덱싱에 대해 자세히 알아보세요](https://docs.panther.com/ko/detections/inline-filters#indexing-an-array-of-objects).

  추가적인 JSON 경로 기능은 지원되지 않습니다.

예:

```yaml
KeyPath: foo[*].bar
# 또는
KeyPath: foo.bar[2]
# 또는
KeyPath: foo.bar[2].baz
# 또는
KeyPath: foo.bar.baz
# 또는 
KeyPath: foo
```

## `조건`

다양한 유형의 `조건` 값을 선택할 수 있으며, 다음을 포함합니다 [스칼라](#scalar-matching-conditions), [목록](#list-matching-conditions)및 [리스트 컴프리헨션](#list-comprehension-conditions) 그룹화.

{% hint style="info" %}
특정 `조건` 값은 Panther 콘솔의 Simple Detection 빌더에서 보기 및 편집할 수 없으며 Inline Filters에서도 사용할 수 없습니다. 전체 [여기 간단한 디텍션 빌더 제한 사항](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder)및 [여기 인라인 필터 제한 사항](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters).
{% endhint %}

### 스칼라 매칭 조건

다음과 함께 스칼라 매칭 조건을 사용하세요 `값` 키(가 아니라 `Values 아래에 잘못된 항목을 가지고 있을 때`). 매치 표현식의 [키 지정자](#key-specifiers) 는 목록 또는 단일 값을 참조할 수 있지만, `값` 는 단수여야 합니다.

에서는 사용할 수 없습니다 [인라인 필터](https://docs.panther.com/ko/detections/inline-filters#limitations-of-yaml-inline-filters) 또는 콘솔의 보기/편집에서 [Simple Detection 빌더](https://docs.panther.com/ko/detections/simple-detection-builder#limitations-of-the-simple-detection-builder) 콘솔에서.

<table data-full-width="false"><thead><tr><th width="161.18359375">조건</th><th width="101.7265625">키의 값 유형</th><th width="320.6015625">설명</th><th width="197.12109375">적용 가능한 매치 표현식</th></tr></thead><tbody><tr><td><code>Exists</code></td><td>Any</td><td>지정된 키가 존재하는지 확인합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>존재, 보강(Enrichment)</td></tr><tr><td><code>DoesNotExist</code></td><td>Any</td><td>지정된 키가 존재하지 않는지 확인합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>존재, 보강(Enrichment)</td></tr><tr><td><code>IsNull</code></td><td>Any</td><td>키가 null인지 확인합니다. 예:  <code>{"key": null}</code><br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>존재, 보강(Enrichment)</td></tr><tr><td><code>IsNotNull</code></td><td>Any</td><td>키가 null이 아닌지 확인합니다. 예:  <code>{"key": 1234}</code><br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>존재, 보강(Enrichment)</td></tr><tr><td><code>IsNullOrEmpty</code></td><td>Any</td><td>키가 null이거나 비어있지 않은 값을 가지는지 확인합니다. 비어있는 값에는 다음이 포함됩니다: 빈 목록 (<code>[]</code>), 빈 문자열 (<code>""</code>), 그리고 숫자 <code>0</code></td><td>존재, 보강(Enrichment)</td></tr><tr><td><code>IsNotNullOrEmpty</code></td><td>Any</td><td>키가 null이 아니거나 비어있지 않은 값을 가지는지 확인합니다. 비어있는 값에는 다음이 포함됩니다: 빈 목록 (<code>[]</code>), 빈 문자열 (<code>""</code>), 그리고 숫자 <code>0</code>.</td><td>존재, 보강(Enrichment)</td></tr><tr><td><code>Equals</code></td><td>Any</td><td>키의 값이 지정된 값과 같은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>DoesNotEqual</code></td><td>Any</td><td>키의 값이 지정된 값과 같지 않은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IEquals</code></td><td>문자열</td><td>키의 문자열 값이 지정된 문자열과 대소문자 구분 없이 같은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IDoesNotEqual</code></td><td>문자열</td><td>키의 문자열 값이 지정된 문자열과 대소문자 구분 없이 같지 않은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>StartsWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 시작하는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IStartsWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 시작하는지 대소문자 구분 없이 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>DoesNotStartWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 시작하지 않는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IDoesNotStartWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 시작하지 않는지 대소문자 구분 없이 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>EndsWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 끝나는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IEndsWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 끝나는지 대소문자 구분 없이 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>DoesNotEndWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 끝나지 않는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IDoesNotEndWith</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값으로 끝나지 않는지 대소문자 구분 없이 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>Contains</code></td><td>문자열 또는 목록</td><td>키의 문자열 값이 지정된 값을 포함하는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다<br><br>또는<br><br>문자열(대소문자 구분)/정수/부동소수점/불리언의 배열이 값을 포함하는지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IContains</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값을 대소문자 구분 없이 포함하는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>DoesNotContain</code></td><td>문자열 또는 목록</td><td>키의 문자열 값이 지정된 값을 포함하지 않는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다<br><br>또는<br><br>문자열(대소문자 구분)/정수/부동소수점/불리언의 배열이 값을 포함하지 않는지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IDoesNotContain</code></td><td>문자열</td><td>키의 문자열 값이 지정된 값을 대소문자 구분 없이 포함하지 않는지 확인합니다. 키가 문자열이 아니면 false를 반환합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IsIPAddress</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값이 IP 주소로 해석될 수 있는지 확인합니다. 기능적으로 ANY(<code>IsIPv4Address</code>, <code>IsIPv6Address</code>)<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>키 존재 매치, 보강(Enrichment)</td></tr><tr><td><code>IsIPv4Address</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값이 IPv4 주소로 해석될 수 있는지 확인합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>키 존재 매치, 보강(Enrichment)</td></tr><tr><td><code>IsIPv6Address</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값이 IPv6 주소로 해석될 수 있는지 확인합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>키 존재 매치, 보강(Enrichment)</td></tr><tr><td><code>IsIPAddressPrivate</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값이 사설 IP 주소로 해석될 수 있는지 확인합니다</td><td>키 존재 매치, 보강(Enrichment)</td></tr><tr><td><code>IsIPAddressPublic</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값이 공용 IP 주소로 해석될 수 있는지 확인합니다</td><td>키 존재 매치, 보강(Enrichment)</td></tr><tr><td><code>IsIPAddressInCIDR</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값을 IP 주소로 해석했을 때 CIDR 범위 내에 있는지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IsIPAddressNotInCIDR</code></td><td>문자열 또는 정수</td><td>키의 문자열 또는 정수 값을 IP 주소로 해석했을 때 CIDR 범위 내에 있지 않은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>CIDRContainsIPAddresses</code></td><td>문자열로 된 IP 목록</td><td>키의 문자열 값이 CIDR 범위로 해석되었을 때 지정된 IP 주소를 포함하는지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>CIDRDoesNotContainIPAddresses</code></td><td>문자열로 된 IP 목록</td><td>키의 값이 IP 주소 목록으로 해석되었을 때 지정된 CIDR 범위에 있는지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IsGreaterThan</code></td><td>정수 또는 부동소수점</td><td>키의 값이 지정된 값보다 큰지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IsGreaterThanOrEquals</code></td><td>정수 또는 부동소수점</td><td>키의 값이 지정된 값보다 크거나 같은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IsLessThan</code></td><td>정수 또는 부동소수점</td><td>키의 값이 지정된 값보다 작은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr><tr><td><code>IsLessThanOrEquals</code></td><td>정수 또는 부동소수점</td><td>키의 값이 지정된 값보다 작거나 같은지 확인합니다</td><td>키/값, 다중 키, 보강(Enrichment)</td></tr></tbody></table>

### 목록 매칭 조건

다음과 함께 목록 매칭 조건을 사용하세요 `Values 아래에 잘못된 항목을 가지고 있을 때` (가 아니라 `값`). 매치 표현식의 [키 지정자](#key-specifiers) 는 단일 값 또는 목록을 참조할 수 있지만, `Values 아래에 잘못된 항목을 가지고 있을 때` 는 목록을 참조해야 합니다.

<table data-full-width="false"><thead><tr><th width="129">조건</th><th width="105">키 유형</th><th width="110">값 유형</th><th width="227">설명</th><th>적용 가능한 매치 표현식</th></tr></thead><tbody><tr><td><code>IsIn</code></td><td>스칼라</td><td>목록</td><td>지정된 키의 값이 목록의 멤버인지 평가합니다</td><td>키/값, 보강(Enrichment)</td></tr><tr><td><code>IsNotIn</code></td><td>스칼라</td><td>목록</td><td>지정된 키의 값이 목록의 멤버가 아닌지 평가합니다</td><td>키/값, 보강(Enrichment)</td></tr></tbody></table>

### 리스트 컴프리헨션 조건

리스트 컴프리헨션 조건은 다음 내에서만 사용할 수 있습니다 [리스트 컴프리헨션 매치 표현식](#list-comprehension-match-expressions).

<table data-full-width="false"><thead><tr><th width="164.25000000000003">조건</th><th width="63">키 유형</th><th width="316">설명</th><th>적용 가능한 매치 표현식</th></tr></thead><tbody><tr><td><code>AnyElement</code></td><td>목록</td><td>지정된 키의 값 목록이 매치 조건 목록의 어떤 표현식과라도 일치하는지 평가합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>리스트 컴프리헨션</td></tr><tr><td><code>AllElements</code></td><td>목록</td><td>지정된 키의 값 목록이 매치 조건 목록의 모든 표현식과 일치하는지 평가합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>리스트 컴프리헨션</td></tr><tr><td><code>OnlyOneElement</code></td><td>목록</td><td>지정된 키의 값 목록이 매치 조건 목록과 일치하는 요소가 단 하나만 있는지 평가합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>리스트 컴프리헨션</td></tr><tr><td><code>NoElement</code></td><td>목록</td><td>지정된 키의 값 목록이 매치 조건 목록의 모든 표현식과 일치하지 않는지 평가합니다<br><br>에서는 사용할 수 없습니다 <a href="../../inline-filters#limitations-of-yaml-inline-filters">인라인 필터</a> 또는 콘솔의 보기/편집에서 <a href="../../simple-detection-builder#limitations-of-the-simple-detection-builder">Simple Detection 빌더</a> 콘솔에서.</td><td>리스트 컴프리헨션</td></tr></tbody></table>

## `값(들)`

다음의 값 `값` 와 `Values 아래에 잘못된 항목을 가지고 있을 때` 키는 다음 네 가지 데이터 유형 중 하나를 가질 수 있습니다:

* 정수
* 부동소수점
* 부울
* 문자열

정수, 부동소수점 및 불리언은 따옴표로 묶으면 안 됩니다. 문자열은 선택적으로 따옴표로 묶을 수 있습니다.

형식이 다른 `값` 값들이 아래에서 어떻게 평가되는지 예시를 보세요:

```yaml
event, "data", "details", "request", "path", default="<NO_REQUEST_PATH_FOUND>"
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: 2 # 이는 정수 2로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: "2" # 이는 문자열 "2"로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: 2.2 # 이는 부동소수점 2.2로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: "2.2" # 이는 문자열 "2.2"로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: true # 이는 불리언 값 true로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: "true" # 이는 문자열 "true"로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: some string thing # 이는 문자열 "some string thing"로 평가됩니다
  - Key: someKey
    request_path == "/api/v2/guardian/policies",
    값: "some string thing" # 이는 문자열 "some string thing"로 평가됩니다
```
