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 Web Services 账户 资源所有者才能访问该存储桶。但是,资源所有者可以选择将访问权限授予其他资源和用户。要授予访问权限,其中一种方法是编写访问策略。

如果自动为您 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 步中提到的一个访问策略附加到另一账户中的 S3 存储桶,以向 Amazon Config 授予访问 Amazon S3 存储桶的权限。

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

注意

要允许 Amazon S3 HeadBucket API 的权限,请按照以下第 6 步所述提供以 Sid AWSConfigBucketExistenceCheck 身份执行 s3:ListBucket 操作的权限。

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

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. 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 窗口中:

    重要

    作为允许 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" } } } ] }
    注意

    向您的 IAM 角色而不是 Amazon Config 服务委托人名称 (SPN) 授予权限时,请确保您的 IAM 角色拥有跨账户存储桶的PutObjectACL权限,以免出现权限不足错误。请参阅位于 用于 S3 存储桶的 IAM 角色策略的 IAM 角色策略示例。

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

    • 目标 BucketName — Amazon Config 将向其传送配置项目的 Amazon S3 存储桶的名称。

    • [可选] prefix – 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 还支持这样的AWS:SourceArn条件,即限制 Config 服务委托人仅在代表特定 Amazon Config 交付渠道执行操作时与 Amazon S3 存储桶进行交互。使用 Amazon Config 服务主体时,该AWS:SourceArn属性将始终设置为交付渠道arn:aws:config:sourceRegion:sourceAccountID:*所在sourceRegion区域,并且sourceAccountID是包含配送渠道的账户的 ID。有关 Amazon Config 配送渠道的更多信息,请参阅管理交付渠道。例如,添加以下条件以限制 Config 服务主体仅代表账户 123456789012us-east-1 区域中的传输通道与您的 Amazon S3 存储桶进行交互:"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}