AWS Config
開発者ガイド

Amazon S3 バケットへのアクセス許可

デフォルトでは、すべての Amazon S3 バケットとオブジェクトはプライベートです。リソース所有者およびバケットを作成した AWS アカウントのみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、他のリソースとユーザーにアクセス許可を付与することを選択できます。これを行う 1 つの方法として、アクセスポリシーを記述します。

AWS Config で自動的に S3 バケットを作成する場合 (AWS Config コンソールを使用した場合や aws config subscribe コマンドを使用して配信チャネルをセットアップした場合など) またはアカウントに存在する既存の S3 バケットを選択した場合、これらのアクセス許可は S3 バケットに自動的に追加されます。ただし、別のアカウントから既存の S3 バケットを指定した場合は、S3 バケットのアクセス許可が正しいことを確認する必要があります。

IAM ロール使用時に Amazon S3 バケットに必要なアクセス許可

AWS Config では、アカウントの Amazon S3 バケットに設定情報 (履歴ファイルやスナップショット) を送信する場合、AWS Config の設定時に割り当てた IAM ロールを引き受けます。AWS Config では、別のアカウントの Amazon S3 バケットに設定情報を送信する場合、最初に IAM ロールの使用を試行します。ただし、バケットのアクセスポリシーが IAM ロールへの WRITE アクセス許可を付与しない場合、この試行は失敗します。この場合、AWS Config は再度情報を送信しますが、今回は AWS Config サービスプリンシパルとして送信します。配信が正常に実行される前に、アクセスポリシーは WRITE アクセス許可を config.amazonaws.com プリンシパル名に付与する必要があります。 AWS Config は S3 バケットに配信するオブジェクトの所有者になります。Amazon S3 バケットへのアクセスを AWS Config に許可するには、以下のステップ 6 で説明したアクセスポリシーを別のアカウントの Amazon S3 バケットにアタッチする必要があります。

AWS Config が Amazon S3 バケットにログを配信する前に、AWS Config は、そのバケットが存在するかどうか、およびどの AWS リージョンにバケットがあるか確認します。AWS Config は Amazon S3 HeadBucket API を呼び出して、バケットが存在するかどうかの確認と、バケットのリージョンの取得を試みます。場所を確認するときに、バケットを見つけるアクセス許可が付与されていない場合は、AccessDenied エラーが AWS CloudTrail ログに記録されます。ただし、バケットの場所のアクセス許可を付与しない場合、Amazon S3 バケットへのログ配信は成功します。

サービスでリンクされたロール使用時に Amazon S3 バケットに必要なアクセス許可

サービスにリンクされたロールを使用して AWS Config を設定する場合は、以下のステップ 6 で説明したアクセスポリシーを自分のアカウントまたは別のアカウントの Amazon S3 バケットにアタッチして、Amazon S3 バケットへの AWS Config アクセスを付与する必要があります。

Amazon S3 バケットへの AWS Config アクセス許可の付与

自分のアカウントまたは別のアカウントの Amazon S3 バケットにアクセスポリシーを追加するには、以下のステップを実行します。このアクセスポリシーにより、AWS Config は Amazon S3 バケットに設定情報を送信することを許可されます。

  1. S3 バケットがあるアカウントを使用して AWS マネジメントコンソール にサインインします。

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

  3. AWS Config で設定項目の配信に使用するバケットを選択し、[Properties(プロパティ)] を選択します。

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

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

  6. 次のポリシーを [Bucket Policy Editor] ウィンドウ内にコピーします。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSConfigBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": [ "config.amazonaws.com" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::targetBucketName" }, { "Sid": "AWSConfigBucketExistenceCheck", "Effect": "Allow", "Principal": { "Service": [ "config.amazonaws.com" ] }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::targetBucketName" }, { "Sid": " AWSConfigBucketDelivery", "Effect": "Allow", "Principal": { "Service": [ "config.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::targetBucketName/[optional] prefix/AWSLogs/sourceAccountID-WithoutHyphens/Config/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  7. バケットポリシーの以下の値を置き換えます。

    • targetBucketName – AWS Config で設定項目を配信する先の Amazon S3 バケットの名前。

    • [[optional] prefix – オプションで Amazon S3 オブジェクトキーに追加するプレフィックス。バケット内でフォルダのような構成を作成するのに役立ちます。

    • sourceAccountID-WithoutHyphens – AWS Config からターゲットバケットに設定項目を配信するアカウントの ID。

  8. [Save]、[Close] の順に選択します。