

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

# 靜態加密：在 Amazon Keyspaces 中運作的方式
<a name="encryption.howitworks"></a>

Amazon Keyspaces （適用於 Apache Cassandra) *靜態加密*會使用 256 位元進階加密標準 (AES-256) 加密您的資料。這有助於保護您的資料免於未經授權存取基礎儲存體。根據預設，Amazon Keyspaces 資料表中的所有客戶資料都會靜態加密，且伺服器端加密是透明的，這表示不需要變更應用程式。

靜態加密與 AWS Key Management Service (AWS KMS) 整合，用於管理用來加密資料表的加密金鑰。建立新資料表或更新現有資料表時，您可以選擇下列其中一個*AWS KMS 金鑰*選項：
+ AWS 擁有的金鑰 – 這是預設加密類型。金鑰由 Amazon Keyspaces 擁有 （不收取額外費用）。
+ 客戶受管金鑰 – 此金鑰存放在您的帳戶中，由您建立、擁有和管理。您可以完全控制客戶受管金鑰 （需支付AWS KMS 費用）。

**AWS KMS 金鑰 (KMS 金鑰）**  
靜態加密使用 AWS KMS 金鑰保護您的所有 Amazon Keyspaces 資料。根據預設，Amazon Keyspaces 會使用 [AWS 擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)，這是在 Amazon Keyspaces 服務帳戶中建立和管理的多租戶加密金鑰。  
不過，您可以使用 中的[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)來加密 Amazon Keyspaces 資料表 AWS 帳戶。您可以為金鑰空間中的每個資料表選取不同的 KMS 金鑰。您為資料表選取的 KMS 金鑰也會用來加密其所有中繼資料和可還原的備份。  
建立或更新資料表時，您可以選取資料表的 KMS 金鑰。您可以隨時在 Amazon Keyspaces 主控台或使用 [ALTER TABLE](cql.ddl.keyspace.md#cql.ddl.keyspace.alter) 陳述式來變更資料表的 KMS 金鑰。切換 KMS 金鑰的程序是無縫的，不需要停機時間或導致服務降級。

**金鑰階層**  
Amazon Keyspaces 使用金鑰階層來加密資料。在此金鑰階層中，KMS 金鑰是根金鑰。它用於加密和解密 Amazon Keyspaces 資料表加密金鑰。資料表加密金鑰用於加密 Amazon Keyspaces 在內部使用的加密金鑰，以在執行讀取和寫入操作時加密和解密資料。  
使用加密金鑰階層，您可以對 KMS 金鑰進行變更，而無需重新加密資料或影響應用程式和持續的資料操作。  

![\[金鑰階層顯示根金鑰、資料表加密金鑰，以及用於靜態加密的資料加密金鑰。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/keyspaces_encryption.png)


**資料表索引鍵**  
Amazon Keyspaces 資料表金鑰用作金鑰加密金鑰。Amazon Keyspaces 使用資料表金鑰來保護內部資料加密金鑰，這些金鑰用於加密存放在資料表、日誌檔案和可還原備份中的資料。Amazon Keyspaces 會為資料表中的每個基礎結構產生唯一的資料加密金鑰。不過，多個資料表資料列可能受到相同的資料加密金鑰保護。  
當您第一次將 KMS 金鑰設定為客戶受管金鑰時， AWS KMS 會產生*資料金鑰*。 AWS KMS 資料金鑰是指 Amazon Keyspaces 中的資料表金鑰。  
當您存取加密的資料表時，Amazon Keyspaces 會傳送請求至 AWS KMS ，以使用 KMS 金鑰解密資料表金鑰。然後，它會使用純文字資料表金鑰來解密 Amazon Keyspaces 資料加密金鑰，並使用純文字資料加密金鑰來解密資料表資料。  
Amazon Keyspaces 使用 並將資料表金鑰和資料加密金鑰存放在 外部 AWS KMS。它使用[進階加密標準](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) 加密和 256 位元加密金鑰來保護所有金鑰。然後，它會將加密的金鑰與加密的資料一起存放，以便他們可以隨需解密資料表資料。

**資料表金鑰快取**  
為了避免 AWS KMS 呼叫每個 Amazon Keyspaces 操作，Amazon Keyspaces 會快取記憶體中每個連線的純文字資料表金鑰。如果 Amazon Keyspaces 在閒置五分鐘後收到快取資料表金鑰的請求，則會將新的請求傳送至 AWS KMS 以解密資料表金鑰。此呼叫會擷取自上次請求解密資料表金鑰以來，對 AWS KMS 或 AWS Identity and Access Management (IAM) 中 KMS 金鑰的存取政策所做的任何變更。

**封套加密**  
如果您變更資料表的客戶受管金鑰，Amazon Keyspaces 會產生新的資料表金鑰。然後，它會使用新的資料表金鑰來重新加密資料加密金鑰。它也會使用新的資料表金鑰來加密先前用於保護可還原備份的資料表金鑰。此程序稱為信封加密。這可確保即使您輪換客戶受管金鑰，也可以存取可還原的備份。如需信封加密的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。

**Topics**
+ [AWS 擁有的金鑰](#keyspaces-owned)
+ [客戶受管金鑰](#customer-managed)
+ [靜態加密用量備註](#encryption.usagenotes)

## AWS 擁有的金鑰
<a name="keyspaces-owned"></a>

AWS 擁有的金鑰 不會存放在您的 中 AWS 帳戶。它們是 KMS 金鑰集合的一部分，這些金鑰 AWS 擁有和管理用於 multiple AWS 帳戶。 AWS services 可用來 AWS 擁有的金鑰 保護您的資料。

您無法檢視、管理或使用 AWS 擁有的金鑰或稽核其使用。不過，您不需要進行任何工作或變更任何程式，即可保護加密資料的金鑰。

您不需要支付每月費用或使用費 AWS 擁有的金鑰，也不會計入您帳戶的 AWS KMS 配額。

## 客戶受管金鑰
<a name="customer-managed"></a>

客戶受管金鑰是您 AWS 帳戶 建立、擁有和管理的 金鑰。您可以完全控制這些 KMS 金鑰。

使用客戶受管金鑰來取得下列功能：
+ 您可以建立和管理客戶受管金鑰，包括設定和維護[金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)、[IAM 政策和](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)[授予](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) 以控制對客戶受管金鑰的存取。您可以[啟用和停用](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)客戶受管金鑰、啟用和停用[自動金鑰輪換](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)，並在不再使用時[排定刪除客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html)。您可以為您管理的客戶受管金鑰建立標籤和別名。
+ 您可以搭配[匯入的金鑰材料](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)使用客戶受管金鑰，或是使用位於您所擁有及管理[自訂金鑰存放區](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html)中的客戶受管金鑰。
+ 您可以使用 AWS CloudTrail 和 Amazon CloudWatch Logs 來追蹤 Amazon Keyspaces AWS KMS 代表您傳送到 的請求。如需詳細資訊，請參閱[步驟 6：使用 設定監控 AWS CloudTrail](encryption.customermanaged.md#encryption-cmk-trail)。

客戶受管金鑰會針對每個 API 呼叫[產生費用](https://aws.amazon.com/kms/pricing/)，而配額適用於這些 KMS AWS KMS 金鑰。如需詳細資訊，請參閱[AWS KMS 資源或請求配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

當您將客戶受管金鑰指定為資料表的根加密金鑰時，可還原備份會使用建立備份時為資料表指定的相同加密金鑰進行加密。如果輪換資料表的 KMS 金鑰，金鑰包圍可確保最新的 KMS 金鑰可存取所有可還原的備份。

Amazon Keyspaces 必須能夠存取您的客戶受管金鑰，才能讓您存取資料表資料。如果加密金鑰的狀態設定為停用或排定刪除，Amazon Keyspaces 將無法加密或解密資料。因此，您無法在資料表上執行讀取和寫入操作。一旦服務偵測到您的加密金鑰無法存取，Amazon Keyspaces 就會傳送電子郵件通知，提醒您。

您必須在七天內還原加密金鑰的存取權，否則 Amazon Keyspaces 會自動刪除您的資料表。基於預防措施，Amazon Keyspaces 會在刪除資料表之前建立資料表資料的可還原備份。Amazon Keyspaces 會維護可還原備份 35 天。35 天後，您無法再還原資料表資料。您不需要支付可還原備份的費用，但[需支付標準還原費用](https://aws.amazon.com/keyspaces/pricing)。

您可以使用此可還原備份，將資料還原至新的資料表。若要啟動還原，必須啟用用於資料表的最後一個客戶受管金鑰，Amazon Keyspaces 必須具有其存取權。

**注意**  
當您建立使用客戶受管金鑰加密的資料表時，在建立程序完成之前無法存取或排程刪除，會發生錯誤。建立資料表操作失敗，且您會收到電子郵件通知。

## 靜態加密用量備註
<a name="encryption.usagenotes"></a>

當您在 Amazon Keyspaces 中使用靜態加密時，請考慮下列事項。
+ 所有 Amazon Keyspaces 資料表上都會啟用靜態伺服器端加密，且無法停用。整個資料表會靜態加密，您無法選取特定資料欄或資料列進行加密。
+ 根據預設，Amazon Keyspaces 會使用單一服務預設金鑰 (AWS 擁有的金鑰) 來加密所有資料表。如果此金鑰不存在，則會為您建立。無法停用服務預設金鑰。
+ 靜態加密只會在資料在持久性儲存媒體上靜態 （靜態） 時加密資料。如果資料安全是傳輸中資料或使用中資料的考量，您必須採取其他措施：
  + 傳輸中資料：您在 Amazon Keyspaces 中的所有資料都會在傳輸中加密。根據預設，Amazon Keyspaces 的通訊會使用 Secure Sockets Layer (SSL)/Transport Layer Security (TLS) 加密進行保護。
  + 使用中的資料：使用用戶端加密，在將資料傳送到 Amazon Keyspaces 之前保護資料。
  + 客戶受管金鑰：資料表中的靜態資料一律使用客戶受管金鑰加密。不過，在處理 AWS 擁有的金鑰 期間執行多列原子更新的操作會暫時使用 來加密資料。這包括範圍刪除操作和同時存取靜態和非靜態資料的操作。
+ 單一客戶受管金鑰最多可有 50，000 個[授予](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。與客戶受管金鑰相關聯的每個 Amazon Keyspaces 資料表都會耗用 2 個授與。刪除資料表時，會釋出一個授予。第二個授權用於建立資料表的自動快照，以防止資料遺失，以防 Amazon Keyspaces 意外遺失對客戶受管金鑰的存取。此授與會在刪除資料表後 42 天發行。