

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

# 變更 AWS Secrets Manager 秘密的加密金鑰
<a name="manage_update-encryption-key"></a>

Secrets Manager 使用[信封加密](security-encryption.md)搭配 AWS KMS 金鑰和資料金鑰來保護每個秘密值。對於每個秘密，您可以選擇要使用的 KMS 金鑰。您可以使用 AWS 受管金鑰 **aws/secretsmanager**，也可以使用客戶受管金鑰。在大多數情況下，我們建議使用 **aws/secretsmanager**，而且使用它無需付費。如果您需要從另一個 存取秘密 AWS 帳戶，或者如果您想要使用自己的 KMS 金鑰來輪換它或套用金鑰政策，請使用 客戶受管金鑰。您必須擁有[KMS 金鑰的許可](security-encryption.md#security-encryption-authz)。如需有關使用客戶受管金鑰的成本的資訊，請參閱 [定價](intro.md#asm_pricing)。

您可以變更秘密的加密金鑰。例如，如果您想要[從另一個帳戶存取秘密](auth-and-access_examples_cross.md)，而且秘密目前使用 AWS 受管金鑰 加密`aws/secretsmanager`，您可以切換到 客戶受管金鑰。

**提示**  
如果您想要輪換 客戶受管金鑰，建議您使用 AWS KMS 自動金鑰輪換。如需詳細資訊，請參閱[輪換 AWS KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

當您變更加密金鑰時，Secrets Manager 會使用新金鑰重新加密 `AWSPENDING`、 `AWSCURRENT`和 `AWSPREVIOUS`版本。為了避免將您鎖定在秘密之外，Secrets Manager 會保留所有使用上一個金鑰加密的現有版本。這表示您可以使用先前的金鑰或新的金鑰來解密 `AWSCURRENT``AWSPENDING`、 和 `AWSPREVIOUS`版本。如果您沒有前一個金鑰的`kms:Decrypt`許可，當您變更加密金鑰時，Secrets Manager 無法解密秘密版本以重新加密它們。在此情況下，現有的版本不會重新加密。

若要讓它`AWSCURRENT`只能由新的加密金鑰解密，請使用新金鑰建立新的秘密版本。然後，若要能夠解密`AWSCURRENT`秘密版本，您必須擁有新金鑰的許可。

如果停用先前的加密金鑰，則除了 `AWSCURRENT`、`AWSPENDING` 和 `AWSPREVIOUS` 之外，您將無法解密任何秘密版本。如果您有其他要保留存取的標記秘密版本，則需要使用 [AWS CLI](#manage_update-encryption-key_CLI)，以新的加密金鑰重新建立這些版本。

**若要變更秘密的加密金鑰 (主控台)**

1. 於 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 開啟 Secrets Manager 主控台。

1. 從秘密清單中選擇秘密。

1. 在秘密詳細資訊頁面上，在**秘密詳細資訊**區段中，選擇**動作**，然後選擇**編輯加密金鑰**。

## AWS CLI
<a name="manage_update-encryption-key_CLI"></a>

如果您變更秘密的加密金鑰，然後停用先前的加密金鑰，則除了 `AWSCURRENT`、`AWSPENDING` 和 `AWSPREVIOUS` 之外，您將無法解密任何秘密版本。如果您有其他要保留存取的標記秘密版本，則需要使用 [AWS CLI](#manage_update-encryption-key_CLI)，以新的加密金鑰重新建立這些版本。

**若要變更秘密的加密金鑰 (AWS CLI)**

1. 下列 [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/update-secret.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/update-secret.html) 範例會更新用於加密機密值的 KMS 金鑰。KMS 金鑰必須位於與機密相同的區域。

   ```
   aws secretsmanager update-secret \
         --secret-id MyTestSecret \
         --kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
   ```

1. (選擇性) 如果您有具有自訂標籤的秘密版本，若要使用新金鑰重新加密，則您必須重新建立這些版本。

   在命令 shell 中輸入命令時，存在命令歷史記錄被存取或公用程式存取命令參數的風險。請參閱 [降低使用 AWS CLI 存放 AWS Secrets Manager 秘密的風險](security_cli-exposure-risks.md)。

   1. 取得秘密版本的值。

      ```
      aws secretsmanager get-secret-value \
            --secret-id MyTestSecret \
            --version-stage MyCustomLabel
      ```

      記下秘密值。

   1. 使用該值建立新版本。

      ```
      aws secretsmanager put-secret-value \
          --secret-id testDescriptionUpdate \
          --secret-string "SecretValue" \
          --version-stages "MyCustomLabel"
      ```