AWS CloudTrail
ユーザーガイド (Version 1.0)

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

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

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

S3 バケットにログファイルを配信するためには、CloudTrail に必要なアクセス権限がある必要があり、リクエスタ支払い バケットとして設定することはできません。Amazon S3 バケットを CloudTrail コンソールでの証跡の作成あるいは更新の一部として作成するとき、CloudTrail はバケットに必要なアクセス許可を自動的にアタッチします。

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

  • 許可された SID。

  • バケット名。

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

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

次のポリシーは、CloudTrail がサポートされているリージョンからログファイルをバケットに書き込むことを許可します。詳細については、「CloudTrail がサポートされているリージョン」を参照してください。

S3 バケットポリシー

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

CloudTrail Log Delivery の既存のバケットを指定する

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

注記

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

Amazon S3 バケットに必要な CloudTrail ポリシーを追加するには

  1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。

  2. CloudTrail でログファイルを配信するバケットを選択し、[Properties] を選択します。

  3. [Permissions] を選択します。

  4. [Edit Bucket Policy] を選択します。

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

    注記

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

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

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

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

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

以下は、my-organization-bucket という名前の Amazon S3 バケットのポリシーの例です。このバケットは、ID 111111111111 を持つ AWS アカウントにあります。これは、組織の証跡のログ記録を許可する ID o-exampleorgid を持つ組織のマスターアカウントです。また、証跡が組織の証跡からそのアカウントの証跡のみに変更された場合に、111111111111 アカウントのログを記録することもできます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-organization-bucket" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-organization-bucket/AWSLogs/111111111111/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-organization-bucket/AWSLogs/o-exampleorgid/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

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

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

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

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

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

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

次のバケットポリシーにより、CloudTrail は、指定された 9 つのリージョンにのみログを配信できます。

例 アカウント ID を持つバケットポリシー

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20131101", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::903692715234:root", "arn:aws:iam::035351147821:root", "arn:aws:iam::859597730677:root", "arn:aws:iam::814480443879:root", "arn:aws:iam::216624486486:root", "arn:aws:iam::086441151436:root", "arn:aws:iam::388731089494:root", "arn:aws:iam::284668455005:root", "arn:aws:iam::113285607260:root" ]}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket-1" }, { "Sid": "AWSCloudTrailWrite20131101", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::903692715234:root", "arn:aws:iam::035351147821:root", "arn:aws:iam::859597730677:root", "arn:aws:iam::814480443879:root", "arn:aws:iam::216624486486:root", "arn:aws:iam::086441151436:root", "arn:aws:iam::388731089494:root", "arn:aws:iam::284668455005:root", "arn:aws:iam::113285607260:root" ]}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket-1/my-prefix/AWSLogs/123456789012/*", "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} } ] }

このポリシーは、個々の CloudTrail アカウント ID に基づいたアクセス権限を使用します。新しいリージョンの通知を送信するには、そのリージョンの CloudTrail アカウント ID を含むように、ポリシーを手動で更新する必要があります。たとえば、CloudTrail が 米国東部 (オハイオ) リージョン のサポートを追加したので、そのリージョンのアカウント ID ARN "arn:aws:iam::475085895292:root を含むようにポリシーを更新する必要があります。

ベストプラクティスとして、CloudTrail サービスプリンシパルでアクセス権限を使用するようにポリシーを更新します。これを行うには、アカウント ID ARN をサービスプリンシパル名 "cloudtrail.amazonaws.com" に置き換えます。これにより、現在および新しいリージョンのログを配信する CloudTrail のアクセス権限が与えられます。以下に示しているのは、以前のポリシーの最新バージョンです。

例 サービスプリンシパル名を使用したバケットポリシー

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket-1" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket-1/my-prefix/AWSLogs/123456789012/*", "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} } ] }

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

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

S3 バケットのログファイルプレフィックスを更新するには

  1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。

  2. プレフィックスを変更するバケットを選択し、[Properties] を選択します。

  3. [Permissions] を選択します。

  4. [Edit Bucket Policy] を選択します。

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

    "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/prefix/AWSLogs/myAccountID/*",
  6. [Save] を選択します。

  7. https://console.aws.amazon.com/cloudtrail/ にある CloudTrail コンソールを開きます。

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

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

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

  11. [Save] を選択します。

その他のリソース

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