

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 고급 이벤트 선택기를 사용하여 데이터 이벤트 필터링
<a name="filtering-data-events"></a>

이 섹션에서는 고급 이벤트 선택기를 사용하여 데이터 이벤트 로깅을 위한 세분화된 선택기를 생성하는 방법을 설명합니다. 이를 통해 관심 있는 특정 데이터 이벤트만 로깅하여 비용을 제어할 수 있습니다.

예제:
+ `eventName` 필드에 필터를 추가하여 특정 API 직접 호출을 포함하거나 제외할 수 있습니다.
+ `resources.ARN` 필드에 필터를 추가하여 특정 리소스에 대한 로깅을 포함하거나 제외할 수 있습니다. 예를 들어 S3 데이터 이벤트를 로깅하는 경우 추적에 대한 S3 버킷의 로깅을 제외할 수 있습니다.
+ `readOnly` 필드에 필터를 추가하여 쓰기 전용 이벤트 또는 읽기 전용 이벤트만 로깅하도록 선택할 수 있습니다.

다음 표는 데이터 이벤트 필터링에 지원되는 필드를 설명합니다. 각 CloudTrail 이벤트 유형에 지원되는 필드 목록은 *AWS CloudTrail API 참조*의 [AdvancedEventSelector](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedEventSelector.html)를 참조하세요.


| Field | 필수 | 유효한 연산자 | 설명 | 
| --- | --- | --- | --- | 
| **`eventCategory` ** | 예 | `Equals` | 이 필드는 데이터 이벤트를 로깅하도록 `Data`로 설정되어 있습니다. | 
| **`resources.type`** | 예 | `Equals` | 이 필드는 데이터 이벤트를 로깅할 리소스 유형을 선택하는 데 사용됩니다. [데이터 이벤트](logging-data-events-with-cloudtrail.md#logging-data-events) 표에는 가능한 값이 표시됩니다. | 
| **`readOnly`** | 아니요 | `Equals` | `readOnly` 값을 기반으로 데이터 이벤트를 포함하거나 제외하는 데 사용되는 선택적 필드입니다. `true` 값은 읽기 이벤트만 로깅합니다. `false` 값은 쓰기 이벤트만 로깅합니다. 이 필드를 추가하지 않으면 CloudTrail은 읽기 및 쓰기 이벤트를 모두 로깅합니다. | 
| **`eventName`** | 아니요 | `EndsWith`<br />`Equals`<br />`NotEndsWith`<br />`NotEquals`<br />`NotStartsWith`<br />`StartsWith` | `PutBucket` 또는 `GetSnapshotBlock`과 같이 CloudTrail에 로깅된 데이터 이벤트를 포함하거나 제외하도록 필터링하는 데 사용하는 선택적 필드입니다.<br />를 사용하는 경우 각 값을 쉼표로 구분하여 여러 값을 지정할 AWS CLI수 있습니다.<br />콘솔을 사용하는 경우 필터링하려는 각 `eventName`에 대한 조건을 생성하여 여러 값을 지정할 수 있습니다. | 
| **`resources.ARN`** | 아니요 | `EndsWith`<br />`Equals`<br />`NotEndsWith`<br />`NotEquals`<br />`NotStartsWith`<br />`StartsWith` | `resources.ARN`을 제공하여 특정 리소스에 대한 데이터 이벤트를 제외하거나 포함하는 데 사용되는 선택적 필드입니다. `resources.ARN`과 함께 연산자를 사용할 수 있지만, `Equals` 또는 `NotEquals`를 사용하는 경우 값은 사용자가 지정한 `resources.type`에 대해 유효한 리소스 ARN과 정확히 일치해야 합니다. 특정 S3 버킷의 모든 객체에 대한 모든 데이터 이벤트를 로그하려면 `StartsWith` 연산자를 사용하고 버킷 ARN만 일치하는 값으로 포함합니다.<br />를 사용하는 경우 각 값을 쉼표로 구분하여 여러 값을 지정할 AWS CLI수 있습니다.<br />콘솔을 사용하는 경우 필터링하려는 각 `resources.ARN`에 대한 조건을 생성하여 여러 값을 지정할 수 있습니다. | 
| **`eventSource`** | 아니요 | `EndsWith`<br />`Equals`<br />`NotEndsWith`<br />`NotEquals`<br />`NotStartsWith`<br />`StartsWith` | 이를 사용하여 특정 이벤트 소스를 포함하거나 제외할 수 있습니다. `eventSource`는 일반적으로 공백 없이 `.amazonaws.com`이 붙는 서비스 이름의 간단한 형태입니다. 예를 들어 `eventSource`를 `Equals` `ec2.amazonaws.com`으로 설정하면 Amazon EC2 데이터 이벤트만 로깅할 수 있습니다. | 
| **`eventType`** | 아니요 | `EndsWith`<br />`Equals`<br />`NotEndsWith`<br />`NotEquals`<br />`NotStartsWith`<br />`StartsWith` | 포함하거나 제외할 [eventType](cloudtrail-event-reference-record-contents.md#ct-event-type)입니다. 예를 들어 이 필드를 `NotEquals` `AwsServiceEvent`로 설정하면 [AWS 서비스 이벤트](non-api-aws-service-events.md)를 제외할 수 있습니다. | 
| **`sessionCredentialFromConsole`** | 아니요 | `Equals`<br />`NotEquals` |  AWS Management Console 세션에서 시작된 이벤트를 포함하거나 제외합니다. 이 필드는 값이 `true`인 `Equals` 또는 `NotEquals`로 설정할 수 있습니다. | 
| **`userIdentity.arn`** | 아니요 | `EndsWith`<br />`Equals`<br />`NotEndsWith`<br />`NotEquals`<br />`NotStartsWith`<br />`StartsWith` | 특정 IAM ID에서 수행한 작업에 대한 이벤트를 포함하거나 제외합니다. 자세한 내용은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하십시오. | 

CloudTrail 콘솔을 사용하여 데이터 이벤트를 로깅하려면 **데이터 이벤트** 옵션을 선택한 다음, 추적 또는 이벤트 데이터 스토어를 생성하거나 업데이트할 때 관심 있는 **리소스 유형**을 선택합니다. [데이터 이벤트](logging-data-events-with-cloudtrail.md#logging-data-events) 표에는 CloudTrail 콘솔에서 선택할 수 있는 가능한 리소스 유형이 표시됩니다.

![콘솔에서 SNS 주제 리소스 유형 선택.](http://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/images/cloudtrail-data-event-type.png)


를 사용하여 데이터 이벤트를 로깅하려면 `--advanced-event-selector` 파라미터를 AWS CLI구성하여를 `eventCategory`로 `Data` 설정하고 `resources.type` 값을 데이터 이벤트를 로깅하려는 리소스 유형 값과 동일하게 설정합니다. [데이터 이벤트](logging-data-events-with-cloudtrail.md#logging-data-events) 표에는 사용 가능한 리소스 유형이 나열됩니다.

예를 들어 모든 Cognito ID 풀에 대한 데이터 이벤트를 로깅하려는 경우 다음과 같이 `--advanced-event-selectors` 파라미터를 구성해야 합니다.

```
--advanced-event-selectors '[
    {
       "Name": "Log Cognito data events on Identity pools",
       "FieldSelectors": [
         { "Field": "eventCategory", "Equals": ["Data"] },
         { "Field": "resources.type", "Equals": ["AWS::Cognito::IdentityPool"] }
       ]
     }
]'
```

이전 예제에서는 ID 풀의 모든 Cognito 데이터 이벤트를 로깅합니다. 고급 이벤트 선택기를 추가로 세분화하여 `eventName`, `readOnly` 및 `resources.ARN` 필드를 기준으로 필터링하여 특정 관심 이벤트를 로깅하거나 관심 없는 이벤트를 제외할 수 있습니다.

여러 필드를 기반으로 데이터 이벤트를 필터링하도록 고급 이벤트 선택기를 구성할 수 있습니다. 예를 들어, 다음 예제와 같이 모든 Amazon S3 `PutObject` 및 `DeleteObject` API 직접 호출을 로깅하지만 특정 S3 버킷에 대한 이벤트 로깅을 제외하도록 고급 이벤트 선택기를 구성할 수 있습니다. {{amzn-s3-demo-bucket}}을 버킷 이름으로 바꿉니다.

```
--advanced-event-selectors
'[
  {
    "Name": "Log PutObject and DeleteObject events for all but one bucket",
    "FieldSelectors": [
      { "Field": "eventCategory", "Equals": ["Data"] },
      { "Field": "resources.type", "Equals": ["AWS::S3::Object"] },
      { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] },
      { "Field": "resources.ARN", "NotStartsWith": ["arn:aws:s3:::{{amzn-s3-demo-bucket}}/"] }
    ]
  }
]'
```

하나의 필드에 대한 여러 조건을 포함할 수도 있습니다. 여러 조건을 평가하는 방법에 대한 자세한 내용은 [CloudTrail이 필드의 여러 조건을 평가하는 방법](#filtering-data-events-conditions) 섹션을 참조하세요.

고급 이벤트 선택기를 사용하여 관리 이벤트와 데이터 이벤트 모두 로깅할 수 있습니다. 여러 리소스 유형에 대한 데이터 이벤트를 로깅하려면 데이터 이벤트를 로깅하려는 각 리소스 유형에 대한 필드 선택기 문을 추가합니다.

**참고**  
추적은 기본 이벤트 선택기 또는 고급 이벤트 선택기 중 하나를 사용할 수 있습니다(둘 다는 안 됨). 추적에 고급 이벤트 선택기를 적용하면 기존의 기본 이벤트 선택기를 모두 덮어씁니다.  
선택기는 `*` 같은 와일드카드 사용을 지원하지 않습니다. 여러 값을 단일 조건과 일치시키려면 `StartsWith`, `EndsWith`, `NotStartsWith` 또는 `NotEndsWith`를 사용하여 이벤트 필드의 시작 또는 끝을 명시적으로 일치시킬 수 있습니다.

**Topics**
+ [CloudTrail이 필드의 여러 조건을 평가하는 방법](#filtering-data-events-conditions)
+ [AWS CLI 데이터 이벤트 필터링 예제](#filtering-data-events-examples)

## CloudTrail이 필드의 여러 조건을 평가하는 방법
<a name="filtering-data-events-conditions"></a>

고급 이벤트 선택기의 경우 CloudTrail은 다음과 같이 필드의 여러 조건을 평가합니다.
+ DESELECT 연산자는 AND로 연결됩니다. DESELECT 연산자 조건 중 하나라도 충족되면 이벤트가 전달되지 않습니다. 다음은 고급 이벤트 선택기에 유효한 DESELECT 연산자입니다.
  + `NotEndsWith`
  + `NotEquals`
  + `NotStartsWith`
+ SELECT 연산자는 OR로 연결됩니다. 다음은 고급 이벤트 선택기에 유효한 SELECT 연산자입니다.
  + `EndsWith`
  + `Equals`
  + `StartsWith`
+ SELECT 연산자와 DESELECT 연산자의 조합은 위의 규칙을 따르며 두 그룹은 모두 AND로 연결됩니다.

### `resources.ARN` 필드에 대한 여러 조건을 보여주는 예제
<a name="filtering-data-events-conditions-ex"></a>

다음 예제 이벤트 선택기 문은 `AWS::S3::Object` 리소스 유형에 대한 데이터 이벤트를 수집하고 `resources.ARN` 필드에 여러 조건을 적용합니다.

```
{
    "Name": "S3Select",
    "FieldSelectors": [
      {
        "Field": "eventCategory",
        "Equals": [
          "Data"
        ]
      },
      {
        "Field": "resources.type",
        "Equals": [
          "AWS::S3::Object"
        ]
      },
      {
        "Field": "resources.ARN",
        "Equals": [
          "arn:aws:s3:::amzn-s3-demo-bucket/object1"
        ],
        "StartsWith": [
          "arn:aws:s3:::amzn-s3-demo-bucket/"
        ],
        "EndsWith": [
          "object3"
        ],
        "NotStartsWith": [
          "arn:aws:s3:::amzn-s3-demo-bucket/deselect"
        ],
        "NotEndsWith": [
          "object5"
        ],
        "NotEquals": [
          "arn:aws:s3:::amzn-s3-demo-bucket/object6"
        ]
      }
    ]
  }
```

이전 예제에서는 다음과 같은 경우 `AWS::S3::Object` 리소스에 대한 Amazon S3 데이터 이벤트가 전달됩니다.

1. 다음 DESELECT 연산자 조건이 하나도 충족되지 않습니다.
   + `resources.ARN` 필드 `NotStartsWith`: 값 `arn:aws:s3:::amzn-s3-demo-bucket/deselect`
   + `resources.ARN` 필드 `NotEndsWith`: 값 `object5`
   + `resources.ARN` 필드 `NotEquals`: 값 `arn:aws:s3:::amzn-s3-demo-bucket/object6`

1. 다음 SELECT 연산자 조건 중 하나 이상이 충족됩니다.
   + `resources.ARN` 필드 `Equals`: 값 `arn:aws:s3:::amzn-s3-demo-bucket/object1`
   + `resources.ARN` 필드 `StartsWith`: 값 `arn:aws:s3:::amzn-s3-demo-bucket/`
   + `resources.ARN` 필드 `EndsWith`: 값 `object3`

평가 로직을 기반으로 합니다.

1. `amzn-s3-demo-bucket/object1`에 대한 데이터 이벤트가 전달됩니다. `Equals` 연산자 값과 일치하고 `NotStartsWith`, `NotEndsWith` 및 `NotEquals` 연산자의 값과 일치하지 않기 때문입니다.

1. `amzn-s3-demo-bucket/object2`에 대한 데이터 이벤트가 전달됩니다. `StartsWith` 연산자 값과 일치하고 `NotStartsWith`, `NotEndsWith` 및 `NotEquals` 연산자의 값과 일치하지 않기 때문입니다.

1. `amzn-s3-demo-bucket1/object3`에 대한 데이터 이벤트가 전달됩니다. `EndsWith` 연산자와 일치하고 `NotStartsWith`, `NotEndsWith` 및 `NotEquals` 연산자의 값과 일치하지 않기 때문입니다.

1. `arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4`에 대한 데이터 이벤트가 전달되지 않습니다. `StartsWith` 연산자의 조건과 일치하더라도 `NotStartsWith`의 조건과 일치하기 때문입니다.

1. `arn:aws:s3:::amzn-s3-demo-bucket/object5`에 대한 데이터 이벤트가 전달되지 않습니다. `StartsWith` 연산자의 조건과 일치하더라도 `NotEndsWith`의 조건과 일치하기 때문입니다.

1. `arn:aws:s3:::amzn-s3-demo-bucket/object6`에 대한 데이터 이벤트가 전달되지 않습니다. `StartsWith` 연산자의 조건과 일치하더라도 `NotEquals` 연산자의 조건과 일치하기 때문입니다.

## AWS CLI 데이터 이벤트 필터링 예제
<a name="filtering-data-events-examples"></a>

이 섹션에서는 다양한 필드에서 데이터 이벤트를 필터링하는 방법을 보여주는 AWS CLI 예제를 제공합니다. 추가 AWS CLI 예제는 [고급 이벤트 선택기를 사용하여 추적에 대한 데이터 이벤트 로깅](logging-data-events-with-cloudtrail.md#creating-data-event-selectors-advanced) 및 단원을 참조하십시오[를 사용하여 이벤트 데이터 스토어에 대한 데이터 이벤트 로깅 AWS CLI](logging-data-events-with-cloudtrail.md#logging-data-events-CLI-eds-examples).

콘솔을 사용하여 데이터 이벤트를 로깅하는 방법에 대한 자세한 내용은 [를 사용하여 데이터 이벤트 로깅 AWS Management Console](logging-data-events-with-cloudtrail.md#logging-data-events-console) 섹션을 참조하세요.

**Topics**
+ [예제 1: `eventName` 필드 필터링](#filtering-data-events-eventname)
+ [예제 2: `resources.ARN` 및 `userIdentity.arn` 필드 필터링](#filtering-data-events-useridentityarn)
+ [예제 3: Amazon S3 DeleteObjects 이벤트로 삭제된 개별 객체를 제외하기 위해 `resources.type` 및 `eventName` 필드를 필터링](#filtering-data-events-deleteobjects)

### 예제 1: `eventName` 필드 필터링
<a name="filtering-data-events-eventname"></a>

첫 번째 예제에서 범용 버킷에 있는 Amazon S3 객체에 대한 `GetObject`, `PutObject` 및 `DeleteObject` API 직접 호출만 로깅하도록 추적에 대한 `--advanced-event-selectors`가 구성되어 있습니다.

```
aws cloudtrail put-event-selectors \
--trail-name {{trailName}} \
--advanced-event-selectors '[
  {
    "Name": "Log GetObject, PutObject and DeleteObject S3 data events",
    "FieldSelectors": [
      { "Field": "eventCategory", "Equals": ["Data"] },
      { "Field": "resources.type", "Equals": ["AWS::S3::Object"] },
      { "Field": "eventName", "Equals": ["GetObject","PutObject","DeleteObject"] }
    ]
  }
]'
```

다음 예제에서는 EBS 직접 API에 대한 데이터 이벤트를 로깅하지만 `ListChangedBlocks` API 직접 호출을 제외하는 새 이벤트 데이터 저장소를 생성합니다. [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html) 명령을 사용하여 기존 이벤트 데이터 저장소를 업데이트할 수 있습니다.

```
aws cloudtrail create-event-data-store \
--name "{{eventDataStoreName}}"
--advanced-event-selectors '[
    {
        "Name": "Log all EBS Direct API data events except ListChangedBlocks",
        "FieldSelectors": [
            { "Field": "eventCategory", "Equals": ["Data"] },
            { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] },
            { "Field": "eventName", "NotEquals": ["ListChangedBlocks"] }
         ]
    }
]'
```

### 예제 2: `resources.ARN` 및 `userIdentity.arn` 필드 필터링
<a name="filtering-data-events-useridentityarn"></a>

다음 예제는 특정 범용 S3 버킷에 있는 모든 Amazon S3 객체에 대한 모든 데이터 이벤트를 포함하지만 `bucket-scanner-role` `userIdentity`에서 생성된 이벤트는 제외하는 방법을 보여줍니다. `resources.type` 필드의 S3 이벤트 값은 `AWS::S3::Object`입니다. S3 객체와 S3 버킷의 ARN 값이 약간 다르기 때문에 `resources.ARN`에 대해 `StartsWith` 연산자를 추가해야 합니다.

```
aws cloudtrail put-event-selectors \
--trail-name {{trailName}} \
--advanced-event-selectors \
'[
    {
        "Name": "S3EventSelector",
        "FieldSelectors": [
            { "Field": "eventCategory", "Equals": ["Data"] },
            { "Field": "resources.type", "Equals": ["AWS::S3::Object"] },
            { "Field": "resources.ARN", "StartsWith": ["arn:{{partition}}:s3:::{{amzn-s3-demo-bucket}}/"] },
            { "Field": "userIdentity.arn", "NotStartsWith": ["arn:aws:sts::123456789012:assumed-role/bucket-scanner-role"]}
        ]
    }
]'
```

### 예제 3: Amazon S3 DeleteObjects 이벤트로 삭제된 개별 객체를 제외하기 위해 `resources.type` 및 `eventName` 필드를 필터링
<a name="filtering-data-events-deleteobjects"></a>

다음 예제에서는 특정 범용 Amazon S3 버킷의 모든 Amazon S3 객체에 대한 모든 데이터 이벤트를 포함하지만 `DeleteObject` 작업에서 삭제한 개별 객체를 제외하는 방법을 보여줍니다. `resources.type` 필드의 S3 이벤트 값은 `AWS::S3::Object`입니다. 이벤트 이름 값은 `DeleteObject`입니다.

```
aws cloudtrail put-event-selectors \
--trail-name {{trailName}} \
--advanced-event-selectors \

{
    "Name": "Exclude Events for DeleteObject operation",
    "FieldSelectors": [
      {
        "Field": "eventCategory",
        "Equals": [
          "Data"
        ]
      },
      {
        "Field": "resources.type",
        "Equals": [
          "AWS::S3::Object"
        ]
      },
      {
        "Field": "eventName",
        "NotEquals": [
          "DeleteObject"
        ]
      }
    ]
  },
  {
    "Name": "Exclude DeleteObject Events for individual objects deleted by DeleteObjects Operation",
    "FieldSelectors": [
      {
        "Field": "eventCategory",
        "Equals": [
          "Data"
        ]
      },
      {
        "Field": "resources.type",
        "Equals": [
          "AWS::S3::Object"
        ]
      },
      {
        "Field": "eventName",
        "Equals": [
          "DeleteObject"
        ]
      },
      {
        "Field": "eventType",
        "NotEquals": [
          "AwsServiceEvent"
        ]
      }
    ]
  }
] (edited)
```