

# 配置 SQL Server 安全协议和密码
<a name="SQLServer.Ciphers"></a>

您可以使用数据库参数打开和关闭某些安全协议和密码。您可以配置的安全参数（TLS 版本 1.2 除外）如下表所示。


****  

| 数据库参数 | 允许的值（默认值以粗体显示） | 描述 | 
| --- | --- | --- | 
| rds.tls10 | 默认值，启用，禁用 | TLS 1.0。 | 
| rds.tls11 | 默认值，启用，禁用 | TLS 1.1。 | 
| rds.tls12 | 默认值 | TLS 1.2。您无法修改此值。 | 
| rds.fips | 0, 1 |  将参数设置为 1 时，RDS 会强制使用符合美国联邦信息处理标准 (FIPS) 140-2 标准的模块。 有关详细信息，请参阅 Microsoft 文档中的 [Use SQL Server 2016 in FIPS 140-2-compliant mode](https://docs.microsoft.com/en-us/troubleshoot/sql/security/sql-2016-fips-140-2-compliant-mode)（在 FIPS 140-2 合规模式下使用 SQL Server 2016）。  | 
| rds.rc4 | 默认值，启用，禁用 | RC4 流密码。 | 
| rds.diffie-hellman | 默认值，启用，禁用 | Diffie-Hellman key-exchange 加密。 | 
| rds.diffie-hellman-min-key-bit-length | 默认值，1024，2048，3072，4096 | Diffie-Hellman 密钥的最小位长度。 | 
| rds.curve25519 | 默认值，启用，禁用 | Curve25519 elliptic-curve 加密密码。并非所有引擎版本都支持此参数。 | 
| rds.3des168 | 默认值，启用，禁用 | 具有 168 位密钥长度的三重数据加密标准 (DES) 加密密码。 | 

**注意**  
对于 16.00.4120.1、15.00.4365.2、14.00.3465.1、13.00.6435.1 和 12.00.6449.1 之后的次要引擎版本，数据库参数 `rds.tls10`、`rds.tls11`、`rds.rc4`、`rds.curve25519` 和 `rds.3des168` 的默认设置处于*禁用*状态。否则，默认设置为*启用*。  
对于 16.00.4120.1、15.00.4365.2、14.00.3465.1、13.00.6435.1 和 12.00.6449.1 之后的次要引擎版本，`rds.diffie-hellman-min-key-bit-length` 的默认设置为 3072。否则，默认设置为 2048。

使用以下过程配置安全协议和密码：

1. 创建自定义数据库参数组。

1. 修改参数组中的参数。

1. 将数据库参数组与数据库实例相关联。

有关数据库参数组的更多信息，请参阅 [Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。

## 创建安全相关的参数组
<a name="CreateParamGroup.Ciphers"></a>

为与 SQL Server 版本和数据库实例版本相对应的安全相关参数创建参数组。

### 控制台
<a name="CreateParamGroup.Ciphers.Console"></a>

以下过程为 SQL Server 标准版 2016 创建一个参数组。

**创建参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

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

1. 选择**创建参数组**。

1. 在**创建参数组**窗格中，执行以下操作：

   1. 对于**参数组系列**，选择 **sqlserver-se-13.0**。

   1. 对于**组名称**，输入参数组的标识符，如 **sqlserver-ciphers-se-13**。

   1. 对于**描述**，输入 **Parameter group for security protocols and ciphers**。

1. 选择**创建**。

### CLI
<a name="CreateParamGroup.Ciphers.CLI"></a>

以下过程为 SQL Server 标准版 2016 创建一个参数组。

**创建参数组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Parameter group for security protocols and ciphers"
  ```

  对于 Windows：

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Parameter group for security protocols and ciphers"
  ```

## 修改安全相关参数
<a name="ModifyParams.Ciphers"></a>

修改与 SQL Server 版本和数据库实例版本对应的参数组中的安全相关参数。

### 控制台
<a name="ModifyParams.Ciphers.Console"></a>

以下过程修改您为 SQL Server 标准版 2016 创建的参数组。此示例关闭 TLS 版本 1.0。

**修改参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

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

1. 选择参数组，例如 **sqlserver-ciphers-se-13**。

1. 在**参数**下，从参数列表中筛选 **rds**。

1. 选择**编辑参数**。

1. 选择 **rds.tls10**。

1. 对于**值**，选择**已禁用**。

1. 选择 **Save changes（保存更改）**。

### CLI
<a name="ModifyParams.Ciphers.CLI"></a>

以下过程修改您为 SQL Server 标准版 2016 创建的参数组。此示例关闭 TLS 版本 1.0。

**修改参数组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --parameters "ParameterName='rds.tls10',ParameterValue='disabled',ApplyMethod=pending-reboot"
  ```

  对于 Windows：

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --parameters "ParameterName='rds.tls10',ParameterValue='disabled',ApplyMethod=pending-reboot"
  ```

## 将安全相关参数组与您的数据库实例关联
<a name="AssocParamGroup.Ciphers"></a>

要将参数组与数据库实例关联，请使用 AWS 管理控制台或 AWS CLI。

### 控制台
<a name="AssocParamGroup.Ciphers.Console"></a>

您可以将参数组与新的或现有的数据库实例关联：
+ 对于新的数据库实例，请在启动实例时将其关联。有关更多信息，请参阅“[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)”。
+ 对于现有数据库实例，请通过修改实例将其关联。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

### CLI
<a name="AssocParamGroup.Ciphers.CLI"></a>

您可以将参数组与新的或现有的数据库实例关联。

**使用参数组创建数据库实例**
+ 指定在创建参数组时使用的相同数据库引擎类型和主要版本。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --master-user-password secret123 \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --db-parameter-group-name sqlserver-ciphers-se-13
  ```

  对于 Windows：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --master-user-password secret123 ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name sqlserver-ciphers-se-13
  ```
**注意**  
作为安全最佳实践，请指定除此处所示提示以外的密码。

**修改数据库实例并关联参数组**
+ 运行以下命令之一。  
**Example**  

  对于 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --apply-immediately
  ```

  对于 Windows：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --apply-immediately
  ```