

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

# 搭配 AWS 服務使用 AWS KMS 加密
<a name="service-integration"></a>

使用 AWS Key Management Service，您可以提供加密金鑰來保護其他服務中的資料 AWS 。將 AWS KMS 加密與 AWS 服務搭配使用是指 AWS KMS 與其他 AWS 服務整合的程序，以加密和解密靜態或傳輸中的資料。開發人員、系統管理員和安全專業人員可能對本主題感興趣，以保護透過 AWS 服務存放或傳輸的敏感資料、符合法規合規要求，或實作加密最佳實務。常見的使用案例包括加密 Amazon EBS 磁碟區、Amazon S3 儲存貯體和 Amazon RDS 資料庫。以下各節將涵蓋設定和管理特定 AWS 服務的 AWS KMS 加密金鑰的步驟，以確保整個 AWS 環境的資料機密性和完整性。如需整合 AWS 的服務完整清單 AWS KMS，請參閱 [AWS 服務整合](https://aws.amazon.com/kms/features/#AWS_Service_Integration)。

下列主題詳細討論特定服務如何使用 AWS KMS，包括他們支援的 KMS 金鑰、他們如何管理資料金鑰、他們需要的許可，以及如何追蹤每個服務對您帳戶中 KMS 金鑰的使用。

**重要**  
[AWS 與 整合的 服務 AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration)僅使用對稱加密 KMS 金鑰來加密您的資料。這些服務不支援使用非對稱 KMS 金鑰進行加密。如需有關如何判斷 KMS 金鑰是對稱還是不對稱的說明，請參閱[識別不同的金鑰類型](identify-key-types.md)。

**Topics**
+ [Amazon Elastic Block Store (Amazon EBS)](services-ebs.md)
+ [Amazon EMR](services-emr.md)
+ [Amazon Redshift](services-redshift.md)

# Amazon Elastic Block Store (Amazon EBS) 如何使用 AWS KMS
<a name="services-ebs"></a>

本主題詳細討論 [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) 如何使用 AWS KMS 來加密磁碟區和快照。對於加密 Amazon EBS 磁碟區的基本說明，請參閱 [Amazon EBS 加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)。

**Topics**
+ [Amazon EBS 加密](#ebs-encrypt)
+ [使用 KMS 金鑰和資料金鑰](#ebs-cmk)
+ [Amazon EBS 加密內容](#ebs-encryption-context)
+ [偵測 Amazon EBS 失敗](#ebs-failures)
+ [使用 AWS CloudFormation 建立加密的 Amazon EBS 磁碟區](#ebs-encryption-using-cloudformation)

## Amazon EBS 加密
<a name="ebs-encrypt"></a>

當您連接加密 Amazon EBS 磁碟區到[支援的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體類型](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances)，存放在磁碟區的靜態資料、磁碟輸入/輸出，以及從磁碟區建立的快照全部都會加密。加密在託管 Amazon EC2 執行個體的伺服器上進行。

所有 [Amazon EBS 磁碟區類型](https://docs.aws.amazon.com/ebs-encryption-requirements.html#ebs-encryption-volume-types)都支援此功能。您存取加密磁碟區方式與存取其他磁碟區的方式相同；加密和解密的處理過程皆相當透明，不需要您、您的 EC2 執行個體或您的應用程式進行任何額外動作。加密磁碟區的快照會自動加密，而從加密快照建立的磁碟區也會自動加密。

EBS 磁碟區的加密狀態取決於您建立磁碟區時。您不能改變現有磁碟區的加密狀態。不過，您可以在加密和未加密的磁碟區之間[遷移資料](https://docs.aws.amazon.com//ebs/latest/userguide/how-ebs-encryption-works.html)，並在複製快照時套用新的加密狀態。

Amazon EBS 預設支援可選的加密。您可以在 AWS 帳戶 和 區域中的所有新 EBS 磁碟區和快照複本上自動啟用加密。此組態設定不會影響現有的磁碟區或快照。如需詳細資訊，請參閱《[Amazon EBS 使用者指南》中的 Amazon EBS 加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)。 **

## 使用 KMS 金鑰和資料金鑰
<a name="ebs-cmk"></a>

[建立加密的 Amazon EBS 磁碟區](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)時，您可以指定 AWS KMS key。根據預設，Amazon EBS 會使用您帳戶 (`aws/ebs`) 中的 Amazon EBS [AWS 受管金鑰](concepts.md#aws-managed-key)。但是，您可以指定您建立和管理的[客戶受管金鑰](concepts.md#customer-mgn-key)。

若要使用客戶受管金鑰，您必須授予 Amazon EBS 許可，才能代表您使用 KMS 金鑰。如需詳細資訊，請參閱[《Amazon EBS 使用者指南》中的 Amazon EBS 加密如何運作](https://docs.aws.amazon.com//ebs/latest/userguide/how-ebs-encryption-works.html)。 **

**重要**  
Amazon EBS 只支援[對稱 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)。您無法使用[非對稱 KMS 金鑰](symmetric-asymmetric.md)來加密 Amazon EBS 磁碟區。如需判斷 KMS 金鑰是對稱還是不對稱的說明，請參閱 [識別不同的金鑰類型](identify-key-types.md)。

對於每個磁碟區，Amazon EBS AWS KMS 會要求 產生以您指定的 KMS 金鑰加密的唯一資料金鑰。Amazon EBS 會隨著磁碟區存放加密的資料金鑰。然後，當您將磁碟區連接到 Amazon EC2 執行個體時，Amazon EBS 會呼叫 AWS KMS 來解密資料金鑰。Amazon EBS 使用存放在 Hypervisor 記憶體的純文字資料金鑰來加密所有磁碟區的磁碟輸入/輸出。如需詳細資訊，請參閱《[Amazon EC2 使用者指南》](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#how-ebs-encryption-works)或《[Amazon EC2 使用者指南](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EBSEncryption.html#how-ebs-encryption-works)》中的 *EBS 加密如何運作*。

## Amazon EBS 加密內容
<a name="ebs-encryption-context"></a>

在其 [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求中 AWS KMS，Amazon EBS 會使用加密內容搭配識別請求中磁碟區或快照的名稱值對。加密內容中的名稱會維持不變。

[加密內容](encrypt_context.md)是一組金鑰/值對，其中包含任意非私密資料。當您在加密資料的請求中包含加密內容時， 會以 AWS KMS 加密方式將加密內容繫結至加密的資料。若要解密資料，您必須傳遞相同的加密內容。

針對使用 Amazon EBS [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html) 操作建立的所有磁碟區和加密的快照，Amazon EBS 會使用磁碟區 ID 作為加密內容值。在 CloudTrail 日誌項目的 `requestParameters` 欄位中，加密內容看起來如下：

```
"encryptionContext": {
  "aws:ebs:id": "vol-0cfb133e847d28be9"
}
```

針對使用 Amazon EC2 [CopySnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html) 操作建立的加密快照，Amazon EBS 會使用快照 ID 作為加密內容值。在 CloudTrail 日誌項目的 `requestParameters` 欄位中，加密內容看起來如下：

```
"encryptionContext": {
  "aws:ebs:id": "snap-069a655b568de654f"
}
```

## 偵測 Amazon EBS 失敗
<a name="ebs-failures"></a>

為了建立加密的 EBS 磁碟區或將磁碟區連接到 EC2 執行個體，Amazon EBS 和 Amazon EC2 基礎設施必須能夠使用您為 EBS 磁碟區加密指定的 KMS 金鑰。當 KMS 金鑰無法使用，例如，當其[金鑰狀態](key-state.md)不是 `Enabled` 時，磁碟區建立或磁碟區連接會失敗。

 在這種情況下，Amazon EBS 會傳送*事件*給 Amazon EventBridge (原稱為 CloudWatch Events)，通知您作業失敗。您可以使用 EventBridge 建立規則，觸發可自動執行的動作來回應這些事件。如需詳細資訊，請參閱《[Amazon EBS 使用者指南》中的 Amazon CloudWatch Events for](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html) *Amazon EBS*，特別是下列章節：
+ [磁碟區連接或重新連接時的無效加密金鑰](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html#attach-fail-key)
+ [建立磁碟區時的無效加密金鑰](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html#create-fail-key)

若要修正這些問題，請確保您為 EBS 磁碟區加密指定的 KMS 金鑰已啟用。若要執行此作業，請先[檢視 KMS 金鑰](viewing-keys.md)以判斷其目前的金鑰狀態 ( 中的**狀態**欄 AWS 管理主控台)。接著，查看下列其中一個連結的相關資訊：
+ 如果 KMS 金鑰的金鑰狀態為已停用，則請[啟用](enabling-keys.md)。
+ 如果 KMS 金鑰的金鑰狀態為待匯入，則請[匯入金鑰材料](importing-keys.md)。
+ 如果 KMS 金鑰的金鑰狀態為待刪除，則請[取消金鑰刪除](deleting-keys-scheduling-key-deletion.md)。

## 使用 AWS CloudFormation 建立加密的 Amazon EBS 磁碟區
<a name="ebs-encryption-using-cloudformation"></a>

您可以使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/) 來建立加密的 Amazon EBS 磁碟區。如需詳細資訊，請參閱《*AWS CloudFormation 使用者指南*》中的 [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html)。

# Amazon EMR 如何使用 AWS KMS
<a name="services-emr"></a>

當使用 [Amazon EMR](https://aws.amazon.com/emr/) 叢集時，您可以在將資料儲存至持久性儲存位置之前，設定叢集加密*靜態*資料。您可以加密 EMR 檔案系統 (EMRFS)、叢集節點之儲存磁碟區，或兩者上的靜態資料。若要靜態加密資料，您可以使用 AWS KMS key。下列主題說明 Amazon EMR 叢集如何使用 KMS 金鑰來加密靜態資料。

**重要**  
Amazon EMR 僅支援[對稱 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)。您無法使用[非對稱 KMS 金鑰](symmetric-asymmetric.md)來加密 Amazon EMR 叢集中的靜態資料。如需有關如何判斷 KMS 金鑰是對稱還是不對稱的說明，請參閱[識別不同的金鑰類型](identify-key-types.md)。

Amazon EMR 叢集也會加密*傳輸中*的資料，這表示叢集會在透過網路傳送資料之前進行加密。您不能使用 KMS 金鑰加密傳輸中的資料。如需詳細資訊，請參閱《*Amazon EMR 管理指南*》中的[傳輸資料加密](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html#emr-encryption-intransit)。

如需 Amazon EMR 中所有可用加密選項的詳細資訊，請參閱《*Amazon EMR 管理指南*》中的[加密選項](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)。

**Topics**
+ [加密 EMR 檔案系統 (EMRFS) 上的資料](#emrfs-encryption)
+ [加密叢集節點之儲存磁碟區上的資料](#emr-local-disk-encryption)
+ [加密內容](#emr-encryption-context)

## 加密 EMR 檔案系統 (EMRFS) 上的資料
<a name="emrfs-encryption"></a>

Amazon EMR 叢集使用兩個分散式檔案系統：
+ Hadoop 分散式檔案系統 (HDFS)。HDFS 加密不使用 AWS KMS中的 KMS 金鑰。
+ EMR 檔案系統 (EMRFS)。EMRFS 是 HDFS 實作，可讓 Amazon EMR 叢集將資料存放在 Amazon Simple Storage Service (Amazon S3) 中。EMRFS 支援四種加密選項，其中兩種使用 AWS KMS中的 KMS 金鑰。如需所有四個 EMRFS 加密選項的詳細資訊，請參閱《*Amazon EMR 管理指南*》中的[加密選項](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)。

使用 KMS 金鑰的兩個 EMRFS 加密選項使用 Amazon S3 提供的以下加密功能：
+ [使用伺服器端加密搭配 AWS Key Management Service (SSE-KMS) 保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。Amazon EMR 叢集會將資料傳送至 Simple Storage Service (Amazon S3)。Simple Storage Service (Amazon S3) 使用 KMS 金鑰來加密資料，然後將其儲存至 S3 儲存貯體。如需此操作如何進行的詳細資訊，請參閱[使用 SSE-KMS 加密 EMRFS 上資料的程序](#emrfs-encryption-sse-kms)。
+ [使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html) (CSE-KMS)。Amazon EMR 中的資料在 AWS KMS key 下加密，然後將其傳送至 Simple Storage Service (Amazon S3) 進行儲存。如需此操作如何進行的詳細資訊，請參閱[使用 CSE-KMS 加密 EMRFS 上資料的程序](#emrfs-encryption-cse-kms)。

當您設定 Amazon EMR 叢集在 EMRFS 上使用 KMS 金鑰來加密資料時，您可以選擇您想要 Simple Storage Service (Amazon S3) 或 Amazon EMR 叢集使用的 KMS 金鑰。使用 SSE-KMS，您可以選擇具有別名 **aws/s3** 的 Amazon S3 AWS 受管金鑰 ，或您建立的對稱客戶受管金鑰。使用用戶端加密時，您必須選擇您建立的對稱客戶受管金鑰。選擇客戶受管金鑰時，您必須確保 Amazon EMR 叢集具有使用 KMS 金鑰的許可。如需詳細資訊，請參閱《*Amazon EMR 管理指南*》中的[使用 AWS KMS keys 進行加密](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-awskms-keys)。

對於伺服器端和用戶端加密，您選擇的 KMS 金鑰是[信封加密](kms-cryptography.md#enveloping)工作流程中的根金鑰。資料會使用在 KMS 金鑰下加密的唯一[資料](data-keys.md)金鑰進行加密 AWS KMS。加密的資料及其資料金鑰的加密副本會以單一加密物件一起存放在 S3 儲存貯體中。如需其如何運作的詳細資訊，請參閱下列主題。

**Topics**
+ [使用 SSE-KMS 加密 EMRFS 上資料的程序](#emrfs-encryption-sse-kms)
+ [使用 CSE-KMS 加密 EMRFS 上資料的程序](#emrfs-encryption-cse-kms)

### 使用 SSE-KMS 加密 EMRFS 上資料的程序
<a name="emrfs-encryption-sse-kms"></a>

設定 Amazon EMR 叢集使用 SSE-KMS 時，加密程序的運作方式如下：

1. 叢集將資料傳送至 Amazon S3 以便儲存在 S3 儲存貯體中。

1. Amazon S3 將 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 請求傳送至 AWS KMS，指定您在將叢集設定為使用 SSE-KMS 時所選 KMS 金鑰的金鑰 ID。請求包含加密內容；如需詳細資訊，請參閱[加密內容](#emr-encryption-context)。

1. AWS KMS 會產生唯一的資料加密金鑰 （資料金鑰），然後將此資料金鑰的兩個副本傳送至 Amazon S3。一個複本是未加密的 (純文字)，另一個複本則透過 KMS 金鑰加密。

1. Amazon S3 使用純文字資料金鑰來加密它在步驟 1 收到的資料，然後在使用後盡快從記憶體移除純文字資料金鑰。

1. Amazon S3 將加密的資料及資料金鑰的加密複本以單一加密物件一起存放在 S3 儲存貯體中。

解密程序的運作方式如下：

1. 叢集向 S3 儲存貯體請求加密的資料物件。

1. Amazon S3 從 S3 物件擷取加密的資料金鑰，然後使用 AWS KMS [解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求將加密的資料金鑰傳送至 。此請求包含[加密內容](encrypt_context.md)。

1. AWS KMS 使用用來加密的相同 KMS 金鑰來解密加密的資料金鑰，然後將解密的 （純文字） 資料金鑰傳送至 Amazon S3。

1. Amazon S3 使用純文字資料金鑰來解密加密的資料，然後在使用後盡快從記憶體移除純文字資料金鑰。

1. Amazon S3 將解密的資料傳送給叢集。

### 使用 CSE-KMS 加密 EMRFS 上資料的程序
<a name="emrfs-encryption-cse-kms"></a>

設定 Amazon EMR 叢集使用 CSE-KMS 時，加密程序的運作方式如下：

1. 準備好將資料存放在 Amazon S3 時，叢集會傳送 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 請求至 AWS KMS，指定您在將叢集設定為使用 CSE-KMS 時所選 KMS 金鑰的金鑰 ID。請求包含加密內容；如需詳細資訊，請參閱[加密內容](#emr-encryption-context)。

1. AWS KMS 會產生唯一的資料加密金鑰 （資料金鑰），然後將此資料金鑰的兩個副本傳送至叢集。一個複本是未加密的 (純文字)，另一個複本則透過 KMS 金鑰加密。

1. 叢集使用純文字資料金鑰來加密資料，然後在使用後盡快從記憶體移除純文字資料金鑰。

1. 叢集將加密的資料及資料金鑰的加密副本合併為單一加密物件。

1. 叢集將加密的物件傳送到 Amazon S3 以便儲存。

解密程序的運作方式如下：

1. 叢集向 S3 儲存貯體請求加密的資料物件。

1. Amazon S3 傳送加密的物件給叢集。

1. 叢集會從加密的物件擷取加密的資料金鑰，然後使用 AWS KMS [解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求將加密的資料金鑰傳送至 。此請求包含[加密內容](encrypt_context.md)。

1. AWS KMS 使用用來加密的相同 KMS 金鑰來解密加密的資料金鑰，然後將解密的 （純文字） 資料金鑰傳送至叢集。

1. 叢集使用純文字資料金鑰來解密加密的資料，然後在使用後盡快從記憶體移除純文字資料金鑰。

## 加密叢集節點之儲存磁碟區上的資料
<a name="emr-local-disk-encryption"></a>

Amazon EMR 叢集是 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的集合。叢集中的每個執行個體稱為*叢集節點*或*節點*。每個節點可以有兩種類型的儲存磁碟區：執行個體存放磁碟區和 Amazon Elastic Block Store (Amazon EBS) 磁碟區。您可以設定叢集為使用 [Linux 統一金鑰設定 (LUKS)](https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md) 來加密節點上的這兩種儲存磁碟區類型 (但不包含每個節點的開機磁碟區)。這稱為*本機磁碟加密*。

當您啟用叢集的本機磁碟加密時，可以選擇使用 AWS KMS中的 KMS 金鑰來加密 LUKS 金鑰。您必須選擇您建立的[客戶受管金鑰](concepts.md#customer-mgn-key)，您無法使用 [AWS 受管金鑰](concepts.md#aws-managed-key)。如果選擇客戶受管金鑰，則您必須確保 Amazon EMR 叢集具有使用 KMS 金鑰的許可。如需詳細資訊，請參閱《*Amazon EMR 管理指南*》中的[使用 AWS KMS keys 進行加密](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-awskms-keys)。

當您啟用使用 KMS 金鑰的本機磁碟加密，加密程序的運作方式如下：

1. 當每個叢集節點啟動時，它會傳送 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 請求給 AWS KMS，指定您在為叢集啟用本機磁碟加密時選擇的 KMS 金鑰的金鑰 ID。

1. AWS KMS 會產生唯一的資料加密金鑰 （資料金鑰），然後將此資料金鑰的兩個副本傳送至節點。一個複本是未加密的 (純文字)，另一個複本則透過 KMS 金鑰加密。

1. 節點使用純文字資料金鑰的 base64 編碼版本做為保護 LUKS 金鑰的密碼。節點將資料金鑰的加密副本儲存在開機磁碟區。

1. 如果節點重新啟動，重新啟動的節點會使用 AWS KMS [解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求將加密的資料金鑰傳送至 。

1. AWS KMS 使用用來加密的相同 KMS 金鑰來解密加密的資料金鑰，然後將解密的 （純文字） 資料金鑰傳送至節點。

1. 節點使用純文字資料金鑰的 base64 編碼版本做為解鎖 LUKS 金鑰的密碼。

## 加密內容
<a name="emr-encryption-context"></a>

與 整合的每個 AWS 服務 AWS KMS 都可以在服務 AWS KMS 用來產生資料金鑰或加密或解密資料時指定加密[內容](encrypt_context.md)。加密內容是額外的驗證資訊， AWS KMS 用於檢查資料完整性。當服務指定加密操作的加密內容，它必須為相對應的解密操作指定相同的加密內容，否則解密將失敗。加密內容也會寫入 AWS CloudTrail 日誌檔案，這可協助您了解使用特定 KMS 金鑰的原因。

以下章節說明使用 KMS 金鑰之每個 Amazon EMR 加密案例所用的加密內容。

### 使用 SSE-KMS 進行 EMRFS 加密的加密內容
<a name="emr-encryption-context-sse-kms"></a>

透過 SSE-KMS，Amazon EMR 叢集會傳送資料至 Amazon S3，接著 Amazon S3 使用 KMS 金鑰加密資料，然後將其儲存到 S3 儲存貯體。在此情況下，Amazon S3 會使用 S3 物件的 Amazon Resource Name (ARN) 作為加密內容，其中包含其傳送的每個 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求 AWS KMS。以下範例顯示 Amazon S3 所用加密內容的 JSON 顯示方式。

```
{ "aws:s3:arn" : "arn:aws:s3:::S3_bucket_name/S3_object_key" }
```

### 使用 CSE-KMS 進行 EMRFS 加密的加密內容
<a name="emr-encryption-context-cse-kms"></a>

透過 CSE-KMS，Amazon EMR 叢集使用 KMS 金鑰加密資料，然後將其傳送到 Amazon S3 儲存貯體儲存。在此情況下，叢集會使用 KMS 金鑰的 Amazon Resource Name (ARN) 做為加密內容，其中包含其傳送的每個 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求 AWS KMS。以下範例顯示叢集所用加密內容的 JSON 顯示方式。

```
{ "kms_cmk_id" : "arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef" }
```

### 使用 LUKS 進行本機磁碟加密的加密內容
<a name="emr-encryption-context-luks"></a>

當 Amazon EMR 叢集使用搭配 LUKS 的本機磁碟加密時，叢集節點不會指定加密內容，其中包含其傳送至 AWS KMS的 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求。

# Amazon Redshift 如何使用 AWS KMS
<a name="services-redshift"></a>

本主題討論 Amazon Redshift 如何使用 AWS KMS 來加密資料。

**Topics**
+ [Amazon Redshift 加密](#rs-encryption)
+ [加密內容](#rs-encryptioncontext)

## Amazon Redshift 加密
<a name="rs-encryption"></a>

Amazon Redshift 資料倉儲是稱為節點的運算資源的集合，組織成稱為叢集的群組。每個叢集皆執行 Amazon Redshift 引擎並包含一或多個資料庫。

Amazon Redshift 使用四個階層的金鑰架構來加密。此架構包含資料加密金鑰、資料庫金鑰、叢集金鑰和根金鑰。您可以使用 AWS KMS key 做為根金鑰。

資料加密金鑰會加密叢集中的資料區塊。每個資料區塊都會獲指派一個隨機產生的 AES-256 金鑰。這些金鑰使用叢集的資料庫金鑰來加密。

資料庫金鑰會加密叢集中的資料加密金鑰。資料庫金鑰是隨機產生的 AES-256 金鑰。它會存放在與 Amazon Redshift 叢集不同之網路的磁碟上，並透過安全通道傳送給叢集。

叢集金鑰會加密 Amazon Redshift 叢集的資料庫金鑰。您可以使用 AWS KMS AWS CloudHSM、 或外部硬體安全模組 (HSM) 來管理叢集金鑰。請參閱 [Amazon Redshift Database 加密](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html)文件以取得更多詳細資訊。

您可以在 Amazon Redshift 主控台中勾選適當的方塊來請求加密。您可以從加密方塊下方的清單中選擇一個項目，指定要[客戶受管金鑰](concepts.md#customer-mgn-key)。如果您未指定客戶受管金鑰，Amazon Redshift 會在您的帳戶下使用 Amazon Redshift 的 [AWS 受管金鑰](concepts.md#aws-managed-key)。

**重要**  
Amazon Redshift 只支援對稱加密 KMS 金鑰。您無法在 Amazon Redshift 加密工作流程中使用非對稱 KMS 金鑰。如需判斷 KMS 金鑰是對稱還是不對稱的說明，請參閱 [識別不同的金鑰類型](identify-key-types.md)。

## 加密內容
<a name="rs-encryptioncontext"></a>

與 整合的每個服務會在請求資料金鑰、加密和解密時 AWS KMS 指定[加密內容](encrypt_context.md)。加密內容是額外的驗證資料 (AAD)， AWS KMS 用於檢查資料完整性。也就是說，為加密操作指定加密內容時，服務也必須為解密操作指定相同的加密內容，否則解密將無法成功。Amazon Redshift 會使用叢集 ID 和加密內容的建立時間。在 CloudTrail 日誌檔案的 `requestParameters` 欄位中，加密內容看起來如下。

```
"encryptionContext": {
    "aws:redshift:arn": "arn:aws:redshift:region:account_ID:cluster:cluster_name",
    "aws:redshift:createtime": "20150206T1832Z"
},
```

 您可以在 CloudTrail 日誌中搜尋叢集名稱，以了解使用 AWS KMS key (KMS 金鑰） 執行了哪些操作。操作包括叢集加密、叢集解密和產生資料金鑰。