다음을 사용하여 CloudTrail Lake 통합을 생성, 업데이트 및 관리합니다. AWS CLI - AWS CloudTrail

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

다음을 사용하여 CloudTrail Lake 통합을 생성, 업데이트 및 관리합니다. AWS CLI

를 사용하여 CloudTrail Lake AWS CLI 통합을 생성, 업데이트 및 관리할 수 있습니다. 를 사용할 때는 명령이 AWS CLI프로필에 AWS 리전 맞게 구성된 상태에서 실행된다는 점을 기억하십시오. 다른 리전에서 명령을 실행하려는 경우 프로필의 기본 리전을 변경하거나 명령에 --region 파라미터를 사용합니다.

CloudTrail Lake 통합에 사용할 수 있는 명령어

CloudTrail Lake에서 통합을 생성, 업데이트 및 관리하는 명령은 다음과 같습니다.

CloudTrail Lake 이벤트 데이터 스토어에 사용할 수 있는 명령 목록은 을 참조하십시오. 이벤트 데이터 저장소에 사용할 수 있는 명령

CloudTrail Lake 쿼리에 사용할 수 있는 명령 목록은 을 참조하십시오 CloudTrail Lake 쿼리에 사용할 수 있는 명령어.

를 사용하여 외부에서 이벤트를 기록할 수 AWS 있는 통합을 생성하십시오. AWS CLI

AWS 에서는 네 개의 명령 (기준을 충족하는 이벤트 데이터 저장소가 이미 있는 경우 세 개) 으로 외부의 이벤트를 기록하는 통합을 생성합니다. AWS CLI통합 대상으로 사용하는 이벤트 데이터 스토어는 단일 지역 및 단일 계정용이어야 합니다. 여러 지역일 수 없고, 조직의 이벤트를 기록할 수 없으며 AWS Organizations, 활동 이벤트만 포함할 수 있습니다. 콘솔의 이벤트 유형은 Events from integrations(통합 이벤트)여야 합니다. API에 eventCategory 값은 ActivityAuditLog여야 합니다. 통합에 대한 자세한 내용은 외부 이벤트 소스와의 통합 생성 AWS 섹션을 참조하세요.

  1. 통합에 사용할 수 있는 하나 이상의 이벤트 데이터 스토어가 아직 없는 경우 create-event-data-store를 실행하여 이벤트 데이터 스토어를 생성합니다.

    다음 예제 AWS CLI 명령은 외부의 AWS이벤트를 기록하는 이벤트 데이터 저장소를 만듭니다. 활동 이벤트의 경우 eventCategory 필드 선택기 값은 ActivityAuditLog입니다. 이벤트 데이터 스토어의 보존 기간은 90일로 설정됩니다. 기본적으로 이벤트 데이터 저장소는 모든 지역의 이벤트를 수집하지만, 이 저장소는 이벤트가 아닌AWS 이벤트를 수집하는 것이므로 --no-multi-region-enabled 옵션을 추가하여 단일 지역으로 설정하십시오. 종료 보호는 기본적으로 활성화되고, 이벤트 데이터 스토어는 조직 내 계정에 대한 이벤트를 수집하지 않습니다.

    aws cloudtrail create-event-data-store \ --name my-event-data-store \ --no-multi-region-enabled \ --retention-period 90 \ --advanced-event-selectors '[ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ActivityAuditLog"] } ] } ]'

    다음은 응답의 예입니다.

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "AdvancedEventSelectors": [ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ActivityAuditLog" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

    다음 단계로 이동하여 채널을 생성하려면 이벤트 데이터 스토어 ID(ARN의 접미사 또는 이전 응답 예제의 EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE)가 필요합니다.

  2. create-channel명령을 실행하여 파트너 또는 소스 애플리케이션이 이벤트 데이터 저장소에 이벤트를 전송할 수 있는 채널을 생성합니다 CloudTrail.

    채널에는 다음과 같은 구성 요소가 있습니다.

    소스

    CloudTrail 이 정보를 사용하여 사용자 대신 이벤트 데이터를 보내는 CloudTrail 파트너를 결정합니다. 소스는 필수이고, 모든 유효한AWS 외 이벤트에 대해 Custom, 또는 파트너 이벤트 소스의 이름일 수 있습니다. 소스당 최대 하나의 채널을 사용할 수 있습니다.

    사용 가능한 파트너의 Source 값에 대한 자세한 내용은 통합 파트너에 대한 추가 정보의 내용을 참조하십시오.

    수집 상태

    채널 상태는 채널 소스에서 마지막 이벤트를 수신한 시간을 보여줍니다.

    대상

    목적지는 채널로부터 이벤트를 수신하는 CloudTrail Lake 이벤트 데이터 스토어입니다. 채널의 대상 이벤트 데이터 스토어를 변경할 수 있습니다.

    소스로부터 이벤트 수신을 중단하려면 채널을 삭제합니다.

    이 명령을 실행하려면 하나 이상의 대상 이벤트 데이터 스토어의 ID가 필요합니다. 유효한 대상 유형은 EVENT_DATA_STORE입니다. 수집된 이벤트를 둘 이상의 이벤트 데이터 스토어로 보낼 수 있습니다. 다음 예제 명령은 --destinations 파라미터의 Location 속성에서 해당 ID로 표시되는 두 이벤트 데이터 스토어에 이벤트를 보내는 채널을 생성합니다. --destinations, --name--source 파라미터가 필요합니다. 파트너의 이벤트를 수집하려면 CloudTrail 파트너의 이름을 의 --source 값으로 지정하십시오. 외부 AWS애플리케이션에서 이벤트를 수집하려면 의 Custom 값으로 지정하십시오. --source

    aws cloudtrail create-channel \ --region us-east-1 \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]' --name my-partner-channel \ --source $partnerSourceName \

    create-channel 명령에 대한 응답에서 새 채널의 ARN을 복사합니다. 다음 단계에서 put-resource-policyput-audit-events 명령을 실행하려면 ARN이 필요합니다.

  3. put-resource-policy명령을 실행하여 채널에 리소스 정책을 연결합니다. 리소스 정책은 지정된 보안 주체가 리소스에 대해 수행할 수 있는 작업 및 관련 조건을 제어하는 JSON 정책 문서입니다. 채널의 리소스 정책에서 보안 주체로 정의된 계정은 PutAuditEvents API를 호출하여 이벤트를 전달할 수 있습니다.

    참고

    채널에 대한 리소스 정책을 생성하지 않으면 채널 소유자만 채널에서 PutAuditEvents API를 호출할 수 있습니다.

    정책에 필요한 정보는 통합 유형에 따라 결정됩니다.

    • 디렉션 통합의 경우 정책에 파트너의 AWS 계정 ID가 포함되어야 하고 파트너가 제공한 고유한 외부 ID를 입력해야 합니다. CloudTrail CloudTrail CloudTrail 콘솔을 사용하여 통합을 생성할 때 파트너의 AWS 계정 ID를 리소스 정책에 자동으로 추가합니다. 정책에 필요한 AWS 계정 번호를 얻는 방법을 알아보려면 파트너 설명서를 참조하십시오.

    • 솔루션 통합의 경우 AWS 계정 ID를 하나 이상 보안 주체로 지정해야 하며, 대리인이 혼동하지 않도록 외부 ID를 선택적으로 입력할 수 있습니다.

    다음은 리소스 정책에 대한 요구 사항입니다.

    • 정책에 정의된 리소스 ARN은 정책이 연결된 채널 ARN과 일치해야 합니다.

    • 정책에는 클라우드트레일-데이터라는 단 하나의 작업만 포함되어 있습니다. PutAuditEvents

    • 정책에는 하나 이상의 정책 문이 포함됩니다. 정책은 최대 20개의 문을 보유할 수 있습니다.

    • 각 문에는 하나 이상의 보안 주체가 포함됩니다. 문에는 최대 50개의 보안 주체가 있을 수 있습니다.

    aws cloudtrail put-resource-policy \ --resource-arn "channelARN" \ --policy "{ "Version": "2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b", "Condition": { "StringEquals": { "cloudtrail:ExternalId": "UniqueExternalIDFromPartner" } } } ] }"

    리소스 정책에 대한 자세한 내용은 AWS CloudTrail 리소스 기반 정책 예제 단원을 참조하십시오.

  4. PutAuditEventsAPI를 실행하여 활동 이벤트를 인제스트하십시오. CloudTrail CloudTrail 추가하려는 이벤트의 페이로드가 필요합니다. 이벤트 페이로드를 수집하기 전에 이벤트 페이로드에 민감하거나 개인 식별이 가능한 정보가 없는지 확인하십시오. CloudTrail PutAuditEvents API는 cloudtrail 엔드포인트가 아니라 cloudtrail-data CLI 엔드포인트를 사용합니다.

    다음 예제에서는 put-audit-events CLI 명령을 사용하는 방법을 보여줍니다. --audit-events--channel-arn 파라미터가 필요합니다. 리소스 정책에 외부 ID가 정의된 경우--external-id 파라미터가 필요합니다. 이전 단계에서 생성한 채널의 ARN이 필요합니다. 의 값은 이벤트 객체의 JSON --audit-events 배열입니다. --audit-events이벤트의 필수 ID, 이벤트의 필수 페이로드 (값)EventData, 수집 후 이벤트의 무결성을 검증하는 데 도움이 되는 선택적 체크섬이 포함됩니다. CloudTrail

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

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

    aws cloudtrail-data put-audit-events \ --channel-arn arn:aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --external-id UniqueExternalIDFromPartner \ --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 --external-id $UniqueExternalIDFromPartner --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\":\"12.34.56.78\",\"recipientAccountId\":\"152089810396\"}", "id": "1" } ] }

명령을 실행하여 통합이 제대로 작동하고 소스에서 이벤트를 제대로 수집하고 CloudTrail 있는지 확인할 수 있습니다. get-channel 의 출력에는 이벤트를 CloudTrail 수신한 가장 최근의 타임스탬프가 get-channel 표시됩니다.

aws cloudtrail get-channel --channel arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

(선택 사항) 체크섬 값 계산

EventDataChecksumPutAuditEvents요청에서 값으로 지정하는 체크섬은 체크섬과 일치하는 이벤트를 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

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

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

체크섬 값은 PutAuditEvents 요청에서 EventDataChecksum의 값이 됩니다. 체크섬이 제공된 이벤트의 체크섬과 일치하지 않으면 오류가 발생하여 이벤트를 CloudTrail 거부합니다. InvalidChecksum

다음으로 채널을 업데이트하십시오. AWS CLI

채널 이름 또는 대상 이벤트 데이터 스토어를 업데이트하려면 update-channel 명령을 실행합니다. --channel 파라미터가 필요합니다. 채널의 소스를 업데이트할 수 없습니다. 다음은 예입니다.

aws cloudtrail update-channel \ --channel aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --name "new-channel-name" \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]'

채널을 삭제하려면 채널을 삭제하세요. AWS CLI

파트너 또는 기타 외부 AWS활동 이벤트 인제스트를 중지하려면 delete-channel 명령어를 실행하여 채널을 삭제하세요. 삭제하려는 채널의 ARN 또는 채널 ID(ARN 접미사)가 필요합니다. 다음은 예입니다.

aws cloudtrail delete-channel \ --channel EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE