AWS を使用して外部からのイベントをログに記録する統合を作成する AWS CLI - AWS CloudTrail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS を使用して外部からのイベントをログに記録する統合を作成する AWS CLI

このセクションでは、 を使用して CloudTrail Lake 統合 AWS CLI を作成し、 の外部からイベントをログに記録する方法について説明します AWS。

では AWS CLI、4 つのコマンドで統合を作成します (条件を満たすイベントデータストアが既にある場合は 3 つ)。統合の送信先として使用するイベントデータストアは、1 つのリージョンと 1 つのアカウント用である必要があります。マルチリージョンにすることはできません。また、 の組織のイベントを記録することはできません。また AWS Organizations、アクティビティイベントのみを含めることができます。コンソール内のイベントタイプは、[Events from integrations] (統合からのイベント) にする必要があります。ではAPI、eventCategory値は である必要がありますActivityAuditLog。統合の詳細については、「の外部でイベントソースとの統合を作成する AWS」を参照してください。

  1. 統合に使用可能なイベントデータストアをまだ 1 つも作成していない場合は、create-event-data-store を実行してそれを作成します。

    次の AWS CLI コマンド例では、 の外部からイベントをログに記録するイベントデータストアを作成します AWS。アクティビティイベントの場合、eventCategory フィールドのセレクタ値は ActivityAuditLog です。このイベントデータストアでは、保持期間は 90 日に設定されています。デフォルトでは、イベントデータストアはすべてのリージョンからイベントを収集しますが、これはAWS イベント以外のイベントを収集するため、 --no-multi-region-enabledオプションを追加して 1 つのリージョンに設定します。終了保護はデフォルトで有効化されます。また、このイベントデータストアでは、組織内のアカウントのためのイベント収集は行いません。

    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" }

    次のステップに進み、チャンネルを作成するにはARN、イベントデータストア ID ( EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE のサフィックス、または前のレスポンス例の ) が必要です。

  2. create-channel コマンドを実行して、パートナーまたはソースアプリケーションが のイベントデータストアにイベントを送信できるようにするチャネルを作成します CloudTrail。

    チャネルは、以下のコンポーネントを含みます。

    ソース

    CloudTrail はこの情報を使用して、 CloudTrail ユーザーに代わってイベントデータを送信するパートナーを決定します。ソースは必須で、AWS 以外のすべての有効なイベント用に Custom とするか、パートナーイベントソースの名前を使用するか、どちらかを選びます。ソースごとに最大 1 つのチャネルが許可されます。

    利用可能なパートナーの Source 値については、「統合パートナーに関する追加情報」を参照してください。

    取り込みステータス

    チャネルステータスでは、チャネルソースからの最後のイベントが、いつ受信されたかを知ることができます。

    送信先

    送信先は、チャネルからイベントを受信している CloudTrail Lake イベントデータストアです。チャネルのための送信先イベントデータストアは、変更することが可能です。

    ソースからのイベントの受信を停止するには、対象のチャネルを削除します。

    このコマンドを実行するには、送信先イベントデータストアの ID が少なくとも 1 つ必要です。送信先として有効な型は EVENT_DATA_STORE です。取り込んだイベントは、複数のイベントデータストアに送信することができます。次のコマンド例では、 --destinationsパラメータの Location 属性の で表される 2 つのイベントデータストアIDsにイベントを送信するチャネルを作成します。--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-policyおよび put-audit-events コマンドを実行するARNには、 が必要です。

  3. put-resource-policy コマンドを実行して、リソースポリシーをチャネルにアタッチします。リソースポリシーは、指定されたプリンシパルがリソースに対して実行できるアクションと条件を指定するJSONポリシードキュメントです。チャネルのリソースポリシーでプリンシパルとして定義されたアカウントは、 を呼び出しPutAuditEventsAPIてイベントを配信できます。

    注記

    チャンネルのリソースポリシーを作成しない場合、チャンネル所有者のみがチャンネルPutAuditEventsAPIの を呼び出すことができます。

    ポリシーに必要な情報は、統合タイプによって決まります。

    • 方向統合 CloudTrail の場合、 はパートナーの AWS アカウント を含むポリシーを必要としIDs、 はパートナーから提供された一意の外部 ID を入力する必要があります。 は、 CloudTrail コンソールを使用して統合を作成するときに、パートナーの AWS アカウントIDsをリソースポリシー CloudTrail に自動的に追加します。ポリシーに必要な AWS アカウント番号を取得する方法については、パートナーのドキュメントを参照してください。

    • ソリューション統合では、少なくとも 1 つの AWS アカウント ID をプリンシパルとして指定する必要があります。また、必要に応じて外部 ID を入力して、混乱した代理を防ぐことができます。

    リソースポリシーには、以下の要件があります。

    • ポリシーでARN定義されたリソースは、ポリシーARNがアタッチされているチャネルと一致する必要があります。

    • ポリシーには、cloudtrail-data という 1 つのアクションのみが含まれます。PutAuditEvents

    • ポリシーには、少なくとも 1 つのステートメントを含めます。ポリシーには、最大 20 個のステートメントを記述できます。

    • 各ステートメントには、少なくとも 1 つのプリンシパルを含めます。1 つのステートメントには、最大 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。はcloudtrail-dataCLIエンドポイントではなくエンドポイントPutAuditEventsAPIを使用することに注意してくださいcloudtrail

    次の例は、 put-audit-events CLI コマンドの使用方法を示しています。--audit-events および --channel-arn パラメータが必要です。--external-id パラメータは、リソースポリシーで外部 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"

    次に、2 つのイベントを処理するコマンドの例を示します。

    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" } ] }

get-channel コマンドを実行することで、統合が機能していること、およびソースからイベントを正しく CloudTrail 取り込んでいることを確認できます。の出力には、イベントを CloudTrail受信した最新のタイムスタンプget-channelが表示されます。

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

(オプション) チェックサム値を計算する

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

このコマンドは、 チェックサムを返します。次に例を示します。

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

このチェックサム値が、PutAuditEvents リクエストの EventDataChecksum 値になります。チェックサムが指定されたイベントのチェックサムと一致しない場合、 はInvalidChecksumエラーでイベント CloudTrail を拒否します。