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

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

Amazon S3 存储桶的权限

默认情况下,所有 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 角色,但如果该存储桶的访问策略未授予,则此尝试失败WRITE访问 IAM 角色。在这种情况下,Amazon Config 会再次发送这些信息,这次会以 Amazon Config 服务委托人的身份发送。该访问策略必须先向名称为 config.amazonaws.com 的委托人授予 WRITE 访问权限,然后才能成功传递。这样一来,Amazon Config 便会成为其向 S3 存储桶传递的对象的所有者。您必须将下面步骤 6 中提到的访问策略附加到另一个账户中的 Amazon S3 存储桶才能授予Amazon Config访问Amazon S3 存储桶。

之前的角色Amazon Config可以将日志传送至 Amazon S3(AmazonAmazon Config检查存储桶是否存在以及存储在哪个存储桶中Amazon存储桶所在的区域。Amazon Config尝试致电Amazon S3HeadBucket用于检查存储桶是否存在并获取存储桶区域的 API。如果在执行位置检查时未提供定位存储桶所需的权限,您将在 Amazon CloudTrail 日志中看到 AccessDenied 错误。但是,如果您不提供存储桶定位权限,则可以成功将日志传输到您的 Amazon S3 存储桶。

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

这些区域有:Amazon Config服务相关角色无权将对象放到 Amazon S3 存储桶。所以,如果你设置了Amazon Config使用服务相关角色,Amazon Config会将配置项目作为Amazon Config改为服务主体。您需要将以下步骤 6 中提到的访问策略附加到您自己的账户或其他账户中的 Amazon S3 存储桶以进行授权Amazon Config访问Amazon S3 存储桶。

授予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 角色策略示例 Amazon S3 存储桶的 IAmazon S.

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

    • targetBucketName— 要存储的 Amazon S3 存储桶的名称Amazon Config将交付配置项目。

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

    • 来源 AccountID— 该账户的 IDAmazon Config将把配置项目传送到目标存储桶。

  8. 选择 Save,然后选择 Close

您可以使用AWS:SourceAccount上述 Amazon S3 存储桶策略中的条件限制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 S3 存储桶交互Amazon Config交付渠道。使用时Amazon Config服务主体AWS:SourceArn属性将始终设置为arn:aws:config:sourceRegion:sourceAccountID:*哪里sourceRegion是配送渠道的区域,sourceAccountID是包含传送渠道的账户的 ID。有关更多信息Amazon Config配送渠道,请参阅管理传输通道. 例如,添加以下条件以限制 Config 服务委托人只能代表传送通道与您的 Amazon S3 存储桶进行交互us-east-1账户中的区域123456789012"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}.