

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

# 加密靜態 Amazon DocumentDB 資料
<a name="encryption-at-rest"></a>

**注意**  
AWS KMS 正在將術語*客戶主金鑰 (CMK)* 取代為 *AWS KMS key*和 *KMS 金鑰*。概念並沒有變更。為了防止中斷變更， AWS KMS 會保留此術語的一些變化。

您可以在建立叢集時指定儲存加密選項，以加密 Amazon DocumentDB 叢集中的靜態資料。儲存加密功能一經啟用，範圍擴及整個叢集，並套用到所有執行個體，包括主執行個體和任何複本。它也會套用至叢集的儲存磁碟區、資料、索引、日誌、自動備份和快照。

Amazon DocumentDB 使用 256 位元進階加密標準 (AES-256)，使用存放在 AWS Key Management Service () 中的加密金鑰來加密您的資料AWS KMS。使用啟用靜態加密的 Amazon DocumentDB 叢集時，您不需要修改應用程式邏輯或用戶端連線。Amazon DocumentDB 透明地處理資料的加密和解密，對效能的影響最小。

Amazon DocumentDB 與 整合， AWS KMS 並使用稱為信封加密的方法來保護您的資料。當 Amazon DocumentDB 叢集使用 加密時 AWS KMS，Amazon DocumentDB AWS KMS 會要求 使用您的 KMS 金鑰來[產生加密文字資料金鑰](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)來加密儲存磁碟區。加密文字資料金鑰會使用您定義的 KMS 金鑰進行加密，並與加密的資料和儲存中繼資料一起存放。當 Amazon DocumentDB 需要存取加密的資料時，它會請求使用 KMS 金鑰 AWS KMS 解密加密文字資料金鑰，並在記憶體中快取純文字資料金鑰，以有效率地加密和解密儲存磁碟區中的資料。

Amazon DocumentDB 中的儲存加密設施適用於所有支援的執行個體大小，以及可使用 Amazon DocumentDB 的所有 AWS 區域 執行個體。

## 啟用 Amazon DocumentDB 叢集的靜態加密
<a name="encryption-at-rest-enabling"></a>

您可以使用 或 AWS 管理主控台 AWS Command Line Interface () 佈建叢集時，在 Amazon DocumentDB 叢集上啟用或停用靜態加密AWS CLI。您使用主控台所建立的叢集，依預設會啟用靜態加密。您使用 建立的叢集預設 AWS CLI 會停用靜態加密。因此，您必須使用 `--storage-encrypted` 參數明確啟用靜態加密。在任何一種情況下，當叢集建立之後，您都無法變更靜態加密選項。

Amazon DocumentDB 使用 AWS KMS 來擷取和管理加密金鑰，並定義控制如何使用這些金鑰的政策。如果您未指定 AWS KMS 金鑰識別符，Amazon DocumentDB 會使用預設的 AWS 受管服務 KMS 金鑰。Amazon DocumentDB 會為 AWS 區域 中的每個 建立單獨的 KMS 金鑰 AWS 帳戶。如需詳細資訊，請參閱 [AWS Key Management Service 概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)。

若要開始建立您自己的 KMS 金鑰，請參閱《 *AWS Key Management Service 開發人員指南*》中的[入門](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)。

**重要**  
您必須使用對稱加密 KMS 金鑰來加密叢集，因為 Amazon DocumentDB 僅支援對稱加密 KMS 金鑰。請勿使用非對稱 KMS 金鑰來嘗試加密 Amazon DocumentDB 叢集中的資料。如需詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的 中的[非對稱金鑰 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)。

如果 Amazon DocumentDB 無法再存取叢集的 KMS 金鑰 — 例如，當擁有金鑰 AWS 帳戶 的 暫停、停用金鑰、排程刪除金鑰，或移除 Amazon DocumentDB 依賴的金鑰政策或授權時 — 叢集會先轉換為 `inaccessible-encryption-credentials-recoverable` 狀態。當叢集處於此狀態時，Amazon DocumentDB 會停止叢集的執行個體，您無法從叢集讀取或寫入叢集，但如果在 7 天內還原對 KMS 金鑰的存取，仍可復原叢集。如果未在 7 天內還原存取權，叢集會轉換為終端機`inaccessible-encryption-credentials`狀態。從終端機狀態，叢集不再可用，且資料庫的目前狀態無法復原 - 您只能從備份還原或使用原始 KMS 金鑰執行point-in-time還原。對於 Amazon DocumentDB，備份一律會啟用至少 1 天。

**注意**  
屬於全域叢集的叢集行為不同。當 Amazon DocumentDB 偵測到無法再存取 KMS 金鑰時，全域叢集中的所有叢集會直接轉換為終端機`inaccessible-encryption-credentials`狀態，略過可復原狀態。這是因為屬於全域叢集的叢集只有在它是全域叢集中唯一的叢集時，才能停止和啟動。若要復原，您必須從快照還原或執行point-in-time還原。若要刪除原始叢集，您必須先從全域叢集中移除每個叢集，然後將其刪除。

**重要**  
建立加密叢集之後，就無法變更該叢集的 KMS 金鑰。務必在加密叢集建立之前決定您的加密金鑰需求。

------
#### [ Using the AWS 管理主控台 ]

您可以在建立叢集時指定靜態加密選項。當您使用 AWS 管理主控台建立叢集時，依預設會啟用靜態加密。叢集建立之後就無法變更此選項。

**在建立叢集時指定靜態加密選項**

1. 如[入門](https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-ec2.launch-cluster.html)一節所述建立 Amazon DocumentDB 叢集。不過，在步驟 6 中，請勿選擇 **Create cluster (建立叢集)**。

1. 在 **Authentication (身分驗證)** 區段下，選擇 **Show advanced settings (顯示進階設定)**。

1. 向下捲動到 **Encryption-at-rest (靜態加密)** 區段。

1. 選擇您要靜態加密採用的選項。無論選擇哪個選項，叢集建立之後都無法變更。
   + 若要對此叢集中的資料啟用靜態加密，請選擇 **Enable encryption (啟用加密)**。
   + 如果您不要對此叢集中的資料啟用靜態加密，請選擇 **Disable encryption (停用加密)**。

1. 選擇您想要的主索引鍵。Amazon DocumentDB 使用 AWS Key Management Service (AWS KMS) 來擷取和管理加密金鑰，並定義控制如何使用這些金鑰的政策。如果您未指定 AWS KMS 金鑰識別符，Amazon DocumentDB 會使用預設的 AWS 受管服務 KMS 金鑰。如需詳細資訊，請參閱 [AWS Key Management Service 概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)。
**注意**  
建立加密叢集後，您無法變更該叢集的 KMS 金鑰。務必在加密叢集建立之前決定您的加密金鑰需求。

1. 請視需要完成其他區段，並建立您的叢集。

------
#### [ Using the AWS CLI ]

若要使用 加密 Amazon DocumentDB 叢集 AWS CLI，請執行 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-clusters.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-clusters.html)命令並指定 `--storage-encrypted`選項。根據預設，使用 建立的 Amazon DocumentDB 叢集 AWS CLI 不會啟用儲存加密。

下列範例會建立已啟用儲存加密的 Amazon DocumentDB 叢集。

在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws docdb create-db-cluster \
  --db-cluster-identifier {{mydocdbcluster}} \
  --port 27017 \
  --engine docdb \
  --master-username {{SampleUser1}} \
  --master-user-password {{primaryPassword}} \
  --storage-encrypted
```
針對 Windows：  

```
aws docdb create-db-cluster ^
  --db-cluster-identifier {{SampleUser1}} ^
  --port 27017 ^
  --engine docdb ^
  --master-username {{SampleUser1}} ^
  --master-user-password {{primaryPassword}} ^
  --storage-encrypted
```

當您建立加密的 Amazon DocumentDB 叢集時，您可以指定 AWS KMS 金鑰識別符，如下列範例所示。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws docdb create-db-cluster \
  --db-cluster-identifier {{SampleUser1}} \
  --port 27017 \
  --engine docdb \
  --master-username {{primaryUsername}} \
  --master-user-password {{yourPrimaryPassword}} \
  --storage-encrypted \
  --kms-key-id {{key-arn-or-alias}}
```
針對 Windows：  

```
aws docdb create-db-cluster ^
  --db-cluster-identifier {{SampleUser1}} ^
  --port 27017 ^
  --engine docdb ^
  --master-username {{SampleUser1}} ^
  --master-user-password {{primaryPassword}} ^
  --storage-encrypted ^
  --kms-key-id {{key-arn-or-alias}}
```

**注意**  
建立加密叢集後，您無法變更該叢集的 KMS 金鑰。務必在加密叢集建立之前決定您的加密金鑰需求。

------

## 解決處於無法存取加密狀態的 Amazon DocumentDB 叢集
<a name="encryption-at-rest-inaccessible"></a>

當 Amazon DocumentDB 無法存取叢集加密所用的 KMS 金鑰時，Amazon DocumentDB 叢集會移至無法存取的加密狀態。有兩種這類狀態，而復原路徑取決於叢集所在的狀態。

### `inaccessible-encryption-credentials-recoverable` 狀態
<a name="encryption-at-rest-inaccessible-recoverable"></a>

當叢集處於 `inaccessible-encryption-credentials-recoverable` 狀態時，您可以透過`available`還原 Amazon DocumentDB 對 KMS 金鑰的存取權，然後啟動叢集，將叢集傳回 。若要解決此狀態，請執行下列動作：

1. 確認 AWS 帳戶 擁有 KMS 金鑰的 處於作用中狀態。如果帳戶遭到暫停，請重新啟用。

1. 確認 KMS 金鑰已啟用。如需詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[啟用和停用金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)。

1. 檢查 KMS 金鑰是否已排定刪除。如果是，請取消排程金鑰刪除。如需詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[排程和取消金鑰刪除](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html)。

1. 確認 Amazon DocumentDB 依賴的 KMS 金鑰政策和任何授予仍允許 Amazon DocumentDB 使用金鑰。

1. 還原 KMS 金鑰的存取權後，請使用 AWS 管理主控台 或執行 `start-db-cluster` AWS CLI 命令來啟動叢集。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws docdb start-db-cluster \
     --db-cluster-identifier {{example-cluster}}
   ```

   針對 Windows：

   ```
   aws docdb start-db-cluster ^
     --db-cluster-identifier {{example-cluster}}
   ```

**重要**  
如果未在 7 天內還原對 KMS 金鑰的存取，叢集會轉換為無法從中啟動的終端機`inaccessible-encryption-credentials`狀態。

### `inaccessible-encryption-credentials` 狀態
<a name="encryption-at-rest-inaccessible-terminal"></a>

`inaccessible-encryption-credentials` 狀態為終端機。無法啟動叢集，也無法復原資料庫的執行中狀態。若要復原資料，請從快照還原或執行point-in-time還原至新叢集。您必須仍可存取原始 KMS 金鑰才能執行還原。如果刪除 KMS 金鑰，則無法復原資料。

如需詳細資訊，請參閱[從叢集快照還原](backup_restore-restore_from_snapshot.md)及[還原至某個時間點](backup_restore-point_in_time_recovery.md)。

**注意**  
屬於全域叢集的叢集會在無法存取 KMS 金鑰時直接轉換為 `inaccessible-encryption-credentials` 狀態，因為屬於全域叢集的叢集只有在它是全域叢集中唯一的叢集時，才能停止和啟動。若要刪除處於此狀態的叢集，請先從全域叢集中移除每個叢集，然後個別刪除叢集。

如果您因為已啟用刪除保護而無法刪除處於 `inaccessible-encryption-credentials` 狀態的叢集，請在重試刪除 AWS CLI 之前使用 關閉刪除保護。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws docdb modify-db-cluster \
  --db-cluster-identifier {{example-cluster}} \
  --no-deletion-protection
```
針對 Windows：  

```
aws docdb modify-db-cluster ^
  --db-cluster-identifier {{example-cluster}} ^
  --no-deletion-protection
```

然後，您可以使用 `delete-db-cluster`命令刪除叢集。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws docdb delete-db-cluster \
  --db-cluster-identifier {{example-cluster}} \
  --skip-final-snapshot
```
針對 Windows：  

```
aws docdb delete-db-cluster ^
  --db-cluster-identifier {{example-cluster}} ^
  --skip-final-snapshot
```

如果叢集在您執行上述命令後未刪除，請聯絡 [AWS Support](https://aws.amazon.com/support)。

## Amazon DocumentDB 加密叢集的限制
<a name="encryption-at-rest-limits"></a>

Amazon DocumentDB 加密叢集存在下列限制。
+ 您只能在建立 Amazon DocumentDB 叢集時啟用或停用靜態加密，而不是在建立叢集之後。不過，您可以建立未加密叢集的快照，然後將未加密的快照還原為新叢集，同時指定靜態加密選項，以建立未加密叢集的加密複本。

  如需詳細資訊，請參閱下列主題：
  + [建立手動叢集快照](backup_restore-create_manual_cluster_snapshot.md)
  + [從叢集快照還原](backup_restore-restore_from_snapshot.md)
  + [複製 Amazon DocumentDB 叢集快照](backup_restore-copy_cluster_snapshot.md)
+ 啟用儲存加密的 Amazon DocumentDB 叢集無法修改以停用加密。
+ Amazon DocumentDB 叢集中的所有執行個體、自動備份、快照和索引都會使用相同的 KMS 金鑰加密。