Amazon Config传输通道的 Amazon S3 存储桶的权限 - Amazon Config
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Config传输通道的 Amazon S3 存储桶的权限

重要

本页介绍如何为Amazon Config传送通道设置 Amazon S3 存储桶。此页面与Amazon Config配置记录器可以记录的AWS::S3::Bucket资源类型无关。有关Amazon Config交付渠道的更多信息,请参阅管理交付渠道

默认情况下,所有 Amazon S3 存储桶和对象都是私有的。只有资源所有者(即创建存储桶的Amazon账户)才能访问该存储桶。但是,资源所有者可以选择将访问权限授予其他资源和用户。要授予访问权限,其中一种方法是编写访问策略。

如果自动为您Amazon Config创建 Amazon S3 存储桶(例如,如果您使用Amazon Config控制台设置传输通道),则这些权限会自动添加到 Amazon S3 存储桶。但是,如果您指定现有的 Amazon S3 存储桶,则必须确保 S3 存储桶具有正确的权限。

注意

对象不继承其桶的权限。例如,如果您创建了一个桶并授予一个用户写入权限,则将无法访问此用户的对象,除非此用户显式授予您访问权限。

使用 IAM 角色时 Amazon S3 存储桶所需的权限

当Amazon Config向您账户中的 Amazon S3 存储桶发送配置信息(历史文件和快照)时,它会使用您在设置时分配的 IAM 角色Amazon Config。当Amazon Config向另一个账户中的 Amazon S3 存储桶发送配置信息时,它首先尝试使用 IAM 角色,但如果存储桶的访问策略未授予对 IAM 角色的WRITE访问权限,则此尝试会失败。在这种情况下,Amazon Config 会再次发送这些信息,这次会以 Amazon Config 服务委托人的身份发送。该访问策略必须先向名称为 config.amazonaws.com 的委托人授予 WRITE 访问权限,然后才能成功传递。这样一来,Amazon Config 便会成为其向 S3 存储桶传递的对象的所有者。您必须将下文步骤 6 中提到的访问策略附加到另一个账户中的 Amazon S3 存储桶,才能授予对 Amazon S3 存储桶的Amazon Config访问权限。

Before Amazon Config 可以将日志传送到您的 Amazon S3 存储桶,Amazon Config检查存储桶是否存在以及存储桶位于哪个Amazon区域。 Amazon Config尝试调用 Amazon S3 HeadBucketAPI 来检查存储桶是否存在并获取存储桶区域。如果在执行位置检查时未提供定位存储桶所需的权限,您将在 Amazon CloudTrail 日志中看到 AccessDenied 错误。但是,如果您不提供存储桶位置权限,则会成功将日志传输到您的 Amazon S3 存储桶。

注意

要授予 Amazon S3 HeadBucket API 的权限,请提供以 Sid 身份执行s3:ListBucket操作的权限AWSConfigBucketExistenceCheck,如以下步骤 6 所述。

使用服务相关角色时 Amazon S3 存储桶所需的权限

Amazon Config服务相关角色无权将对象放入 Amazon S3 存储桶。因此,如果您Amazon Config使用服务相关角色进行设置,则Amazon Config将改为以Amazon Config服务主体发送配置项目。您需要将以下步骤 6 中提到的访问策略附加到您自己的账户或其他账户中的 Amazon S3 存储桶,以授予对 Amazon S3 存储桶的Amazon Config访问权限。

授予Amazon Config对 Amazon S3 存储桶的访问权限

按照以下步骤向您自己的账户或其他账户中的 Amazon S3 存储桶添加访问策略。访问策略允许Amazon Config向 Amazon S3 存储桶发送配置信息。

  1. 使用该 S3 存储桶所属的账户登录 Amazon Web Services Management Console。

  2. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  3. 选择您希望 Amazon Config 用来传递配置项的存储桶,然后选择 Properties (属性)

  4. 请选择权限

  5. 选择 Edit Bucket Policy

  6. 将以下策略复制到 Bucket Policy Editor 窗口中:

    重要

    作为允许Amazon Config访问 Amazon S3 存储桶时的安全最佳实践,我们强烈建议您在存储桶策略中限制访问AWS:SourceAccount权限。如果您现有的存储桶策略不遵循此安全最佳实践,我们强烈建议您编辑该存储桶策略以包含此保护。这样可以确保Amazon 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" } } } ] }
    注意

    Amazon Config归您所在Amazon组织内的某个账户或关联账户所有,但不属于您的某个Amazon账户或关联账户。Amazon这意味着,当Amazon Config以Amazon Config服务主体身份发送配置项目时(例如,当您在设置时分配的 IAM 角色Amazon Config无WRITE权访问存储桶或设置使用服务相关角色时),该服务Amazon Config将无法在基于组织 ID 或组织单位的条件下运行。

    注意

    向您的 IAM 角色而不是Amazon Config服务主体名称 (SPN) 授予权限时,请确保您的 IAM 角色具有跨账户存储桶的PutObjectACL权限,以避免出现权限不足错误。请参阅 IAM 角色策略示例,网址 您的 S3 存储桶的 IAM 角色策略为。

  7. 替换存储桶策略中的以下值:

    • targetBucketName— Amazon Config 将配置项目传送到的 Amazon S3 存储桶的名称。

    • [可选] 前缀 — Amazon S3 对象密钥的可选添加项,有助于在存储桶中创建类似文件夹的组织。

    • sourceAccountID — Amazon Config 将向目标存储桶传送配置项目的账户的 ID。

  8. 选择 Save,然后选择 Close

您可以使用上述 Amazon S3 存储桶策略中的AWS:SourceAccount条件来限制 Config 服务主体仅在代表特定账户执行操作时与 Amazon S3 存储桶交互。如果您计划在同一组织的多个账户Amazon Config中设置将配置项目传送到单个 Amazon S3 存储桶,我们建议使用 IAM 角色而不是服务相关角色,这样您就可以使用Amazon Organizations条件密钥,例如AWS:PrincipalOrgID。有关管理要使用的 IAM 角色的访问权限的更多信息Amazon Config,请参阅分配给的 IAM 角色的权限Amazon Config。有关管理的访问权限的更多信息Amazon Organizations,请参阅管理Amazon组织的访问权限

Amazon Config还支持在代表特定Amazon Config交付渠道执行操作时,限制 Config 服务主体只能与 Amazon S3 存储桶交互的AWS:SourceArn条件。使用Amazon Config服务主体时,该AWS:SourceArn属性将始终设置为arn:aws:config:sourceRegion:sourceAccountID:*其中sourceRegion是交付渠道的区域,sourceAccountID也是包含交付渠道的账户的 ID。有关Amazon Config交付渠道的更多信息,请参阅管理交付渠道。例如,添加以下条件以限制 Config 服务主体仅代表账户中该us-east-1区域的交付渠道与您"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}的 Amazon S3 存储桶进行交互123456789012