

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

# 使用客户管理的密钥加密集群密钥
<a name="working-with_clusters_secrets_cmk"></a>

默认情况下， AWS PCS 使用 AWS Secrets Manager 加密方式存储集群密钥 AWS 托管式密钥。 AWS PCS 不需要额外的授权即可使用 AWS 托管式密钥. 或者，您可以使用客户管理的密钥对集群密钥进行加密。客户管理的密钥必须是与集群相同的 AWS 账户 对称加密密钥 (`SYMMETRIC_DEFAULT`,`ENCRYPT_DECRYPT`)。 AWS 区域 

附加到 AWS PCS 服务相关角色 (`AWSServiceRoleForPCS`) 的 AWS 托管策略`AWSPCSServiceRolePolicy`不授予任何`kms:`权限。如果您在不编辑密钥策略的情况下将客户管理的密钥附加到密钥，则服务相关角色无法访问该密钥。结果，机密轮换和计算节点操作失败。有关 AWS PCS 服务相关角色的更多信息，请参阅[Service-linked 的角色 AWS 个](service-linked-roles.md)。

## 必需的密钥政策
<a name="working-with_clusters_secrets_cmk-key-policy"></a>

将以下语句添加到客户管理密钥的密钥策略中。{{account-id}}用你的 AWS 账户 ID 替换。此声明授予 AWS PCS 服务相关角色 (`AWSServiceRoleForPCS`) 使用客户管理的密钥保护集群密钥的权限。

```
{
   "Sid": "Allow service-linked role use of the customer managed key",
   "Effect": "Allow",
   "Principal": {
       "AWS": [
           "arn:aws:iam::{{account-id}}:role/aws-service-role/pcs.amazonaws.com/AWSServiceRoleForPCS"
       ]
   },
   "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKey",
       "kms:DescribeKey"
   ],
   "Resource": "*"
}
```

有关更多信息，请参阅:
+ [命令参考中的 put-key-policy ](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) *AWS CLI *
+ [命令参考](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html)中的 create-key *AWS CLI *
+ [在*AWS Key Management Service 开发者指南*](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html)中查找密钥 ID 和密钥 ARN
+ 《AWS Key Management Service 开发人员指南》**中的[AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)
+  AWS PCS 集群密钥作为[托管密钥存储](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_pcs.html)在中 AWS Secrets Manager。

## 更改加密密钥的权限
<a name="working-with_clusters_secrets_cmk-change-key-permissions"></a>

上一节中的权限适用于 AWS PCS 服务相关角色。更改附加到密钥的加密密钥的 IAM 委托人需要自己的权限，这些权限与服务相关角色是分开的。委托人需要以下权限：
+ `secretsmanager:UpdateSecret`在集群密钥上。
+ `kms:Decrypt`在传出密钥（当前加密密钥的密钥）上。
+ `kms:GenerateDataKey``kms:Encrypt`、以及传入密钥（新密钥）`kms:Decrypt`上。

当您更改密钥时， AWS Secrets Manager 会重新加密密钥的每个存储版本，包括`AWSCURRENT`和`AWSPREVIOUS`版本。

有关附上密钥的过程，请参阅[附上密钥并旋转密钥](#working-with_clusters_secrets_cmk-attach-and-rotate)。

## 附上密钥并旋转密钥
<a name="working-with_clusters_secrets_cmk-attach-and-rotate"></a>

您可以通过 AWS Secrets Manager `UpdateSecret`操作将客户管理的密钥附加到集群密钥。 AWS PCS 没有为密钥的加密密钥提供 API 参数。

以下示例将客户管理的密钥附加到集群密钥。用你的值替换占位符。

```
aws secretsmanager update-secret \
    --region {{region}} \
    --secret-id {{secret-arn}} \
    --kms-key-id {{key-arn}}
```

**注意**  
客户管理的密钥必须是 AWS 账户 与 AWS 区域 密钥相同的对称加密密钥。您需要中列出的权限[更改加密密钥的权限](#working-with_clusters_secrets_cmk-change-key-permissions)。

连接客户管理的密钥后，继续轮换，以便 AWS PCS 生成一个使用新连接的客户管理密钥加密的新集群密钥。有关旋转过程，请参见[轮换集群密钥 AWS 个](cluster-secret-rotation-procedure.md)。