

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

# 加密传输中数据
<a name="security.encryption.ssl"></a>

您可以使用传输层安全性协议（TLS）加密应用程序与 Amazon DocumentDB 集群之间的连接。默认情况下，为新创建的 Amazon DocumentDB 集群启用传输中加密。可以选择在创建集群时或稍后禁用它。启用传输中加密后，需要使用 TLS 进行安全连接才能连接到集群。有关使用 TLS 连接到 Amazon DocumentDB 的更多信息，请参阅 [以编程方式连接到 Amazon DocumentDB](connect_programmatically.md)。

## 管理 Amazon DocumentDB 集群 TLS 设置
<a name="security.encryption.ssl.managing"></a>

Amazon DocumentDB 集群的传输中加密通过[集群参数组](https://docs.aws.amazon.com/documentdb/latest/developerguide/cluster_parameter_groups.html)中的 TLS 参数进行管理。您可以使用 AWS 管理控制台 或 AWS Command Line Interface（AWS CLI）管理 Amazon DocumentDB 集群 TLS 设置。有关如何验证和修改当前 TLS 设置的信息，请参阅以下部分。

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

请遵照以下步骤，使用控制台执行 TLS 加密的管理任务，例如识别参数组、验证 TLS 值以及进行必要的修改。

**注意**  
除非您在创建集群时以其他方式指定，否则将使用默认集群参数组创建集群。无法修改 `default` 集群参数组中的参数（例如，`tls` 启用/禁用）。因此，如果您的集群使用的是 `default` 集群参数组，则需要修改集群以使用非默认集群参数组。首先，您可能需要创建自定义集群参数组。有关更多信息，请参阅 [创建 Amazon DocumentDB 集群参数组](cluster_parameter_groups-create.md)。

1. **确定集群使用的集群参数组。**

   1. 通过以下网址打开 Amazon DocumentDB 控制台：[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)

   1. 在导航窗格中，选择**集群**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在页面左上角选择菜单图标 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

   1. 请注意，在**集群**导航框中，**集群标识符**列既显示集群又显示实例。实例列在集群下方。请参阅下方屏幕截图以供参考。  
![\[集群导航框中显示一列现有集群链接及其对应实例链接的图片。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/clusters.png)

   1. 选择您感兴趣的集群。

   1. 选择**配置**选项卡，向下滚动到**集群详细信息**底部，然后找到**集群参数组**。请注意集群参数组的名称。

      如果集群参数组的名称是 `default`（例如， `default.docdb3.6`），则您必须创建一个自定义集群参数组，并将其设置为集群的参数组，然后才能继续。有关更多信息，请参阅下列内容：

      1. [创建 Amazon DocumentDB 集群参数组](cluster_parameter_groups-create.md) — 如果没有可以使用的自定义集群参数组，请创建一个。

      1. [修改 Amazon DocumentDB 集群](db-cluster-modify.md) — 修改您的集群以使用自定义集群参数组。

1. **确定 `tls` 集群参数的当前值。**

   1. 通过以下网址打开 Amazon DocumentDB 控制台：[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)

   1. 在导航窗格中，选择**参数组**。

   1. 在集群参数组列表中，选择您感兴趣的集群参数组的名称。

   1. 找到**群集参数**部分。在集群参数列表中，找到 `tls` 集群参数行。此时，以下四列很重要：
      + **Cluster parameter name (集群参数名称)** — 集群参数的名称。对于管理 TLS，需要关注的是 `tls` 集群参数。
      + **Values (值)** — 每个集群参数的当前值。
      + **Allowed values (允许的值)** — 可应用到集群参数的值的列表。
      + **Apply type (应用类型)** — **static (静态)**或 **dynamic (动态)**。对静态集群参数的更改只能在重启实例时应用。对动态集群参数的更改可以立即应用，也可以在重启实例时应用。

1. **修改 `tls` 集群参数的值。**

   如果 `tls` 的值不是所需的，请为此集群参数组修改其值。要更改 `tls` 集群参数的值，请按照以下步骤从前一部分继续执行。

   1. 选择集群参数名称 (`tls`) 左侧的按钮。

   1. 选择**编辑**。

   1. 要更改 `tls` 的值，请在 **Modify（修改）`tls`** 对话框中，从下拉列表中为此集群参数选择所需的值。

      有效值为：
      + **已禁用** — 禁用 TLS
      + **已启用** – 启用 TLS 版本 1.0 到 1.3。
      + **fips-140-3** — 使用 FIPS 启用 TLS。集群仅接受符合联邦信息处理标准 (FIPS) 出版物 140-3 要求的安全连接。在以下区域，这是唯一受支持的 Amazon DocumentDB 5.0（引擎版本 3.0.3727）集群启用：ca-central-1、us-west-2、us-east-1、us-east-2、us-gov-east-1、us-gov-west-1。
      + **tls1.2\$1** – 启用 TLS 版本 1.2 及更高版本。从 Amazon DocumentDB 4.0（引擎版本 2.0.10980）和 Amazon DocumentDB（引擎版本 3.0.11051）开始才支持此功能。
      + **tls1.3\$1** – 启用 TLS 版本 1.3 及更高版本。从 Amazon DocumentDB 4.0（引擎版本 2.0.10980）和 Amazon DocumentDB（引擎版本 3.0.11051）开始才支持此功能。  
![\[特定集群的“修改 TLS” 对话框的图片。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/modify-tls.png)

   1. 选择 **Modify cluster parameter (修改集群参数)**。更改在重启时应用到​每个集群实例。

1. **重启 Amazon DocumentDB 实例**

   重启集群的每个实例，以便将更改应用到集群中的所有实例。

   1. 通过以下网址打开 Amazon DocumentDB 控制台：[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)

   1. 在导航窗格中，选择 **Instances (实例)**。

   1. 要指定待重启的实例，请在实例列表中找到实例，并选择该实例名称左侧的按钮。

   1. 选择 **Actions**（操作），然后选择 **Reboot**（重启）。通过选择**重启**来确认您要重启。

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

请遵照以下步骤，使用 AWS CLI 执行 TLS 加密的管理任务，例如识别参数组、验证 TLS 值以及进行必要的修改。

**注意**  
除非您在创建集群时以其他方式指定，否则将使用默认集群参数组创建集群。无法修改 `default` 集群参数组中的参数（例如，`tls` 启用/禁用）。因此，如果您的集群使用的是 `default` 集群参数组，则需要修改集群以使用非默认集群参数组。您可能需要先创建自定义集群参数组。有关更多信息，请参阅 [创建 Amazon DocumentDB 集群参数组](cluster_parameter_groups-create.md)。

1. **确定集群使用的集群参数组**

   运行具有以下选项的 [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) 命令：
   + `--db-cluster-identifier`
   + `--query`

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

   ```
   aws docdb describe-db-clusters \
     --db-cluster-identifier mydocdbcluster \
     --query 'DBClusters[*].[DBClusterIdentifier,DBClusterParameterGroup]'
   ```

   此操作的输出将类似如下（JSON 格式）：

   ```
   [
       [
           "mydocdbcluster",
           "myparametergroup"
       ]
   ]
   ```

   如果集群参数组的名称是 `default`（例如， `default.docdb3.6`），则您必须有一个自定义集群参数组，并将其设置为集群的参数组，然后才能继续。有关更多信息，请参阅以下主题：

   1. [创建 Amazon DocumentDB 集群参数组](cluster_parameter_groups-create.md) — 如果没有可以使用的自定义集群参数组，请创建一个。

   1. [修改 Amazon DocumentDB 集群](db-cluster-modify.md) — 修改您的集群以使用自定义集群参数组。

1. **确定 `tls` 集群参数的当前值。**

   要获取有关此集群参数组的更多信息，请运行具有以下选项的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-cluster-parameters.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-cluster-parameters.html) 命令：
   + `--db-cluster-parameter-group-name`
   + `--query`

     将输出限制为仅包含感兴趣的字段：`ParameterName`、`ParameterValue`、`AllowedValues` 和 `ApplyType`。

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

   ```
   aws docdb describe-db-cluster-parameters \
     --db-cluster-parameter-group-name myparametergroup \
     --query 'Parameters[*].[ParameterName,ParameterValue,AllowedValues,ApplyType]'
   ```

   此操作的输出将类似如下（JSON 格式）：

   ```
   [
       [
           "audit_logs",
           "disabled",
           "enabled,disabled",
           "dynamic"
       ],
       [
           "tls",
           "disabled",
           "disabled,enabled,fips-140-3,tls1.2+,tls1.3+",
           "static"
       ],
       [
           "ttl_monitor",
           "enabled",
           "disabled,enabled",
           "dynamic"
       ]
   ]
   ```

1. **修改 `tls` 集群参数的值。**

   如果 `tls` 的值不是所需的，则为此集群参数组修改其值。要更改 `tls` 集群参数的值，请运行具有以下选项的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/modify-db-cluster-parameter-group.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/modify-db-cluster-parameter-group.html) 命令：
   + `--db-cluster-parameter-group-name` – 必需。要修改的集群参数组的名称。不能是 `default.*` 集群参数组。
   + `--parameters` – 必需。要修改的集群参数组的参数列表。
     + `ParameterName` – 必需。要修改的集群参数的名称。
     + `ParameterValue` – 必需。此集群参数的新值。必须是集群参数的 `AllowedValues` 之一。
       + `enabled`– 集群接受使用 TLS 版本 1.0 到 1.3 的安全连接。
       + `disabled` — 此集群不接受使用 TLS 的安全连接。
       + `fips-140-3` — 集群仅接受符合联邦信息处理标准 (FIPS) 出版物 140-3 要求的安全连接。仅在以下区域支持 Amazon DocumentDB 5.0（引擎版本 3.0.3727）集群启用：ca-central-1、us-west-2、us-east-1、us-east-2、us-gov-east-1、us-gov-west-1。
       + `tls1.2+` – 集群接受使用 TLS 版本 1.2 及更高版本的安全连接。从 Amazon DocumentDB 4.0（引擎版本 2.0.10980）和 Amazon DocumentDB 5.0（引擎版本 3.0.11051）开始才支持此功能。
       + `tls1.3+` – 集群接受使用 TLS 版本 1.3 及更高版本的安全连接。从 Amazon DocumentDB 4.0（引擎版本 2.0.10980）和 Amazon DocumentDB 5.0（引擎版本 3.0.11051）开始才支持此功能。
     + `ApplyMethod` — 何时应用此修改。对于静态集群参数（如 `tle`），此值必须为 `pending-reboot`。
       + `pending-reboot` — 仅在重启后才将更改应用到实例。您必须分别重启每个集群实例，以便此更改在所有集群实例上生效。

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

   以下代码*禁用* `tls`，在重启时将更改应用到每个实例。

   ```
   aws docdb modify-db-cluster-parameter-group \
     --db-cluster-parameter-group-name myparametergroup \
     --parameters "ParameterName=tls,ParameterValue=disabled,ApplyMethod=pending-reboot"
   ```

   以下代码*启用* `tls`（版本 1.0 到 1.3），在重启时将更改应用到每个实例。

   ```
   aws docdb modify-db-cluster-parameter-group \
     --db-cluster-parameter-group-name myparametergroup \
     --parameters "ParameterName=tls,ParameterValue=enabled,ApplyMethod=pending-reboot"
   ```

   以下代码*启用*带 `fips-140-3` 的 TLS，在重启时将更改应用到每个实例。

   ```
   aws docdb modify-db-cluster-parameter-group \
     ‐‐db-cluster-parameter-group-name myparametergroup2 \
     ‐‐parameters "ParameterName=tls,ParameterValue=fips-140-3,ApplyMethod=pending-reboot"
   ```

   此操作的输出将类似如下（JSON 格式）：

   ```
   {
       "DBClusterParameterGroupName": "myparametergroup"
   }
   ```

1. **重启 Amazon DocumentDB 实例**

   重启集群的每个实例，以便将更改应用到集群中的所有实例。要重启 Amazon DocumentDB 实例，请运行具有以下选项的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/reboot-db-instance.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/reboot-db-instance.html) 命令：
   + `--db-instance-identifier`

   以下代码将重启实例 `mydocdbinstance`。

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

   对于 Linux、macOS 或 Unix：

   ```
   aws docdb reboot-db-instance \
     --db-instance-identifier mydocdbinstance
   ```

   对于 Windows：

   ```
   aws docdb reboot-db-instance ^
     --db-instance-identifier mydocdbinstance
   ```

   此操作的输出将类似如下（JSON 格式）：

   ```
   {
       "DBInstance": {
           "AutoMinorVersionUpgrade": true,
           "PubliclyAccessible": false,
           "PreferredMaintenanceWindow": "fri:09:32-fri:10:02",
           "PendingModifiedValues": {},
           "DBInstanceStatus": "rebooting",
           "DBSubnetGroup": {
               "Subnets": [
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1a"
                       },
                       "SubnetIdentifier": "subnet-4e26d263"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1c"
                       },
                       "SubnetIdentifier": "subnet-afc329f4"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1e"
                       },
                       "SubnetIdentifier": "subnet-b3806e8f"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1d"
                       },
                       "SubnetIdentifier": "subnet-53ab3636"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1b"
                       },
                       "SubnetIdentifier": "subnet-991cb8d0"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1f"
                       },
                       "SubnetIdentifier": "subnet-29ab1025"
                   }
               ],
               "SubnetGroupStatus": "Complete",
               "DBSubnetGroupDescription": "default",
               "VpcId": "vpc-91280df6",
               "DBSubnetGroupName": "default"
           },
           "PromotionTier": 2,
           "DBInstanceClass": "db.r5.4xlarge",
           "InstanceCreateTime": "2018-11-05T23:10:49.905Z",
           "PreferredBackupWindow": "00:00-00:30",
           "KmsKeyId": "arn:aws:kms:us-east-1:012345678901:key/0961325d-a50b-44d4-b6a0-a177d5ff730b",
           "StorageEncrypted": true,
           "VpcSecurityGroups": [
               {
                   "Status": "active",
                   "VpcSecurityGroupId": "sg-77186e0d"
               }
           ],
           "EngineVersion": "3.6.0",
           "DbiResourceId": "db-SAMPLERESOURCEID",
           "DBInstanceIdentifier": "mydocdbinstance",
           "Engine": "docdb",
           "AvailabilityZone": "us-east-1a",
           "DBInstanceArn": "arn:aws:rds:us-east-1:012345678901:db:sample-cluster-instance-00",
           "BackupRetentionPeriod": 1,
           "Endpoint": {
               "Address": "mydocdbinstance.corcjozrlsfc.us-east-1.docdb.amazonaws.com",
               "Port": 27017,
               "HostedZoneId": "Z2R2ITUGPM61AM"
           },
           "DBClusterIdentifier": "mydocdbcluster"
       }
   }
   ```

   实例重启需要几分钟时间。只有在实例状态为 *available (可用)* 时，才能使用实例。您可以使用控制台或 AWS CLI 监控实例状态。有关更多信息，请参阅 [监控 Amazon DocumentDB 实例的状态](monitoring_docdb-instance_status.md)。

------