

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

# 콘솔을 사용하여 사용자 지정 통합 생성
<a name="query-event-data-store-integration-custom"></a>

CloudTrail을 사용하면 온프레미스 또는 클라우드에서 호스팅되는 사내 또는 SaaS 애플리케이션, 가상 머신 또는 컨테이너와 같은 하이브리드 환경의 모든 소스에서 사용자 활동 데이터를 로깅 및 저장할 수 있습니다. CloudTrail Lake 콘솔에서 이 절차의 전반부를 수행한 다음 [https://docs.aws.amazon.com/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html](https://docs.aws.amazon.com/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html) API를 호출하여 이벤트를 수집하고, 채널 ARN 및 이벤트 페이로드를 제공합니다. `PutAuditEvents` API를 사용하여 애플리케이션 활동을 CloudTrail로 수집한 후에는 CloudTrail Lake를 사용하여 애플리케이션에서 로깅된 데이터를 검색, 쿼리 및 분석할 수 있습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) CloudTrail 콘솔을 엽니다.

1.  탐색 창의 **Lake**에서 **Integrations**(통합)를 선택합니다.

1. **Add integration**(통합 추가) 페이지에서 채널 이름을 입력합니다. 이름은 3\~128자까지 지정할 수 있습니다. 이름에는 문자, 숫자, 마침표, 밑줄 및 대시만 사용할 수 있습니다.

1. **My custom integration**(내 사용자 지정 통합)을 선택합니다.

1. **Event delivery location**(이벤트 전달 위치)에서 기존 이벤트 데이터 스토어에 동일한 활동 이벤트를 로깅하거나 새 이벤트 데이터 스토어를 생성합니다.

   새 이벤트 데이터 스토어를 생성하려는 경우 이벤트 데이터 스토어의 이름을 입력하고 보존 기간을 일 단위로 지정합니다. **1년 연장 가능 보존 요금** 옵션을 선택하는 경우 최대 3,653일(약 10년), **7년 보존 요금** 옵션을 선택하는 경우 최대 2,557일(약 7년) 동안 이벤트 데이터를 이벤트 데이터 스토어에 보관할 수 있습니다.

   하나 이상의 기존 이벤트 데이터 스토어에 활동 이벤트를 로깅하도록 선택한 경우 목록에서 이벤트 데이터 스토어를 선택합니다. 이벤트 데이터 스토어에는 활동 이벤트만 포함될 수 있습니다. 콘솔의 이벤트 유형은 **Events from integrations**(통합 이벤트)여야 합니다. API에 `eventCategory` 값은 `ActivityAuditLog`여야 합니다.

1. **Resource policy**(리소스 정책)에서 통합 채널의 리소스 정책을 구성합니다. 리소스 정책은 지정된 보안 주체가 리소스에 대해 수행할 수 있는 작업 및 관련 조건을 제어하는 JSON 정책 문서입니다. 리소스 정책에서 보안 주체로 정의된 계정은 `PutAuditEvents` API를 호출하여 채널에 이벤트를 전달할 수 있습니다.
**참고**  
채널에 대한 리소스 정책을 생성하지 않으면 채널 소유자만 채널에서 `PutAuditEvents` API를 호출할 수 있습니다.

   1. (선택 사항) 고유한 외부 ID를 입력하면 추가 보호가 가능합니다. 외부 ID는 혼동된 대리자를 방지하는 계정 ID 또는 임의로 생성된 문자열과 같은 고유한 문자열입니다.
**참고**  
리소스 정책에 외부 ID가 포함된 경우 `PutAuditEvents` API에 대한 모든 호출에 외부 ID가 포함되어야 합니다. 하지만 정책에서 외부 ID를 정의하지 않는 경우에도 여전히 `PutAuditEvents` API를 호출하고 `externalId` 파라미터를 지정할 수 있습니다.

   1. **계정 추가 AWS **를 선택하여 채널의 리소스 정책에 보안 주체로 추가할 각 AWS 계정 ID를 지정합니다.

1. (선택 사항) **Tags**(태그) 영역에서는 최대 50개의 태그 키와 값 쌍을 추가하여 이벤트 데이터 스토어 및 채널에 대한 액세스를 식별, 정렬 및 제어할 수 있습니다. IAM 정책을 사용하여 태그를 기반으로 이벤트 데이터 스토어에 대한 액세스 권한을 부여하는 방법에 대한 자세한 내용은 [예제: 태그를 기반으로 이벤트 데이터 스토어를 생성 또는 삭제하기 위한 액세스 거부](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-eds-tags) 단원을 참조하세요. 에서 태그를 사용하는 방법에 대한 자세한 내용은의 [AWS 리소스 태그 지정](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)을 AWS참조하세요*AWS 일반 참조*.

1. 새 통합을 생성할 준비가 되면 **Add integration**(통합 추가)을 선택합니다. 검토 페이지는 없습니다. CloudTrail이 통합을 생성하지만 사용자 지정 이벤트를 통합하려면 [https://docs.aws.amazon.com/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html](https://docs.aws.amazon.com/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html) 요청에 채널 ARN을 지정해야 합니다.

1. `PutAuditEvents` API를 호출하여 활동 이벤트를 CloudTrail에 수집합니다. `PutAuditEvents` 요청당 최대 100개의 활동 이벤트(또는 최대 1MB)를 추가할 수 있습니다. 이전 단계에서 생성한 채널 ARN, CloudTrail에서 추가하려는 이벤트의 페이로드, 외부 ID(리소스 정책에 지정된 경우)가 필요합니다. CloudTrail로 수집하기 전에 이벤트 페이로드에 민감한 정보나 개인 식별 정보가 없는지 확인하세요. CloudTrail로 수집하는 이벤트는 [CloudTrail Lake 통합 이벤트 스키마](query-integration-event-schema.md)를 따라야 합니다.
**작은 정보**  
[AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)를 사용하여 최신 AWS APIs를 실행하고 있는지 확인합니다.

   다음 예제에서는 **put-audit-events** CLI 명령을 사용하는 방법을 보여줍니다. **--audit-events** 및 **--channel-arn** 파라미터가 필요합니다. 이전 단계에서 생성한 채널의 ARN이 필요합니다. 이 ARN은 통합 세부 정보 페이지에서 복사할 수 있습니다. **--audit-events**의 값은 이벤트 객체의 JSON 배열입니다. `--audit-events`에는 이벤트에서 요구하는 ID, 값이 `EventData`인 이벤트의 필수 페이로드, CloudTrail로 수집된 후 이벤트의 무결성을 검증하는 데 도움이 되는 [체크섬 옵션](#event-data-store-integration-custom-checksum)이 포함됩니다.

   ```
   aws cloudtrail-data put-audit-events \
   --region {{region}} \
   --channel-arn $ChannelArn \
   --audit-events \
   id="{{event_ID}}",eventData='"{{{event_payload}}}"' \
   id="{{event_ID}}",eventData='"{{{event_payload}}}"',eventDataChecksum="{{optional_checksum}}"
   ```

   다음은 두 개의 이벤트 예제가 포함된 명령 예제입니다.

   ```
   aws cloudtrail-data put-audit-events \
   --region us-east-1 \
   --channel-arn arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \
   --audit-events \
   id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ...
   \}"' \
   id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ...
   \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"
   ```

   다음 명령 예제는 `--cli-input-json` 파라미터를 추가하여 이벤트 페이로드의 JSON 파일(`custom-events.json`)을 지정합니다.

   ```
   aws cloudtrail-data put-audit-events \
   --channel-arn $channelArn \
   --cli-input-json file://custom-events.json \
   --region us-east-1
   ```

   다음은 예제 JSON 파일인 `custom-events.json`의 샘플 콘텐츠입니다.

   ```
   {
       "auditEvents": [
         {
           "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\",
           \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\",
           \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\",
           \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\",
           \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"},
           \"additionalEventData\":{\"key\":\"value\"},
           \"sourceIPAddress\":\"{{source_IP_address}}\",\"recipientAccountId\":\"{{recipient_account_ID}}\"}",
           "id": "1"
         }
      ]
   }
   ```

## (선택 사항) 체크섬 값 계산
<a name="event-data-store-integration-custom-checksum"></a>

`PutAuditEvents` 요청에서 `EventDataChecksum`의 값으로 지정하는 체크섬은 CloudTrail이 체크섬과 일치하는 이벤트를 수신하는지 확인하는 데 도움이 되며 이벤트의 무결성을 확인하는 데 도움이 됩니다. 체크섬 값은 다음 명령을 실행하여 계산하는 base64-SHA256 알고리즘입니다.

```
printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\",
        \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\",
        \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\",
        \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\",
        \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"},
        \"additionalEventData\":{\"key\":\"value\"},
        \"sourceIPAddress\":\"{{source_IP_address}}\",
        \"recipientAccountId\":\"{{recipient_account_ID}}\"}",
        "id": "1"}" \
 | openssl dgst -binary -sha256 | base64
```

명령은 체크섬을 반환합니다. 다음은 예입니다.

```
EXAMPLEHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=
```

체크섬 값은 `PutAuditEvents` 요청에서 `EventDataChecksum`의 값이 됩니다. 체크섬이 제공된 이벤트의 체크섬과 일치하지 않는 경우 CloudTrail은 `InvalidChecksum` 오류와 함께 이벤트를 거부합니다.