

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 集成并使用称为信封加密的方法来保护您的数据。当使用 AWS KMS对 Amazon DocumentDB 集群 进行加密时，Amazon DocumentDB 请求 AWS KMS 使用 KMS 密钥 [ 生成加密文字数据密钥](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)以加密存储卷。加密文字数据密钥使用您定义的 KMS 密钥进行加密，并与加密的数据和存储元数据一起存储。当 Amazon DocumentDB 需要访问加密数据时，它会请求 AWS KMS 使用 KMS 解密加密文字数据密钥，并将明文数据密钥缓存到内存中，以高效地加密和解密存储卷中的数据。

 Amazon DocumentDB 中的存储加密功能可用于所有支持的实例大小和 Amazon DocumentDB 可用的所有 AWS 区域。

## 为 Amazon DocumentDB 集群启用静态加密
<a name="encryption-at-rest-enabling"></a>

使用 AWS 管理控制台 或 AWS Command Line Interface （AWS CLI）设置集群时，可以在 Amazon DocumentDB 集群上启用或禁用静态加密。默认情况下，您使用控制台创建的集群启用了静态加密功能。默认情况下，您使用 AWS CLI 创建的集群禁用了静态加密功能。因此，您必须使用 `--storage-encrypted` 参数显式启用静态加密。无论哪种情况，在创建集群后，都无法更改静态加密选项。

Amazon DocumentDB 使用 AWS KMS 检索和管理加密密钥，并定义控制这些密钥的使用方式的策略。如果您不指定 AWS KMS 密钥标识符，Amazon DocumentDB 使用默认的 AWS 托管服务 KMS 密钥。Amazon DocumentDB 为您的 AWS 账户 中每个 AWS 区域 创建一个单独 KMS 密钥。有关更多信息，请参阅 [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开发人员指南**中的[非对称 KMS 密钥AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)。

如果 Amazon DocumentDB 不再能够有权访问集群的加密密钥 — 例如，在撤销密钥访问权限时 — 加密的集群将进入终末状态。在此情况下，您只能从备份还原集群。对于 Amazon DocumentDB，备份始终启用 1 天。

此外，如果您禁用已加密 Amazon DocumentDB 集群的密钥，您最终将失去对该集群的读写访问权限。如果 Amazon DocumentDB 遇到用它无法访问的密钥加密的集群，则它会使该集群进入最终状态。在此状态下，集群不再可用，并且数据库的当前状态无法恢复。若要还原集群，您必须重新启用对 Amazon DocumentDB 的加密密钥的访问，然后从备份还原集群。

**重要**  
在已创建加密集群的 KMS 密钥后，您无法更改它。请确保先确定您的加密密钥要求，然后再创建加密的集群。

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

您可在创建集群时，指定静态加密选项。默认情况下，当您使用 AWS 管理控制台创建集群时，静态加密处于启用状态。集群创建之后无法修改该选项。

**在创建集群时指定静态加密选项**

1. 如[入门](https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-ec2.launch-cluster.html)部分所述创建 Amazon DocumentDB 集群。但在步骤 6 中，不要选择**创建集群**。

1. 在 **Authentication (身份验证)** 部分下，选择 **Show advanced settings (显示高级设置)**。

1. 向下滚动至 **Encryption-at-rest (静态加密)** 部分。

1. 选择要进行静态加密的选项。无论您选择哪个选项，都无法在创建集群后更改它。
   + 要对此集群中的静态数据进行加密，请选择**启用加密**。
   + 如果您不想对此集群中的静态数据进行加密，请选择**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 ]

要使用 AWS CLI 加密 Amazon DocumentDB 集群，请运行 [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` 选项。使用 AWS CLI 所创建的 Amazon DocumentDB 集群默认不启用存储加密。

以下示例创建启用了存储加密的 Amazon DocumentDB 集群。

在以下示例中，将每个 *user input placeholder* 替换为您的集群信息。

**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-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 密钥进行加密。