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 HeadBucket API を呼び出して、バケットが存在するかどうか、およびバケットリージョンを取得しようとします。ロケーションチェックの実行時にバケットを見つけるためのアクセス許可が提供されていない場合は、 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:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "AWS:SourceAccount": "sourceAccountID" } } }, { "Sid": "AWSConfigBucketExistenceCheck", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "AWS:SourceAccount": "sourceAccountID" } } }, { "Sid": "AWSConfigBucketDelivery", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/[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. バケットポリシーの以下の値を置き換えます。

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

    • [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:*"}