

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

# 使用为适用于微软 SQL Server 的亚马逊 RDS 配置 Windows 身份验证 AWS Managed Microsoft AD
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad"></a>

*Ramesh Babu Donti，Amazon Web Services*

## Summary
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-summary"></a>

此模式显示如何使用 AWS Directory Service for Microsoft Active Directory () 为 SQL Server 实例的亚马逊关系数据库服务 (Amazon RDS AWS Managed Microsoft AD) 配置 Windows 身份验证。Windows 身份验证允许用户使用其域凭证而不是数据库特定的用户名和密码连接到 RDS 实例。

您可以在创建新的 RDS SQL Server 数据库时启用 Windows 身份验证，也可以通过将其添加到现有数据库实例来启用 Windows 身份验证。数据库实例与集成 AWS Managed Microsoft AD ，为访问 SQL Server 数据库的域用户提供集中身份验证和授权。

此配置利用现有的 Active Directory 基础设施来增强安全性，并且无需为域用户管理单独的数据库凭证。

## 先决条件和限制
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-prereqs"></a>

**先决条件**
+  AWS 账户 具有适当权限的活跃用户
+ 具有以下特性的虚拟私有云（VPC）：
  + 已配置的互联网网关和路由表
  + 公有子网中的 NAT 网关（如果实例需要访问互联网）
+ AWS Identity and Access Management (IAM) 角色：
  + 具有以下 AWS 托管策略的域角色：
    + `AmazonSSMManagedInstanceCore`启用 AWS Systems Manager
    + `AmazonSSMDirectoryServiceAccess`，可提供将实例加入目录的权限
  + RDS 增强监控角色（如果启用了增强监控）
+ 安全组：
  + 允许使用 Active Directory 通信端口的目录服务安全组
  + 允许 RDP `3389` 和域名通信的亚马逊弹性计算云 (Amazon EC2) 安全组
  + RDS 安全组，允许来自授权来源的 SQL Server 端口 `1433`
+ 网络连接：
  + 正确的 DNS 解析以及子网之间的网络连接

**限制**
+ 有关 RDS AWS 区域 for SQL Server 的支持 AWS Managed Microsoft AD 的信息，请参阅[区域和版本可用性](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_SQLServerWinAuth.html#USER_SQLServerWinAuth.RegionVersionAvailability)。
+ 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性，请参阅[按区域划分的AWS 服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。有关特定端点，请参阅[服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)页面，然后选择相应服务的链接。

## 架构
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-architecture"></a>

**源技术堆栈**
+ 本地活动目录或 AWS Managed Microsoft AD

**目标技术堆栈**
+ Amazon EC2
+ Amazon RDS for Microsoft SQL Server
+ AWS Managed Microsoft AD

**目标架构**

![](https://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/e02f6059-6631-46f6-819c-5961af7ba4ae/images/1aa50e3b-b4f6-4d44-9f9e-6cbb248a159c.png)


该架构包括以下内容：
+ 将 Amazon EC2 实例加入 AWS Managed Microsoft AD 域名的 IAM 角色。
+ 用于数据库管理和测试的亚马逊 EC2 Windows 实例。
+ Amazon VPC，其私有子网用于托管 Amazon RDS 实例和跨可用区的内部资源。
+ 网络访问控制安全组：
  + Amazon RDS 安全组，用于控制来自授权来源的 SQL Server 端口 `1433` 的入站访问。
  + 一个 Amazon EC2 安全组，用于通过端口`3389`和域通信端口管理 RDP 访问。
  + Active Directory 的目录服务安全组，可通过端口 `53`、`88`、`389` 和 `445` 进行通讯。
+ AWS Managed Microsoft AD 为 Windows 资源提供集中式身份验证和授权服务。
+ 私有子网中的 Amazon RDS for SQL Server 数据库实例，并且已启用 Windows 身份验证。

## 工具
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-tools"></a>

**AWS 服务**
+ [亚马逊弹性计算云 (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 在中提供可扩展的计算容量 AWS Cloud。您可以根据需要启动任意数量的虚拟服务器，并快速纵向扩展或缩减这些服务器。
+ Amazon Relational Database Service（Amazon RDS）可帮助您在 AWS Cloud中设置、操作和扩展关系数据库。
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)提供了多种使用微软 Active Directory (AD) 的方法， AWS 服务 例如亚马逊弹性计算云 (亚马逊 EC2)、适用于 SQL Server 的亚马逊关系数据库服务 (Amazon RDS) 和 FSx 适用于 Windows 文件服务器的亚马逊。
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)允许你的目录感知工作负载和 AWS 资源使用中的 Microsoft Active Directory。 AWS Cloud
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 通过控制谁经过身份验证并有权使用 AWS 资源，从而帮助您安全地管理对资源的访问权限。

**其他服务**
+ [Microsoft SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms) 是一款用于管理 SQL Server 的工具，包括访问、配置和管理 SQL Server 组件。

## 最佳实践
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-best-practices"></a>
+ 有关一般最佳实践，请参阅 [Amazon RDS 的最佳实践](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html)。

## 操作说明
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-epics"></a>

### 配置 AWS Managed Microsoft AD
<a name="configure-managed-ad"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 设置目录类型。 | 1. 从中 AWS 管理控制台，导航到**AWS Directory Service**。<br />2. 选择**设置目录**。<br />3. 针对目录类型，选择 **AWS Managed Microsoft AD**。<br />4. 选择 “**创建新的 AWS 托管 AD 域**”，然后选择 “**下一步**”。 | 数据库管理员、工程师 DevOps  | 
| 配置目录信息。 | 在**目录信息**部分中，输入所需信息，并保留可选值：1. 在**版本**下，选择符合您的要求的版本。<br />2. 在**目录 DNS 名称**下，输入完全限定域名（FQDN）。<br />3. 在**管理员密码**下，设置管理员账户的密码，然后选择**下一步**。 | 数据库管理员、工程师 DevOps  | 
| 配置 VPC 和子网。 | 1. 在 “**网络**” 下，选择一个目标 VPC（至少必须分别 AWS 可用区设置两个子网）。<br />2. 在 “**网络类型**” 下，**IPv4 仅**选择。<br />3. **在 “**子网**” 下，分别选择两个私有子网 AWS 可用区，然后选择 “下一步”。** | 数据库管理员、工程师 DevOps  | 
| 审视和创建目录。 | 1. 查看配置值，然后选择**创建目录**。<br />2. 等待目录状态更改为**活跃**。 | 数据库管理员、工程师 DevOps  | 

### 创建和配置 Amazon EC2 实例
<a name="create-and-configure-an-ec2-instance"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为 Windows 配置 AMI。 | 1. 从中 AWS 管理控制台，导航到**EC2**。<br />2. 选择**启动实例**。<br />3. 在**名称和标签**下，输入名称和任何适用的标签。<br />4. 选择符合您的要求的适用于 Windows Server 的亚马逊机器映像（AMI）。<br />5. 在**实例类型**下，选择大小合适的类型。<br />6. 在**密钥对（登录）**，选择现有密钥对或创建一个新的密钥对。 | 数据库管理员、工程师 DevOps  | 
| 配置网络设置。 | 1. 在**网络设置**下，选择用于 AWS Directory Service的相同 VPC。<br />2. 选择私有子网。<br />3. 在**防火墙（安全组）**下，创建一个允许 RDP 端口 `3389` 和域通信的组。 | 数据库管理员、工程师 DevOps  | 
| 配置存储。 | 根据需要配置 Amazon EBS 卷。 | 数据库管理员、工程师 DevOps  | 
| 配置高级详细信息并启动实例。 | 1. 展开**高级详细信息**部分。<br />2. 在 “**域加入目录” 中**，选择之前创建的 AWS Managed Microsoft AD。<br />3. 对于 **IAM 实例配置文件**，选择具有策略 `AmazonSSMManagedInstanceCore` 和 `AmazonSSMDirectoryServiceAccess` 的角色。<br />4. 查看所有配置值，然后选择**启动实例**。 | 数据库管理员、工程师 DevOps  | 

### 使用 Windows 身份验证创建和配置 RDS for SQL Server
<a name="create-and-configure-rds-for-sql-server-with-windows-authentication"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建数据库并配置引擎选项。 | 1. 导航到 Aurora 和 RDS 控制台，然后选择**创建数据库**。<br />2. 在**引擎选项**中，选择 **Microsoft SQL Server**。<br />3. 对于**数据库管理类型**，选择 **Amazon RDS**。<br />4. 对于**版本**，选择符合您要求的 SQL Server。<br />5. 对于**引擎版本**，选择支持的最新版本。 | 数据库管理员、工程师 DevOps  | 
| Choose a template。 | 选择符合您要求的示例模板。 | 数据库管理员、工程师 DevOps  | 
| 配置数据库设置。 | 1. 在**设置**的**数据库实例标识符**下，输入唯一的名称。<br />2. 在**主用户名**下，配置管理员凭证。<br />3. （可选）对于**凭证管理**，选择**在 AWS Secrets Manager中管理**或**自管理**。 | 数据库管理员、工程师 DevOps  | 
| 配置实例。 | 在**实例配置**部分的**数据库实例类**下，选择符合您要求的实例大小。 | 数据库管理员、工程师 DevOps  | 
| 配置存储。 | 1. 在**存储**部分的**存储类型**下，选择符合您要求的类型。我们建议使用 **gp3**、**io1** 或 **io2**。<br />2. 根据需要为**已分配的存储**、**预调配 IOPS** 和**存储吞吐量**设置初始值。<br />3. （可选）展开**其他存储配置**部分，然后选择**启用存储自动扩缩**。 | 数据库管理员、工程师 DevOps  | 
| 配置连接。 | 1. 在**连接**部分中，选择是否要设置与数据库计算资源的连接。<br />2. 对于 **VPC**，请选择具有相同的 VPC AWS Directory Service。<br />3. 对于**数据库子网组**，选择跨多个可用区的组。<br />4. 对于公有访问权限，选择**否**。<br />5. 对于 **VPC 安全组（防火墙）**，选择一个现有组或创建一个允许通过 SQL Server 端口 `1433` 进行访问的新组。<br />6. 选择您的首选可用区。<br />7. 展开**其他配置**部分，然后选择是否要使用自定义数据库端口。 | 数据库管理员、工程师 DevOps  | 
| 配置 Windows 身份验证。 | 1. 在 **微Microsoft SQL Server Windows 身份验证**部分，选中**启用 Microsoft SQL Server Windows 身份验证**复选框。<br />2. 对于 **Windows 身份验证类型**，选择 **AWS Managed Microsoft AD**。<br />3. 对于**目录**，选择**浏览目录**，然后选择 **AWS Managed Microsoft AD**。 | 数据库管理员、工程师 DevOps  | 
| 配置监控。 | 1. 在**监控**部分，选择标准或高级数据库见解。<br />2. 在**性能见解**下，选中**启用性能见解**复选框。<br />3. 选择保留期和 AWS KMS 密钥。<br />4. 在**其他监视设置**下，选中**增强监控**复选框。<br />5. （可选）在**日志导出**下，选中**错误日志**复选框。注意：若您想了解不同进程或线程对 CPU 的使用差异，指标非常有用。 CloudWatch 如果启用了错误日志，您也可以将**错误日志**导出到 Amazon。 | 数据库管理员、工程师 DevOps  | 
| 配置其他设置。 | 1. 展开**其他配置**部分。<br />2. 对于**数据库参数组**和**数据库选项组**，选择默认值或自定义值。<br />3. 设置您的首选时区。<br />4. 对于**排序规则**，设置一个值。默认值为 `SQL_Latin1_General_CP1_CI_AS`。<br />5. 在备份下：选中**启用自动备份**复选框。这将创建数据库快照。对于**备份保留期**，选择所需的天数。对于**备份窗口**，选择一个值。（可选）对于**备份复制**，选择**启用复制到其他 AWS 区域**。选中 “**启用加密**” 复选框以使用加密实例 AWS KMS。<br />6. 在**维护窗口**下，选中**选择窗口**复选框，然后设置首选时间。<br />7. 选中**启用删除保护**复选框。 | 数据库管理员、工程师 DevOps  | 
| 查看成本并创建数据库。 | 查看**月度估算费用**部分，然后选择**创建数据库**。 | 数据库管理员、工程师 DevOps  | 

### 配置数据库访问和测试连接
<a name="configure-database-access-and-test-connections"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 连接到 Windows 计算机。 | 连接到您的 Windows 计算机并启动 SQL Server Management Studio。1. 使用 RDP 使用 AWS Managed Microsoft AD 凭据连接到你的 Windows 计算机<br />2. 在**开始**菜单中输入 **SSMS**，然后选择 **SQL Server Management Studio**，启动 SSMS。 | 数据库管理员、工程师 DevOps  | 
| 配置 SSMS 连接。 | 使用 Windows 身份验证设置数据库连接。1. 出现**连接到服务器**对话框时（或者通过导航到**对象资源管理器**、**Connect**、**数据库引擎**），将**服务器类型**设置为**数据库引擎**。<br />2. 输入 RDS SQL Server 端点（例如，`your-rds-instance.region.rds.amazonaws.com`）<br />3. 选择 **Windows 身分验证**。 | 数据库管理员、工程师 DevOps  | 
| 配置安全设置。 | 为 SSMS 版本 20 或更高版本设置所需的安全参数。1. 在**连接属性**选项卡中，将**加密**设置为**强制**。<br />2. 选中“信任服务器证书”复选框。<br />3. 将**证书中的主机名**字段留空。<br />4. （可选）设置数据库名称并根据需要调整连接超时。 | 数据库管理员、工程师 DevOps  | 
| 创建 Windows 登录。 | 1. 为域用户设置和测试 Windows 身份验证。<br />2. 要建立初始连接，选择**连接**。<br />3. 在查询窗口中，运行以下查询：<pre>CREATE LOGIN [<domainName>\<user_name>] FROM WINDOWS;<br />GO</pre> | 数据库管理员、工程师 DevOps  | 
| 测试 Windows 身份验证。 | 1. 注销 Amazon EC2 实例。<br />2. 使用您的域凭据重新登录 EC2 实例。<br />3. 启动 SSMS。<br />4. 使用 Windows 身份验证连接。<br />5. 验证连接是否成功。 | 数据库管理员、工程师 DevOps  | 

## 相关资源
<a name="configure-windows-authentication-for-amazon-rds-using-microsoft-ad-resources"></a>
+ [创建你的 AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)
+ [将亚马逊 EC2 Windows 实例加入你的 AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html)
+ [Amazon RDS 中支持 Kerberos 身份验证的区域和数据库引擎](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.html)
+ [什么是 SQL Server Management Studio（SSMS）？](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms)