複数のアカウントから CloudTrail ログファイルを受け取る - AWS CloudTrail

複数のアカウントから CloudTrail ログファイルを受け取る

複数の AWS アカウントのログファイルを 1 つの Amazon S3 バケットに配信するように CloudTrail を設定できます。例えば、4 つの AWS アカウントがあって、それぞれのアカウント ID が 111111111111、222222222222、333333333333、444444444444 である場合に、それら 4 つのアカウントのログファイルをすべて、アカウント 111111111111 に属するバケットへと配信するように CloudTrail を設定する必要があるとします。これを行うには、以下の手順を実行します。

  1. 配信先バケットが配置されるアカウント (この例では 111111111111) で、CloudTrail を有効にします。その他のアカウントでは、まだ CloudTrail を有効にしないでください。

    手順については、「証跡の作成」を参照してください。

  2. 配信先バケットのバケットポリシーを更新して、CloudTrail にクロスアカウントのアクセス権限を付与します。

    手順については、「複数のアカウントのバケットポリシーの設定」を参照してください。

  3. その他のアカウント (この例では、222222222222、333333333333、444444444444) で、CloudTrail を有効にします。これらのアカウントについては、ステップ 1 で指定したアカウントに属する同じバケット (この例では 111111111111) を使用するように CloudTrail を設定します。

    手順については、「追加のアカウントで CloudTrail を有効にする」を参照してください。

他のアカウントでコールされたデータイベントのバケット所有者アカウント ID を秘匿化する

従来、CloudTrail データイベントが Amazon S3 データイベント API 発信者の AWS アカウントで有効な場合、CloudTrail はデータイベント内 (PutObject など) で S3 バケット所有者のアカウント ID を表示していました。これは、バケット所有者アカウントで S3 データイベントが有効ではない場合も発生します。

現在、次の両方の条件を満たす場合、CloudTrail は resources ブロックの S3 バケット所有者のアカウント ID を削除します。

  • Amazon S3 バケット所有者とは異なる AWS アカウントからのデータイベントの API コールの場合。

  • API 発信者が発信者アカウントでのみ AccessDenied エラーを受信した場合。

API コールを実行したリソースの所有者は、引き続き完全なイベントを受信します。

次のイベントレコードのスニペットは、期待される動作の一例です。Historic スニペットでは、S3 バケット所有者のアカウント ID 123456789012 が、別のアカウントから API 発信者に表示されます。現在の動作例では、バケット所有者のアカウント ID は表示されません。

# Historic "resources": [ { "type": "AWS::S3::Object", "ARNPrefix": "arn:aws:s3:::test-my-bucket-2/" }, { "accountId": "123456789012", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::test-my-bucket-2" } ]

以下は現在の動作です。

# Current "resources": [ { "type": "AWS::S3::Object", "ARNPrefix": "arn:aws:s3:::test-my-bucket-2/" }, { "accountId": "", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::test-my-bucket-2" } ]