

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用客戶受管金鑰來加密叢集秘密
<a name="working-with_clusters_secrets_cmk"></a>

根據預設， AWS PCS 會將叢集秘密存放在使用 . AWS PCS AWS Secrets Manager 加密的 中 AWS 受管金鑰，不需要額外的授權即可使用 AWS 受管金鑰。或者，您可以使用客戶受管金鑰加密叢集秘密。客戶受管金鑰必須是與 AWS 區域 叢集相同 AWS 帳戶 和 中的對稱加密金鑰 (`SYMMETRIC_DEFAULT`、`ENCRYPT_DECRYPT`)。

連接至 AWS PCS 服務連結角色 `AWSPCSServiceRolePolicy` (`AWSServiceRoleForPCS`) 的 AWS 受管政策不會授予任何`kms:`許可。如果您在未編輯金鑰政策的情況下將客戶受管金鑰連接到秘密，則服務連結角色無法存取秘密。因此，秘密輪換和運算節點操作會失敗。如需 AWS PCS 服務連結角色的詳細資訊，請參閱 [AWS PCS 的服務連結角色](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": "*"
}
```

如需詳細資訊，請參閱：
+ 《 *AWS CLI 命令參考*》中的 [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) 
+ *AWS CLI 命令參考*中的 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 
+ 《 *AWS Key Management Service 開發人員指南*》中的[尋找金鑰 ID 和金鑰 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html) 
+ [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) 《 *AWS Key Management Service 開發人員指南*》中的
+  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:Decrypt` 上的 `kms:Encrypt`、 和 。

當您變更金鑰時， 會 AWS Secrets Manager 重新加密每個存放版本的秘密，包括 `AWSCURRENT`和 `AWSPREVIOUS`版本。

如需連接金鑰的程序，請參閱 [連接金鑰並輪換秘密](#working-with_clusters_secrets_cmk-attach-and-rotate)。

## 連接金鑰並輪換秘密
<a name="working-with_clusters_secrets_cmk-attach-and-rotate"></a>

您可以使用 `UpdateSecret`操作將客戶受管金鑰連接到叢集秘密 AWS Secrets Manager 。 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 PCS 中輪換叢集秘密](cluster-secret-rotation-procedure.md)。