複数のアカウントから CloudTrail ログファイルを受け取る
複数の AWS アカウントのログファイルを 1 つの Amazon S3 バケットに配信するように CloudTrail を設定することができます。例えば、4 つの AWS アカウントがあり、それぞれのアカウント ID が 111111111111、222222222222、333333333333、444444444444 である場合に、それら 4 つのアカウントのログファイルをすべて、アカウント 111111111111 に属するバケットへと配信するように CloudTrail を設定する必要があるとします。これを行うには、以下の手順を実行します。
-
配信先バケットが配置されるアカウント (この例では 111111111111) で、証跡を作成します。他のアカウントについては、まだ証跡を作成しないでください。
手順については、「コンソールでの証跡の作成」を参照してください。
-
配信先バケットのバケットポリシーを更新して、CloudTrail にクロスアカウントのアクセス権限を付与します。
手順については、「複数のアカウントのバケットポリシーの設定」を参照してください。
-
アクティビティをログ記録したい他のアカウント (この例では 222222222222、333333333333、444444444444) で、証跡を作成します。各アカウントで証跡を作成する場合は、ステップ 1 で指定したアカウント (この例では 111111111111) に属する Amazon S3 バケットを指定します。手順については、「追加アカウントでの証跡の作成」を参照してください。
注記
SSE-KMS 暗号化を有効にする場合、KMS キーポリシーは、CloudTrail がキーを使用してログファイルとダイジェストファイルを暗号化し、ユーザーが暗号化されていない形式でログファイルダイジェストファイルまたはダイジェストファイルを読み取れるようにする必要があります。キーポリシーを手動で編集する方法については、CloudTrail の AWS KMS キーポリシーの設定 を参照してください。
他のアカウントでコールされたデータイベントのバケット所有者アカウント 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:::amzn-s3-demo-bucket2/" }, { "accountId": "123456789012", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::amzn-s3-demo-bucket2" } ]
以下は現在の動作です。
# Current "resources": [ { "type": "AWS::S3::Object", "ARNPrefix": "arn:aws:s3:::amzn-s3-demo-bucket2/" }, { "accountId": "", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::amzn-s3-demo-bucket2" } ]