

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

# （可选）配置 AWS KMS keys
<a name="configure-kms-keys"></a>

如果您想使用加密密钥对资源进行加密和解 AWS KMS 密，请选中该复选框。如果您已有密钥，则可以从下拉菜单中显示的标识符中选择它们。您可以通过选择**创建密钥**来生成新密钥。您可以在更新登录区时随时添加或更改 KMS 密钥。

当您选择**设置登录区**时，AWS Control Tower 会执行预检查以验证您的 KMS 密钥。密钥还必须满足以下要求：
+ 已启用
+ 对称
+ 不是多区域密钥
+ 已将正确的权限添加到策略中。
+ 密钥在管理账户中

如果密钥不符合这些要求，您可能会看到一个错误横幅。在这种情况下，请选择其他密钥或生成密钥。请务必编辑密钥的权限策略，如下一部分所述。

## 更新 AWS KMS 密钥策略
<a name="kms-key-policy-update"></a>

 您必须先创建 KMS 密钥，然后才能更新 KMS 密钥策略。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[创建密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)。

 要在 AWS Control Tower 中使用 KMS 密钥，您必须通过添加 AWS Config 和所需的最低权限来更新默认 KMS 密钥策略 AWS CloudTrail。作为最佳实践，我们建议您在所有策略中包含所需的最低权限。更新 KMS 密钥策略时，您可以将权限作为一组添加到单个 JSON 语句中或逐行添加权限。

 该过程介绍如何通过添加允许 AWS Config 和 CloudTrail AWS KMS 用于加密的策略声明，在 AWS KMS 控制台中更新默认 KMS 密钥策略。策略语句要求您包含以下信息：
+  **`YOUR-MANAGEMENT-ACCOUNT-ID`**：将在其中设置 AWS Control Tower 的管理账户的 ID。
+  **`YOUR-HOME-REGION`**：您在设置 AWS Control Tower 时将选择的主区域。
+  **`YOUR-KMS-KEY-ID`**：将与策略一起使用的 KMS 密钥 ID。

**更新 AWS KMS 密钥策略**

1.  在以下位置打开 AWS KMS 控制台 [https://console.aws.amazon.com//kms](https://console.aws.amazon.com//kms)

1.  在导航窗格上，选择**客户托管密钥**。

1.  在表格中，选择要编辑的密钥。

1.  在**密钥策略**选项卡中，确保您可以查看密钥策略。如果您无法查看密钥策略，请选择**切换到策略视图**。

1.  选择**编辑**，然后通过为和添加以下策略声明来更新默认 KMS 密钥策略 CloudTrail。 AWS Config 

    **AWS Config 政策声明** 

   ```
   {
       "Sid": "Allow Config to use KMS for encryption",
       "Effect": "Allow",
       "Principal": {
           "Service": "config.amazonaws.com"
       },
       "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey"
       ],
       "Resource": "arn:aws:kms:YOUR-HOME-REGION:YOUR-MANAGEMENT-ACCOUNT-ID:key/YOUR-KMS-KEY-ID"
   }
   ```

    **CloudTrail 政策声明** 

   ```
   {
       "Sid": "Allow CloudTrail to use KMS for encryption",
       "Effect": "Allow",
       "Principal": {
           "Service": "cloudtrail.amazonaws.com"
       },
       "Action": [
           "kms:GenerateDataKey*",
           "kms:Decrypt"
       ],
       "Resource": "arn:aws:kms:YOUR-HOME-REGION:YOUR-MANAGEMENT-ACCOUNT-ID:key/YOUR-KMS-KEY-ID",
       "Condition": {
           "StringEquals": {
               "aws:SourceArn": "arn:aws:cloudtrail:YOUR-HOME-REGION:YOUR-MANAGEMENT-ACCOUNT-ID:trail/aws-controltower-BaselineCloudTrail"
           },
           "StringLike": {
               "kms:EncryptionContext:aws:cloudtrail:arn": "arn:aws:cloudtrail:*:YOUR-MANAGEMENT-ACCOUNT-ID:trail/*"
           }
       }
   }
   ```

1.  选择**保存更改**。

 **KMS 密钥策略示例** 

 以下示例策略显示了在添加授予权限 AWS Config 和 CloudTrail 最低所需权限的策略声明后，您的 KMS 密钥策略可能是什么样子。示例策略不包括您的默认 KMS 密钥策略。

```
{
    "Version": "2012-10-17",		 	 	 
    "Id": "CustomKMSPolicy",
    "Statement": [
        {
        ... YOUR-EXISTING-POLICIES ...
        },
        {
            "Sid": "Allow Config to use KMS for encryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "config.amazonaws.com"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:PARTITION:kms:YOUR-HOME-REGION:YOUR-MANAGEMENT-ACCOUNT-ID:key/YOUR-KMS-KEY-ID"
        },
        {
            "Sid": "Allow CloudTrail to use KMS for encryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey*",
                "kms:Decrypt"
              ],
            "Resource": "arn:PARTITION:kms:YOUR-HOME-REGION:YOUR-MANAGEMENT-ACCOUNT-ID:key/YOUR-KMS-KEY-ID",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:PARTITION:cloudtrail:YOUR-HOME-REGION:YOUR-MANAGEMENT-ACCOUNT-ID:trail/aws-controltower-BaselineCloudTrail"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:cloudtrail:arn": "arn:PARTITION:cloudtrail:*:YOUR-MANAGEMENT-ACCOUNT-ID:trail/*"
                }
            }
        }
    ]
}
```

 要查看其他示例策略，请参阅以下页面：
+  《AWS CloudTrail 用户指南》**中的[授予加密权限](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html#create-kms-key-policy-for-cloudtrail-encrypt)。
+  《AWS Config 开发人员指南》**中的[使用服务相关角色时 AWS KMS 密钥所需的权限（S3 存储桶交付）](https://docs.aws.amazon.com//config/latest/developerguide/s3-kms-key-policy.html#required-permissions-s3-kms-key-using-servicelinkedrole)。

**防范攻击者**  
 通过在策略中添加某些条件，您可以帮助防止某种特定类型的攻击，即*混淆代理*攻击，当某个实体迫使更有权限的实体执行某个操作（例如跨服务模拟）时，就会发生此类攻击。有关策略条件的一般信息，请参阅[在策略中指定条件](access-control-overview.md#specifying-conditions)。

 AWS Key Management Service (AWS KMS) 允许您创建多区域 KMS 密钥和非对称密钥；但是，AWS Control Tower 不支持多区域密钥或非对称密钥。AWS Control Tower 会对您的现有密钥进行预检查。如果您选择多区域密钥或非对称密钥，则可能会看到一条错误消息。在这种情况下，请生成另一个密钥以用于 AWS Control Tower 资源。

有关的更多信息 AWS KMS，请参阅[《 AWS KMS 开发人员指南》。](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)

请注意，默认情况下，AWS Control Tower 中的客户数据使用 SSE-S3 静态加密。