本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 S3 存储桶 Amazon Config
发送配置信息时,它会首先尝试使用该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,请提供以 Sid 身份执行s3:ListBucket
操作的权限AWSConfigBucketExistenceCheck
,如以下步骤 6 所述。
使用服务相关角色时 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 存储桶发送配置信息。
-
Amazon Web Services Management Console 使用拥有 S3 存储桶的账户登录。
打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/
。 -
选择 Amazon Config 要用于传送配置项目的存储桶,然后选择 Propert ie s。
-
选择权限。
-
选择 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:::
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
" } } } ] }注意
向您的IAM角色授予权限而不是 Amazon Config 服务主体名称 (SPN) 时,请确保您的IAM角色拥有跨账户存储桶的
PutObjectACL
权限,以免出现权限不足错误。参见IAM角色策略示例,网址为 IAM您的 S3 存储桶的角色策略。 -
替换存储桶策略中的以下值:
-
amzn-s3-demo-bucket
— Amazon Config 将向其传送配置项目的 Amazon S3 存储桶的名称。 -
[optional] prefix
— Amazon S3 对象密钥的可选补充,可帮助在存储桶中创建类似文件夹的组织。 -
sourceAccountID
— Amazon Config 将向目标存储桶传送配置项目的账户的 ID。
-
-
选择 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 服务主体仅代表账户 123456789012
中 us-east-1
区域中的传输通道与您的 Amazon S3 存储桶进行交互:"ArnLike": {"AWS:SourceArn":
"arn:aws:config:us-east-1:123456789012:*"}
。