本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 存储桶Amazon 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 存储桶。
使用该 S3 存储桶所属的账户登录 Amazon Web Services Management Console。
通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/
。 选择您希望 Amazon Config 用来传递配置项的存储桶,然后选择 Properties (属性)。
请选择权限。
选择 Edit Bucket Policy。
将以下策略复制到 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 存储桶的 IAM 角色策略.替换存储桶策略中的以下值:
targetBucketName— 存放的 Amazon S3 存储桶的名称Amazon Config将交付配置项目。[可选] 前缀— Amazon S3 对象键的可选附加内容,可帮助在存储桶中创建类似于文件夹的组织结构。来源 AccountID— 该账户的账户 IDAmazon Config将配置项传送到目标存储桶。
选择 Save,然后选择 Close。
您可以使用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 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:*"}.