の Amazon S3 バケットポリシー CloudTrail - AWS CloudTrail

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

の Amazon S3 バケットポリシー CloudTrail

デフォルトでは、Amazon S3 バケットとオブジェクトはプライベートです。リソース所有者 (バケットを作成した AWS アカウント) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。

Amazon S3 バケットを作成または変更して組織の証跡のログファイルを受け取れるようにするには、バケットポリシーを変更する必要があります。詳細については、「を使用して組織の証跡を作成する AWS CLI」を参照してください。

ログファイルを S3 バケットに配信 CloudTrail するには、 に必要なアクセス許可が必要です。リクエスタ支払いバケットとして設定することはできません。

CloudTrail は、ポリシーに次のフィールドを追加します。

  • 許可された SIDs

  • バケット名

  • のサービスプリンシパル名 CloudTrail

  • バケット名、プレフィックス (指定した場合)、 AWS アカウント ID など、ログファイルが保存されているフォルダの名前

セキュリティのベストプラクティスとして、aws:SourceArn 条件キーを Amazon S3 バケットポリシーに追加します。IAM グローバル条件キーは、 が特定の証跡に対してのみ S3 バケットに CloudTrail 書き込むようにするaws:SourceArnのに役立ちます。の値は常に、バケットを使用してログを保存しているARN証跡 (または証跡 の配列ARNs) の aws:SourceArnです。既存の証跡の S3 バケットポリシーに aws:SourceArn 条件キーを必ず追加してください。

次のポリシーでは CloudTrail 、 がサポートされている からバケットにログファイルを書き込むことを許可します AWS リージョン。置換 DOC-EXAMPLE-BUCKET, [optionalPrefix]/, myAccountID, region および trailName 設定に適した値を指定します。

S3 バケットポリシー

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/[optionalPrefix]/AWSLogs/myAccountID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName" } } } ] }

の詳細については、 AWS リージョン「」を参照してくださいCloudTrail サポートされているリージョン

CloudTrail ログ配信用の既存のバケットの指定

ログファイル配信のストレージ場所として既存の S3 バケットを指定した場合は、 がバケットに書き込むことを許可するポリシー CloudTrail をバケットにアタッチする必要があります。

注記

ベストプラクティスとして、 CloudTrail ログには専用の S3 バケットを使用します。

必要な CloudTrail ポリシーを Amazon S3 バケットに追加するには
  1. で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/

  2. ログファイルを配信 CloudTrail するバケットを選択し、アクセス許可 を選択します。

  3. [編集] を選択します。

  4. S3 bucket policy を [Bucket Policy Editor] ウィンドウにコピーします。イタリック体のプレースホルダーを、バケット、プレフィックス、アカウント番号の名前に置き換えます。証跡の作成時にプレフィックスを指定した場合は、ここに含めます。プレフィックスは、バケットにフォルダのような組織を作成する S3 オブジェクトキーへのオプションの追加です。

    注記

    既存のバケットにすでに 1 つ以上のポリシーがアタッチされている場合は、そのポリシー CloudTrail にアクセスするためのステートメントを追加します。バケットにアクセスするユーザーに適していることを確認するために、作成したアクセス権限のセットを評価します。

他のアカウントからログファイルを受信

複数の AWS アカウントから 1 つの S3 バケット CloudTrail にログファイルを配信するように を設定できます。詳細については、「複数のアカウントからの CloudTrail ログファイルの受信」を参照してください。

組織の証跡のログファイルを保存するために使用する Amazon S3 バケットを作成または更新する

組織の証跡のログファイルを受信するには、Amazon S3 バケットを指定する必要があります。このバケットには、 が組織のログファイルをバケットに入れる CloudTrail ことを許可するポリシーが必要です。

以下は、 という名前の Amazon S3 バケットのポリシーの例です。DOC-EXAMPLE-BUCKET。これは組織の管理アカウントによって所有されます。置換 DOC-EXAMPLE-BUCKET, region, managementAccountID, trailName および o-organizationID 組織の 値を持つ

このバケットには、3 つのステートメントがあります。

  • 最初のステートメントでは CloudTrail 、 が Amazon S3 バケットで Amazon S3 GetBucketAclアクションを呼び出すことができます。

  • 2 番目のステートメントでは、証跡が組織の証跡からそのアカウントの証跡にのみ変更された場合にログに記録することを許可します。

  • 3 番目のステートメントでは、組織証跡をログに記録することが可能になります。

ポリシー例には、Amazon S3 バケットポリシーの aws:SourceArn 条件キーが含まれています。IAM グローバル条件キーは、 が特定の証跡に対してのみ S3 バケットに CloudTrail 書き込むようにするaws:SourceArnのに役立ちます。組織の証跡では、 の値は管理アカウントが所有するaws:SourceArn証跡ARNで、管理アカウント ID を使用する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/AWSLogs/managementAccountID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName" } } }, { "Sid": "AWSCloudTrailOrganizationWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/AWSLogs/o-organizationID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName" } } } ] }

このポリシー例では、メンバーアカウントのユーザーが組織用に作成されたログファイルにアクセスすることを許可していません。デフォルトでは、組織のログファイルは管理アカウントにのみアクセスできます。メンバーアカウントのIAMユーザーに Amazon S3 バケットへの読み取りアクセスを許可する方法については、「」を参照してくださいAWS アカウント間での CloudTrail ログファイルの共有

Amazon S3 バケットポリシーのトラブルシューティング

以下のセクションでは、S3 バケットポリシーをトラブルシューティングする方法について説明します。

一般的な Amazon S3 ポリシー設定のエラー

証跡の作成または更新の一環として新しいバケットを作成すると、 CloudTrail は必要なアクセス許可をバケットにアタッチします。バケットポリシーは、サービスプリンシパル名 を使用します。これにより"cloudtrail.amazonaws.com"、 はすべてのリージョンのログ CloudTrail を配信できます。

CloudTrail がリージョンのログを配信していない場合、バケットに各リージョンIDsの CloudTrail アカウントを指定する古いポリシーがある可能性があります。このポリシーは CloudTrail、指定されたリージョンに対してのみログを配信するアクセス許可を付与します。

ベストプラクティスとして、 CloudTrail サービスプリンシパルのアクセス許可を使用するようにポリシーを更新します。これを行うには、アカウント ID をサービスプリンシパル名 に置き換えARNsます"cloudtrail.amazonaws.com"。これにより、現在のリージョンと新しいリージョンのログを配信する CloudTrail アクセス許可が に付与されます。セキュリティのベストプラクティスとして、Amazon S3 バケットポリシーに aws:SourceArn または aws:SourceAccount 条件キーを追加します。これにより、S3 バケットへの不正なアカウントアクセスを防止できます。既存の証跡がある場合は、必ず 1つまたは複数の条件キーを追加してください。次の例は、推奨されるポリシーの設定を示しています。置換 DOC-EXAMPLE-BUCKET, [optionalPrefix]/, myAccountID, region および trailName 設定に適した値を指定します。

例 サービスプリンシパル名を使用したバケットポリシーの例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/[optionalPrefix]/AWSLogs/myAccountID/*", "Condition": {"StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName" } } } ] }

既存のバケットのプレフィックスを変更する

証跡からログを受け取る S3 バケットのログファイルプレフィックスを追加、変更、または削除しようとすると、次のエラー 「There is a problem with the bucket policy (バケットバケットポリシーに問題があります) 」が表示されることがあります。その場合、バケットポリシーに問題があります。誤ったプレフィックスを使用しているバケットポリシーは、証跡がログをバケットに配信されないようにすることができます。この問題を解決するには、Amazon S3 コンソールを使用してバケットポリシーのプレフィックスを更新し、コンソールを使用して CloudTrail証跡のバケットに同じプレフィックスを指定します。

Amazon S3 バケットのログファイルプレフィックスを更新するには
  1. で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/

  2. プレフィックスを変更するバケットを選択し、[Permissions] (アクセス許可) を選択します。

  3. [編集] を選択します。

  4. バケットポリシーの s3:PutObjectアクションで、Resourceエントリを編集してログファイルを追加、変更、または削除します。prefix/ 必要に応じて。

    "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/AWSLogs/myAccountID/*",
  5. [保存] を選択します。

  6. で CloudTrail コンソールを開きますhttps://console.aws.amazon.com/cloudtrail/

  7. 証跡を選択し、Storage location の場合は鉛筆アイコンをクリックして、バケットの設定を編集します。

  8. S3 バケット の場合は、変更するプレフィックスを持つバケットを選択します。

  9. Log file prefix の場合は、バケットポリシーに入力したプレフィックスに一致するようにプレフィックスを更新します。

  10. [Save] (保存) を選択します。

追加リソース

S3 バケットポリシーの詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットポリシーの使用」を参照してください。