

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

# AWS Config 传送渠道的 Amazon S3 存储桶的权限
<a name="s3-bucket-policy"></a>

**重要**  
本页介绍的是为 AWS Config 配送渠道设置 Amazon S3 存储桶。此页面与 AWS Config 配置记录器可以记录的`AWS::S3::Bucket`资源类型无关。

默认情况下，Amazon S3 存储桶和对象都是私有的。 AWS 账户 只有创建存储桶的人（资源所有者）才有访问权限。资源所有者可以通过创建访问策略来向其他资源和用户授予访问权限。

 AWS Config 自动为您创建 S3 存储桶时，它会添加所需的权限。但是，如果您指定现有 S3 存储桶，则必须手动添加这些权限。

**Topics**
+ [使用 IAM 角色时](#required-permissions-in-another-account)
+ [使用服务相关角色时](#required-permissions-using-servicelinkedrole)
+ [授予 AWS Config 访问权限](#granting-access-in-another-account)
+ [跨账户传输](#required-permissions-cross-account)

## 使用 IAM 角色时 Amazon S3 存储桶的必需权限
<a name="required-permissions-in-another-account"></a>

AWS Config 使用您分配给配置记录器的 IAM 角色将配置历史记录和快照传送到您账户中的 S3 存储桶。对于跨账户交付， AWS Config 首先尝试使用分配的 IAM 角色。如果存储桶策略未授予 `WRITE` 对 IAM 角色的访问权限，则 AWS Config 将使用 `config.amazonaws.com` 服务主体。存储桶策略必须授予对 `config.amazonaws.com` 的 `WRITE` 访问权限才能完成传输。成功交付后， AWS Config 保留其向跨账户 S3 存储桶交付的所有对象的所有权。

AWS Config 使用您分配给配置记录器的 IAM 角色调用 Amazon S3 [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RESTBucketHEAD.html)API，以确认 S3 存储桶是否存在及其位置。如果您没有必要的确认权限，则会在 AWS CloudTrail 日志中看到`AccessDenied`错误。 AWS Config 但是，即使没有必要的权限来确认 S3 存储桶 AWS Config 是否存在及其位置，仍然 AWS Config 可以提供配置历史记录和快照。

**最小权限**  
Amazon S3 `HeadBucket` API 需要执行 `s3:ListBucket` 操作。

## 使用服务相关角色时 Amazon S3 Bucket 存储桶的必需权限
<a name="required-permissions-using-servicelinkedrole"></a>

 AWS Config 服务相关角色无权将对象放入 Amazon S3 存储桶。如果您 AWS Config 使用服务相关角色进行设置，则 AWS Config 将使用`config.amazonaws.com`服务主体来提供配置历史记录和快照。您的账户或跨账户目标中的 S3 存储桶策略必须包括 AWS Config 服务委托人写入对象的权限。

## 授予 AWS Config 对 Amazon S3 存储桶的访问权限
<a name="granting-access-in-another-account"></a>

完成以下步骤，启用 AWS Config 将配置历史记录和快照传送到 Amazon S3 存储桶。

1.  AWS 管理控制台 使用拥有 S3 存储桶的账户登录。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择 AWS Config 要用于传送配置项目的存储桶，然后选择 Propert **ie** s。

1. 选择**权限**。

1. 选择 **Edit Bucket Policy**。

1. 将以下策略复制到 **Bucket Policy Editor** 窗口中：
**安全最佳实践**  
强烈建议您使用 `AWS:SourceAccount` 条件限制存储桶策略中的访问权限。这样可以确保 AWS 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"
           }
         }
       }
     ]
   }
   ```

------

1. 替换存储桶策略中的以下值：
   + *amzn-s3-demo-bucket*— 用于传送配置历史记录和快照的 AWS Config Amazon S3 存储桶的名称。
   + *[optional] prefix*— Amazon S3 对象密钥的可选补充，可帮助在存储桶中创建类似文件夹的组织。
   + *sourceAccountID*— AWS Config 将在其中提供配置历史记录和快照的账户的 ID。

1. 选择 **Save**，然后选择 **Close**。

该`AWS:SourceAccount`条件将 AWS Config 操作限制为指定。 AWS 账户对于组织内部向单个 S3 存储桶交付的多账户配置，请使用带有 AWS Organizations 条件密钥的 IAM 角色而不是与服务相关的角色。例如 `AWS:PrincipalOrgID`。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[管理组织的访问权限](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_permissions_overview.html)。

该`AWS:SourceArn`条件将 AWS Config 操作限制在指定的交付渠道内。`AWS:SourceArn` 格式如下所示：`arn:aws:config:sourceRegion:123456789012`。

例如，要将账户 123456789012 的 S3 存储桶访问权限限制为美国东部（弗吉尼亚州北部）区域的传输通道，可添加以下条件：

```
"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:"}
```

## 跨账户传输时 Amazon S3 存储桶的必需权限
<a name="required-permissions-cross-account"></a>

当配置 AWS Config 为将配置历史记录和快照传送到不同账户（跨账户设置）中的 Amazon S3 存储桶时，如果配置记录器和为交付通道指定的 S3 存储桶不同 AWS 账户，则需要以下权限：
+ 您分配给配置记录器的 IAM 角色需要明确的权限才能执行 `s3:ListBucket` 操作。这是因为使用此 IAM 角色 AWS Config 调用 Amazon S3 [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RESTBucketHEAD.html)API 来确定存储桶的位置。
+ S3 存储桶策略必须包括分配给配置记录器的 IAM 角色的权限。

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

```
{
      "Sid": "AWSConfigBucketExistenceCheck",
      "Effect": "Allow",
      "Principal": {
        "AWS": "IAM Role-Arn assigned to the configuration recorder"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
}
```