

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

# Amazon DynamoDB 的加密最佳實務
<a name="dynamodb"></a>

[Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) 是一項全受管 NoSQL 資料庫服務，可提供快速、可預期且可擴展的效能。每當資料儲存在耐用的媒體中時，DynamoDB 靜態加密會保護加密資料表中的資料：包括其主索引鍵、本機及全域次要索引、串流、全域資料表、備份和 DynamoDB Accelerator (DAX) 叢集。

根據資料分類要求，可以透過實作伺服器端或用戶端加密來維護資料機密性和完整性：

對於伺服器端加密，當您建立新資料表時，您可以使用 AWS KMS keys 加密資料表。您可以使用 AWS 擁有的金鑰、 AWS 受管金鑰或客戶受管金鑰。我們建議使用客戶受管金鑰，因為您的組織可以完全控制金鑰，並且當您使用此金鑰類型時，資料表層級加密金鑰、DynamoDB 資料表、本機和全域次要索引以及串流都使用相同的金鑰進行加密。如需這些金鑰類型的詳細資訊，請參閱[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)。

**注意**  
您可以隨時在 AWS 擁有的金鑰、 AWS 受管金鑰和客戶受管金鑰之間切換。

對於靜態資料和傳輸中的資料的用戶端加密和端對端保護，您可以使用 [Amazon DynamoDB Encryption Client](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html)。除了保護項目屬性值機密性的加密之外，DynamoDB Encryption Client 也會簽署項目。這透過啟用偵測對項目的未授權變更 (包括新增或刪除屬性)，或用一個加密值替換另一個加密值，來提供完整性保護。

請考慮此服務的下列加密最佳實務：
+ 將停用或排程刪除金鑰的許可限制為僅需要執行這些任務的人員。這些狀態可避免所有使用者和 DynamoDB 服務可在資料表上加密或解密資料，以及執行讀取和寫入操作。
+ 雖然依預設 DynamoDB 使用 HTTPS 加密傳輸中的資料，但建議使用額外安全控制。您可以使用下列任一選項：
  + AWS Site-to-Site VPN 使用 IPsec 進行加密的 連線。
  + AWS Direct Connect 連線以建立私有連線。
  + AWS Direct Connect 連線與 IPsec 加密私有 AWS Site-to-Site VPN 連線的連線。
  + 如果只需要從虛擬私有雲端 (VPC) 內存取 DynamoDB，您可以使用 VPC 閘道端點並僅允許 VPC 中的資源進行存取。這樣可防止流量周遊公有網際網路。
+ 如果您使用的是 VPC 端點，請將與端點關聯的端點政策和 IAM 政策限制為僅授權使用者、資源及服務。如需詳細資訊，請參閱[使用 IAM 政策控制對 DynamoDB 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-ddb.html#iam-policies-ddb)和[使用端點政策控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。
+ 您可以根據加密政策，在應用程式層級對需要加密的資料實作資料欄層級資料加密。
+ 設定 DAX 叢集以在設定叢集時加密靜態資料，例如快取中的資料、組態資料和日誌檔案。您無法在現有叢集上啟用靜態加密。此伺服器端加密有助於保護資料，防止透過基礎儲存進行未經授權的存取。DAX 靜態加密會自動與 AWS KMS 整合，以管理用於加密叢集的單一服務預設金鑰。如果建立加密的 DAX 叢集時，服務預設金鑰不存在，則 AWS KMS 會自動建立新的 AWS 受管金鑰。如需詳細資訊，請參閱 [DAX 靜態加密](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAXEncryptionAtRest.html)。
**注意**  
客戶受管金鑰無法與 DAX 叢集搭配使用。
+ 設定 DAX 叢集以在設定叢集時加密傳輸中的資料。您無法在現有叢集上啟用傳輸中加密。DAX 使用 TLS 來加密應用程式與叢集之間的請求和回應，並使用叢集的 x509 憑證來驗證叢集的身分。如需詳細資訊，請參閱 [DAX 傳輸中加密](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAXEncryptionInTransit.html)。
+ 在 中 AWS Config，實作[dax-encryption-enabled](https://docs.aws.amazon.com/config/latest/developerguide/dax-encryption-enabled.html) AWS 受管規則，以驗證和維護 DAX 叢集的加密。