

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

# 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 金鑰） 執行了哪些操作。操作包括叢集加密、叢集解密和產生資料金鑰。