

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

# Amazon Config 交付渠道 KMS 密钥的权限
<a name="s3-kms-key-policy"></a>

如果您想为 S3 存储桶的 Amazon KMS 密钥创建策略，允许您对由 Amazon Config S3 存储桶交付的对象使用基于 KMS 的加密，请使用本主题中的信息。

**Contents**
+ [使用 IAM 角色（S3 存储桶传输）时 KMS 密钥的必需权限](#required-permissions-s3-kms-key-using-iam-role)
+ [使用服务相关角色时 Amazon KMS 密钥所需的权限（S3 存储桶交付）](#required-permissions-s3-kms-key-using-servicelinkedrole)
+ [授予对 Amazon KMS 密钥的 Amazon Config 访问权限](#granting-access-s3-kms-key)

## 使用 IAM 角色（S3 存储桶传输）时 KMS 密钥的必需权限
<a name="required-permissions-s3-kms-key-using-iam-role"></a>

如果您 Amazon Config 使用 IAM 角色进行设置，则可以将以下权限策略附加到 KMS 密钥：

```
{
    "Id": "Policy_ID",
    "Statement": [
        {
            "Sid": "AWSConfigKMSPolicy",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Effect": "Allow",
            "Resource": "*myKMSKeyARN*",
            "Principal": {
                "AWS": [
                    "account-id1",
                    "account-id2",
                    "account-id3"
                ]
            }
        }
    ]
}
```

**注意**  
如果 IAM 角色、Amazon S3 存储桶策略或 Amazon KMS 密钥未提供对 Amazon Config的适当访问权限 Amazon Config，则尝试向 Amazon S3 存储桶发送配置信息将失败。在这种情况下，再次 Amazon Config 发送信息，这次是作为 Amazon Config 服务主体发送。在这种情况下，您必须将下文提到的权限策略附加到 Amazon KMS 密钥，以授予在向 Amazon S3 存储桶传送信息时使用该密钥的 Amazon Config 权限。

## 使用服务相关角色时 Amazon KMS 密钥所需的权限（S3 存储桶交付）
<a name="required-permissions-s3-kms-key-using-servicelinkedrole"></a>

 Amazon Config 服务相关角色无权访问 Amazon KMS 密钥。因此，如果您 Amazon Config 使用服务相关角色进行设置，则 Amazon Config 将改为以 Amazon Config 服务主体身份发送信息。您需要在 Amazon KMS 密钥上附加访问策略（如下所述），以授予在向 Amazon S3 存储桶传送信息时使用该 Amazon KMS 密钥的 Amazon Config 权限。

## 授予对 Amazon KMS 密钥的 Amazon Config 访问权限
<a name="granting-access-s3-kms-key"></a>

此策略 Amazon Config 允许在向 Amazon S3 存储桶传送信息时使用 Amazon KMS 密钥

```
{
    "Id": "Policy_ID",
    "Statement": [
        {
            "Sid": "AWSConfigKMSPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "config.amazonaws.com"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "myKMSKeyARN",
            "Condition": { 
                "StringEquals": {
                    "AWS:SourceAccount": "sourceAccountID"
                }
            }
        }
    ]
}
```

替换密钥策略中的以下值：
+ *myKMSKeyARN*— 用于加密 Amazon Config 将向其传送配置项目的 Amazon S3 存储桶中数据的 Amazon KMS 密钥的 ARN。
+ *sourceAccountID*— Amazon Config 将向其发送配置项目的账户的 ID。

您可以使用上述 Amazon KMS 密钥策略中的`AWS:SourceAccount`条件来限制 Config 服务主体仅在代表特定账户执行操作时与 Amazon KMS 密钥交互。

Amazon Config 还支持这样的`AWS:SourceArn`条件，即限制 Config 服务委托人仅在代表特定 Amazon Config 交付渠道执行操作时与 Amazon S3 存储桶进行交互。使用 Amazon Config 服务主体时，该`AWS:SourceArn`属性将始终设置为交付渠道`arn:aws:config:sourceRegion:sourceAccountID:*`所在`sourceRegion`区域，并且`sourceAccountID`是包含配送渠道的账户的 ID。有关 Amazon Config 配送渠道的更多信息，请参阅[管理交付渠道](https://docs.amazonaws.cn/config/latest/developerguide/manage-delivery-channel.html)。例如，添加以下条件以限制 Config 服务主体仅代表账户 `123456789012` 中 `us-east-1` 区域中的传输通道与您的 Amazon S3 存储桶进行交互：`"ArnLike": {"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}`。