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

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

重要

本页介绍如何设置 Amazon S3 存储桶的 Amazon Config 传输通道。此页面不介绍 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 服务主体。存储桶策略必须授予对 config.amazonaws.comWRITE 访问权限才能完成传输。成功传输后,Amazon Config 保留其向跨账户 S3 存储桶传输的所有对象的所有权。

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

最小权限

Amazon S3 HeadBucket API 需要执行 s3:ListBucket 操作。

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

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

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

完成以下步骤,让 Amazon Config 将配置历史记录和快照传输至 Amazon S3 存储桶。

  1. 使用该 S3 存储桶所属的账户登录。Amazon Web Services 管理控制台

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

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

  4. 选择权限

  5. 选择 Edit Bucket Policy

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

    安全最佳实践

    强烈建议您使用 AWS:SourceAccount 条件限制存储桶策略中的访问权限。这样可以确保 Amazon Config 仅代表预期用户授予访问权限。

    JSON
    { "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 存储桶的名称。

    • [可选] 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 操作。这是因为 Amazon Config 使用此 IAM 角色调用 Amazon S3 HeadBucket API 来确定存储桶的位置。

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

下面是一个示例存储桶策略配置:

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