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 S3 存储桶和对象是私有的。 Amazon Web Services 账户 只有创建存储桶的人(资源所有者)才有访问权限。资源所有者可以通过创建访问策略来授予对其他资源和用户的访问权限。

Amazon Config 自动为您创建 S3 存储桶时,它会添加所需的权限。但是,如果您指定现有的 S3 存储桶,则必须手动添加这些权限。

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

Amazon Config 使用您分配给配置记录器的 IAM 角色将配置历史记录和快照传送到您账户中的 S3 存储桶。对于跨账户交付, Amazon Config 首先尝试使用分配的 IAM 角色。如果存储桶策略未授予WRITE对 IAM 角色的访问权限,则 Amazon Config 使用config.amazonaws.com服务委托人。存储桶策略必须授予WRITE访问权限config.amazonaws.com才能完成交付。成功交付后, Amazon Config 保留其向跨账户 S3 存储桶交付的所有对象的所有权。

Amazon Config 使用您分配给配置记录器的 IAM 角色调用 Amazon S3 HeadBucketAPI,以确认 S3 存储桶是否存在及其位置。如果您没有必要的确认权限,则会在 Amazon CloudTrail 日志中看到AccessDenied错误。 Amazon Config 但是,即使没有必要的权限来确认 S3 存储桶 Amazon Config 是否存在及其位置,仍然 Amazon Config 可以提供配置历史记录和快照。

最小权限

亚马逊 S3 HeadBucket API 需要s3:ListBucket执行该操作。

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

Amazon Config 服务相关角色无权将对象放入 Amazon S3 存储桶。如果您 Amazon Config 使用服务相关角色进行设置,则 Amazon Config 将使用config.amazonaws.com服务主体来提供配置历史记录和快照。您的账户或跨账户目标中的 S3 存储桶策略必须包括 Amazon Config 服务委托人写入对象的权限。

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

完成以下步骤,启用 Amazon Config 将配置历史记录和快照传送到 Amazon S3 存储桶。

  1. Amazon Web Services Management Console 使用拥有 S3 存储桶的账户登录。

  2. 打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

  3. 选择 Amazon Config 要用于传送配置项目的存储桶,然后选择 Propert ie s。

  4. 选择权限

  5. 选择 Edit Bucket Policy

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

    安全最佳实践

    我们强烈建议您使用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:::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" } } } ] }
  7. 替换存储桶策略中的以下值:

    • amzn-s3-demo-bucket— 用于传送配置历史记录和快照的 Amazon Config Amazon S3 存储桶的名称。

    • [optional] prefix— Amazon S3 对象密钥的可选补充,可帮助在存储桶中创建类似文件夹的组织。

    • sourceAccountID— Amazon Config 将在其中提供配置历史记录和快照的账户的 ID。

  8. 选择 Save,然后选择 Close

AWS:SourceAccount条件将 Amazon Config 操作限制为指定。 Amazon Web Services 账户对于组织内部向单个 S3 存储桶交付的多账户配置,请使用带有 Amazon Organizations 条件密钥的 IAM 角色而不是与服务相关的角色。例如 AWS:PrincipalOrgID。有关更多信息,请参阅Amazon Organizations 用户指南中的管理组织的访问权限

AWS:SourceArn条件将 Amazon Config 操作限制在指定的交付渠道内。AWS:SourceArn格式如下:arn:aws:config:sourceRegion:123456789012.

例如,要限制账户 123456789012 的 S3 存储桶访问美国东部(弗吉尼亚北部)地区的配送渠道,请添加以下条件:

"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:"}

跨账户传送时 Amazon S3 存储桶所需的权限

当配置 Amazon Config 为将配置历史记录和快照传送到不同账户(跨账户设置)中的 Amazon S3 存储桶时,如果配置记录器和为交付通道指定的 S3 存储桶不同 Amazon Web Services 账户,则需要以下权限:

  • 您分配给配置记录器的 IAM 角色需要明确的权限才能执行该s3:ListBucket操作。这是因为使用此 IAM 角色 Amazon Config 调用 Amazon S3 HeadBucketAPI 来确定存储桶的位置。

  • S3 存储桶策略必须包括分配给配置记录器的 Amazon Config 服务委托人和 IAM 角色的权限。

以下是存储桶策略配置示例:

{ "Sid": "AWSConfigBucketExistenceCheck", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com", "AWS": "IAM Role-Arn assigned to the configuartion recorder" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "AWS:SourceAccount": "sourceAccountID" } } }