

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

# 輪換作用中的分支金鑰
<a name="rotate-branch-key"></a>

每個分支金鑰一次只能有一個作用中版本。一般而言，每個作用中分支金鑰版本都會用來滿足多個請求。但是，您可以控制重複使用作用中分支金鑰的程度，並判斷作用中分支金鑰的輪換頻率。

分支金鑰不會用來加密純文字資料金鑰。它們用於衍生加密純文字資料金鑰的唯一包裝金鑰。[包裝金鑰衍生程序](reference.md#hierarchical-keyring-details)會產生唯一的 32 位元組包裝金鑰，具有 28 個位元組的隨機性。這表示分支金鑰可以在密碼編譯耗用發生之前衍生超過 79 個八進制或 296 個唯一的包裝金鑰。雖然耗盡風險非常低，但由於業務或合約規則或政府法規，您可能需要輪換作用中的分支金鑰。

分支金鑰的作用中版本會保持作用中狀態，直到您將其輪換為止。舊版的作用中分支金鑰不會用來執行加密操作，也無法用來衍生新的包裝金鑰，但仍然可以查詢它們並提供包裝金鑰來解密它們在作用中加密的資料金鑰。

**警告**  
在測試環境中刪除分支金鑰是不可復原的。您無法復原已刪除的分支金鑰。當您在測試環境中刪除並重新建立具有相同 ID 的分支金鑰時，可能會發生下列問題：  
先前測試執行的資料可能會保留在快取中
有些測試主機或執行緒可能會使用已刪除的分支金鑰來加密資料
使用已刪除分支加密的資料無法解密
若要防止整合測試中的加密失敗：  
在建立新的分支金鑰之前，請重設階層 keyring 參考或
為每個測試使用唯一的分支金鑰 IDs 

**所需的許可**  
若要輪換分支金鑰，您需要[kms:GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 和 [kms:ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) 許可。

**輪換作用中分支金鑰**  
使用 `VersionKey`操作來輪換作用中的分支金鑰。當您輪換作用中分支金鑰時，會建立新的分支金鑰以取代先前的版本。當您輪換作用中分支金鑰時， `branch-key-id` 不會變更。當您呼叫 時`branch-key-id`，必須指定可識別目前作用中分支金鑰的 `VersionKey`。

------
#### [ Java ]

```
keystore.VersionKey(
    VersionKeyInput.builder()
        .branchKeyIdentifier("branch-key-id")
        .build()
);
```

------
#### [ C\$1 / .NET ]

```
 keystore.VersionKey(new VersionKeyInput{BranchKeyIdentifier = branchKeyId});
```

------
#### [ Rust ]

```
keystore.version_key()
        .branch_key_identifier(branch_key_id)
        .send()
        .await?;
```

------