AWS Config 配信チャネルの Amazon S3 バケットのアクセス許可 - AWS Config

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

AWS Config 配信チャネルの Amazon S3 バケットのアクセス許可

重要

このページでは、 AWS Config 配信チャネルの Amazon S3 バケットの設定について説明します。このページは、 AWS Config 設定レコーダーが記録できるAWS::S3::Bucketリソースタイプに関するものではありません。 AWS Config 配信チャネルの詳細については、「配信チャネルの管理」を参照してください。

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

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

注記

オブジェクトはバケットからアクセス許可を継承しません。例えば、バケットを作成してユーザーに書き込みアクセスを許可した場合、そのユーザーから明示的にアクセスが許可されない限り、そのユーザーのオブジェクトにアクセスできません。

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

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

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

注記

Amazon S3 HeadBucket API にアクセス許可を与えるには、以下のステップ 6 で説明するように、s3:ListBucket アクションを Sid AWSConfigBucketExistenceCheck として実行するアクセス許可を指定します。

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

AWS Config サービスにリンクされたロールには、Amazon S3 バケットにオブジェクトを配置するアクセス許可がありません。したがって、サービスにリンクされたロール AWS Config を使用して をセットアップした場合、 AWS Config は代わりに設定項目を AWS Config サービスプリンシパルとして送信します。Amazon S3 バケット AWS Config へのアクセスを許可するには、以下のステップ 6 で説明したアクセスポリシーを、自分のアカウントまたは別のアカウントの Amazon S3 バケットにアタッチする必要があります。

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

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

  1. S3 バケットを持つアカウント AWS Management Console を使用して にサインインします。

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

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

  4. [Permissions] (アクセス許可) を選択します。

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

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

    重要

    Amazon S3 バケット AWS Config へのアクセスを許可する際のセキュリティのベストプラクティスとして、バケットポリシー内のアクセスを AWS:SourceAccount条件で制限することを強くお勧めします。既存のバケットポリシーがこのセキュリティのベストプラクティスに従わない場合は、この保護を含めるようにバケットポリシーを編集することを強くお勧めします。これにより、 AWS Config が想定ユーザーに代わってのみアクセス許可を付与されます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSConfigBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::targetBucketName", "Condition": { "StringEquals": { "AWS:SourceAccount": "sourceAccountID" } } }, { "Sid": "AWSConfigBucketExistenceCheck", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::targetBucketName", "Condition": { "StringEquals": { "AWS:SourceAccount": "sourceAccountID" } } }, { "Sid": "AWSConfigBucketDelivery", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::targetBucketName/[optional] prefix/AWSLogs/sourceAccountID/Config/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "AWS:SourceAccount": "sourceAccountID" } } } ] }
    注記

    AWS Config サービスプリンシパル名 (SPN) の代わりに IAM ロールにアクセス許可を付与する場合は、PutObjectACLアクセス許可不足エラーを避けるために、IAM ロールにクロスアカウントバケットに対するアクセス許可があることを確認してください。 S3 バケットの IAM ロールのポリシー で IAM ロールのポリシーの例を参照してください。

  7. バケットポリシーの以下の値を置き換えます。

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

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

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

  8. SaveClose の順に選択します。

上記の Amazon S3 バケットポリシーの AWS:SourceAccount 条件を使用し Config サービスプリンシパルが特定のアカウントに代わってオペレーションを実行するときに、 Amazon S3 バケットのみと交信するように制限することができます。同じ組織の多くのアカウント AWS Config で設定項目を 1 つの Amazon S3 バケットに配信するように を設定する場合は、 などの AWS Organizations 条件キーを使用できるように、サービスにリンクされたロールの代わりに IAM ロールを使用することをお勧めしますAWS:PrincipalOrgID。で使用する IAM ロールのアクセス許可の管理の詳細については AWS Config、「 に割り当てられた IAM ロールのアクセス許可 AWS Config」を参照してください。のアクセス許可の管理の詳細については AWS Organizations、AWS 「組織 のアクセス許可の管理」を参照してください。

AWS Config は、特定の AWS Config 配信チャネルに代わってオペレーションを実行するときに、Config サービスプリンシパルが Amazon S3 バケットとのみやり取りするように制限する AWS:SourceArn条件もサポートします。 AWS Config サービスプリンシパルを使用する場合、 AWS:SourceArnプロパティは常に に設定されます。arn:aws:config:sourceRegion:sourceAccountID:*ここで、 sourceRegion は配信チャネルのリージョンであり、 sourceAccountIDは配信チャネルを含むアカウントの ID です。 AWS Config 配信チャネルの詳細については、「配信チャネルの管理」を参照してください。たとえば、以下の条件を追加すると、アカウント us-east-1123456789012リージョン中の送信チャンネルに代わってのみ、Config サービスプリンシパルが Amazon S3 バケットと交信するように制限します: "ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}