

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

# 產生資料金鑰
<a name="data-keys"></a>

*資料金鑰*是對稱金鑰，可用於加密資料，包括大量資料和其他資料加密金鑰。與無法下載的對稱 KMS 金鑰不同，資料金鑰會傳回給您，以便在 外部使用 AWS KMS。

當 AWS KMS 產生資料金鑰時，它會傳回純文字資料金鑰以供立即使用 （選用），以及您可以安全地與資料一起存放的資料金鑰加密副本。當您準備好解密資料時，請先要求 AWS KMS 解密加密的資料金鑰。

AWS KMS 會產生、加密和解密資料金鑰。不過， AWS KMS 不會存放、管理或追蹤您的資料金鑰，也不會使用資料金鑰執行密碼編譯操作。您必須使用和管理 外部的資料金鑰 AWS KMS。如需安全使用資料金鑰的說明，請參閱 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)。

**Topics**
+ [建立資料金鑰](#data-keys-create)
+ [使用資料金鑰進行密碼編譯操作的運作方式](#use-data-keys)
+ [無法使用的 KMS 金鑰如何影響資料金鑰](unusable-kms-keys.md)

## 建立資料金鑰
<a name="data-keys-create"></a>

若要建立資料金鑰，請呼叫 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 操作。 AWS KMS 產生資料金鑰。然後它會加密在您指定的[對稱加密 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)下的資料金鑰複本。操作會傳回資料金鑰的純文字複本和以 KMS 金鑰加密的資料金鑰複本。下圖顯示此操作。

![\[產生資料金鑰\]](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/images/generate-data-key.png)


AWS KMS 也支援 [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 操作，只會傳回加密的資料金鑰。當您需要使用資料金鑰時，請 AWS KMS 將其[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)。

## 使用資料金鑰進行密碼編譯操作的運作方式
<a name="use-data-keys"></a>

下列主題說明 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 或 [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 操作所產生的資料金鑰如何運作。

### 使用資料金鑰來加密資料
<a name="data-keys-encrypt"></a>

AWS KMS 無法使用資料金鑰來加密資料。但是，您可以在 外部使用資料金鑰 AWS KMS，例如使用 OpenSSL 或密碼編譯程式庫，例如 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)。

使用純文字資料金鑰加密資料後，請盡快從記憶體中移除該金鑰。您可將加密的資料金鑰與加密的資料安全地存放在一起，以便用來隨需解密資料。

![\[在 外部加密使用者資料 AWS KMS\]](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/images/encrypt-with-data-key.png)


### 使用資料金鑰來解密資料
<a name="data-keys-decrypt"></a>

若要解密您的資料，請將加密的資料金鑰傳遞至 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作。 AWS KMS 會使用 KMS 金鑰來解密資料金鑰，然後傳回純文字資料金鑰。使用純文字資料金鑰來解密您的資料，然後盡快從記憶體中移除純文字資料金鑰。

下圖說明如何使用 `Decrypt` 操作來解密加密的資料金鑰。

![\[解密資料金鑰\]](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/images/decrypt.png)


# 無法使用的 KMS 金鑰如何影響資料金鑰
<a name="unusable-kms-keys"></a>

當 KMS 金鑰變得無法使用時，效果幾乎是即時的 (視最終一致性而定)。KMS 金鑰的[金鑰狀態](key-state.md)變更反映了其最新狀況，所有在[密碼編譯操作](kms-cryptography.md#cryptographic-operations)中使用 KMS 金鑰的請求都將失敗。

但是，對由 KMS 金鑰加密的資料金鑰的影響以及對由資料金鑰加密的資料的影響會延遲，除非再次使用 KMS 金鑰，例如解密資料金鑰。

KMS 金鑰變得無法使用的原因有很多，包括您可能執行的下列動作。
+ [停用 KMS 金鑰](enabling-keys.md)
+ [排程要刪除的 KMS 金鑰](deleting-keys.md)
+ 從具有匯入金鑰材料的 KMS 金鑰中[刪除金鑰材料](importing-keys-delete-key-material.md)，或允許匯入的金鑰材料過期。如果具有`EXTERNAL`原始伺服器的 KMS 金鑰有多個相關聯的金鑰材料，則任何金鑰材料的刪除或過期都會導致金鑰無法使用。
+ [中斷連接託管 KMS 金鑰的 AWS CloudHSM 金鑰存放](disconnect-keystore.md)區，或從做為 KMS [金鑰金鑰材料的 AWS CloudHSM 叢集刪除](fix-keystore.md#fix-cmk-failed)金鑰。
+ [中斷連接託管 KMS 金鑰的外部金鑰存放區](about-xks-disconnecting.md)，或任何其他干擾外部金鑰存放區代理的加密和解密請求的動作，包括從其外部金鑰管理器刪除外部金鑰。

對於許多使用資料金鑰來保護服務管理的資源 AWS 服務 的人來說，此效果特別重要。下列範例使用 Amazon Elastic Block Store (Amazon EBS) 和 Amazon Elastic Compute Cloud (Amazon EC2)。不同的 會以不同的方式 AWS 服務 使用資料金鑰。如需詳細資訊，請參閱 AWS 服務的「安全性」一章的「資料保護」一節。

例如，考量以下情境：

1. 您可以[建立已加密的 EBS 磁碟區](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)，並指定 KMS 金鑰來進行保護。Amazon EBS 會要求 AWS KMS 使用您的 KMS 金鑰來為磁碟區[產生加密資料金鑰](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)。Amazon EBS 會隨著磁碟區的中繼資料存放加密資料金鑰。

1. 當您將 EBS 磁碟區連接到 EC2 執行個體時，Amazon EC2 會使用您的 KMS 金鑰來解密 EBS 磁碟區的加密資料金鑰。Amazon EC2 使用 Nitro 硬體中的資料金鑰，負責將所有磁碟 I/O 加密至 EBS 磁碟區。只要 EBS 磁碟區連接 EC2 執行個體，資料金鑰就會存在 Nitro 硬體。

1. 您執行的動作使 KMS 金鑰無法使用。這不會立即影響 EC2 執行個體或 EBS 磁碟區。當磁碟區連接執行個體時，Amazon EC2 會採用資料金鑰 (而非 KMS 金鑰) 來加密所有磁碟 I/O。

1. 然而，當加密的 EBS 磁碟區從 EC2 執行個體中斷連接時，Amazon EBS 就會從 Nitro 硬體移除資料金鑰。下次再將加密的 EBS 磁碟區連接到 EC2 執行個體，連接會失敗，因為 Amazon EBS 無法使用 KMS 金鑰來解密磁碟區的加密資料金鑰。若要再次使用 EBS 磁碟區，您必須讓 KMS 金鑰變得再次可用。