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

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

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

重要

このページでは、 AWS Config 配信チャネルの Amazon S3 バケットの設定について説明します。このページは、AWS::S3::Bucket AWS Config 設定レコーダーが記録できるリソースタイプに関するものではありません。配信チャネルについて詳しくは、「 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 配信を成功させるには、WRITEconfig.amazonaws.comアクセスポリシーがプリンシパル名へのアクセスを許可する必要があります。 AWS Config その場合、S3 バケットに配信するオブジェクトの所有者になります。Amazon S3 バケットへのアクセスを AWS Config に付与するには、以下のステップ 6 で説明したアクセスポリシーを別のアカウントの Amazon S3 バケットにアタッチする必要があります。

Amazon S3 バケットにログを配信する前に AWS Config 、バケットが存在するかどうか、 AWS Config AWS バケットがどのリージョンにあるかを確認します。 AWS Config Amazon S3 HeadBucketAPI を呼び出して、バケットが存在するかどうかを確認し、バケットリージョンを取得しようとします。ロケーションチェックの実行時にバケットを検索する権限が与えられていない場合、AccessDenied AWS CloudTrail ログにエラーが表示されます。ただし、バケットの場所へのアクセス許可を付与しない場合、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 バケットへのアクセスを許可するには、以下のステップ 6 で説明するアクセスポリシーを自分のアカウントまたは別のアカウントの Amazon S3 バケットにアタッチする必要があります。 AWS Config

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 ロールにアクセス権限を付与する場合は、権限不足エラーを避けるため、IAM PutObjectACL ロールにクロスアカウントバケットの権限があることを確認してください。 S3 バケットの IAM ロールのポリシー で IAM ロールのポリシーの例を参照してください。

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

    • targetBucketName— 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 バケットに配信する予定の場合は、サービスにリンクされたロールの代わりに IAM ロールを使用することをお勧めします。これにより、 AWS Organizations などの条件キーを使用できます。AWS:PrincipalOrgID使用する IAM ロールのアクセス権限の管理の詳細については AWS Config、「割り当てられた IAM ロールのアクセス許可」を参照してください。 AWS Configのアクセス権限の管理について詳しくは AWS Organizations、「組織のアクセス権限の管理」を参照してください。 AWS

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