在 AWS 的 SQL Server 加入 Microsoft Entra 域服务
作者:Rita Ladda Barry Ooi Siva Thang 日期:2023年12月20日
关键要点
Windows 身份验证为 Microsoft SQL Server 提供了安全且高效的身份验证管理机制。支持将 Amazon RDS for SQL Server 直接加入 Microsoft Entra 域服务,使用户能够使用 Microsoft Entra ID 登录。本文介绍如何使用 PowerShell 脚本创建所需的组织单位OU和服务账户,以及如何将不同部署类型的 SQL Server 创建为域加入。Windows 身份验证为 Microsoft SQL Server 提供了一种安全有效的身份验证管理机制。许多客户使用 Microsoft Entra ID以前是 Azure AD作为其身份提供者进行 Windows 身份验证。随着对将 Amazon RDS for SQL Server 加入自管理 Active Directory 的支持启动,您现在可以直接将 AWS 上的 Amazon RDS for SQL Server 实例加入 Microsoft Entra 域服务。此新功能使您能够在 Amazon RDS 上使用 Microsoft Entra ID 和 Microsoft Entra 域服务的登录进行 Windows 身份验证。对于 Amazon RDS 自定义和 Amazon EC2 上的 SQL Server,加入域的步骤与在自管理实例上的相同。
在本文中,我们将展示如何将 Amazon RDS for SQL Server、Amazon RDS Custom for SQL Server 和自管理 SQL Server 加入 Microsoft Entra ID。
解决方案概述
以下图示展示了通过 Microsoft Entra 域服务将 AWS 中的 SQL Server 加入 Microsoft Entra ID 的高层架构模式。
Microsoft Entra 域服务托管域与现有的 Microsoft Entra ID 租户集成。该集成允许用户使用现有凭据登录与 Microsoft Entra 域服务连接的服务和应用程序。托管域配置为从 Microsoft Entra ID 到 Microsoft Entra 域服务的一种单向同步,这样用户、组和在 Microsoft Entra ID 中的凭据就可以访问。
初始对象同步可能会根据 Microsoft Entra ID 中对象的数量花费一些时间,一旦初始同步完成,如密码更改等更改将自动同步到 Microsoft Entra 域服务。当在 Microsoft Entra ID 中创建新用户时,在用户更改 Microsoft Entra ID 中的密码之前,该用户不会同步到 Microsoft Entra 域服务。有关更多信息,请参考 从 Microsoft Entra ID 到域服务的同步。
要在 AWS 上使用 Microsoft Entra 域服务部署 SQL Server,您需要首先为 SQL Server 创建一个服务账户和一个组织单位OU在 Microsoft Entra ID 中。您还需要为 OU 中的服务账户授予 有限权限。
虽然您可以在 AWS 的多个 SQL Server 部署中重用相同的服务账户或 OU,但我们建议为每个部署创建新的 OU 和服务账户。这样可以增加安全边界,并减少任何配置问题可能产生的影响。
为简化 AD 对象的设置,您可以使用 PowerShell 脚本 来创建对象并为您设置适当的权限。
前提条件
请确保您为本文配置了以下服务和解决方案:
一个有效的 Azure 账户。已部署 Microsoft Entra 域服务。确保您已满足将 RDS for SQL Server 加入自管理 Active Directory 的要求。在 Azure 和 AWS 之间具有私有网络连接,例如 站点到站点 VPN。要将 RDS Custom for SQL Server 加入域,请创建 RDS Custom for SQL Server 实例。有关说明,请参考 创建和连接到 Amazon RDS Custom for SQL Server 的 DB 实例。要将 SQL Server 加入 EC2,请创建 AWS EC2 SQL Server 实例。使用 将目录服务的 DNS 解析集成到 Amazon Route 53 解析器 提到的方法配置 Amazon EC2 和 RDS Custom for SQL Server 的 DNS 解析。使用 Microsoft Entra 域服务的 DNS IP 地址进行配置。有一个已加入 Microsoft Entra 域服务的 EC2 Windows Server 实例本文称为 MGMT。使用域管理员将 EC2 实例加入 Microsoft Entra 域服务,您需要先重置用户密码。有关更多信息,请参考 教程:将 Windows Server 虚拟机加入 Azure Active Directory 域服务托管域。确保在该 EC2 实例上安装 Active Directory 管理工具 和 SQL Server Management Studio 工具。创建 Microsoft Entra ID 的组织单位 (OU) 和服务账户
在此步骤中,您将使用 PowerShell 脚本创建在 AWS 中使用 Microsoft Entra 域服务部署 SQL Server 所需的 AD 对象,具体步骤请参见 将 Amazon RDS for SQL Server 加入自管理 Active Directory 中的“创建 Active Directory OU 和服务账户”。对于本文,我们使用以下命名约定创建 OU 和服务账户:
AWS 中 SQL Server 部署的 OU,命名为 RDSMSSQL或您选择的任何名称。在 AWS 中的 SQL Server 服务账户,命名为 AWSMSSQLServiceAccount或您选择的任何名称,并授予最低权限。完成目标 OU 和服务账户的创建后,您需要将服务账户信息存储在 AWS Secrets Manager 中。
加入 Amazon RDS for SQL Server 至 Microsoft Entra 域服务
在本节中,您将加入 Amazon RDS for SQL Server 至 Microsoft Entra 域服务,并满足先前列出的要求。
创建 AWS KMS 密钥和 Secrets Manager 密钥
作为最佳实践,我们建议将 SQL Server 服务账户信息存储在 AWS Secrets Manager 中,并使用 AWS KMS 密钥加密。要将 RDS for SQL Server 加入自管理 Active Directory,必须将 SQL Server 服务账户信息存储在 AWS Secrets Manager 中,并使用 AWS Key Management Service (AWS KMS) 密钥进行加密。
使用 AWS 命令行界面 (AWS CLI) 或 AWS 管理控制台 创建一个 AWS KMS 密钥,以加密我们将在 Secrets Manager 中存储的密钥。创建 Secrets Manager 密钥来存储 SQL Server 服务账户信息。授予 Amazon RDS 服务主体对 AWS Secrets Manager 密钥资源的 GetSecretValue 权限。您可以在 AWS CLI 中使用以下代码。
创建带有适当权限的 AWS KMS 密钥。可以下载 示例策略。修改策略以包含您 AWS 账户的信息,并记录输出中的密钥 ID。bash aws kms createkey policy file//kmspolicyjson
创建 Secrets Manager 密钥以存储 SQL Server 服务账户 ID 和密码,并使用前面创建的 KMS 密钥加密。bash aws secretsmanager createsecret name sqlcmadsec kmskeyid ltkms key idgt secretstring {CUSTOMERMANAGEDACTIVEDIRECTORYUSERNAMEltusernamegtCUSTOMERMANAGEDACTIVEDIRECTORYPASSWORDltpasswordgt}
向密钥附加具有适当权限的策略。可以下载 示例策略。bash aws secretsmanager putresourcepolicy secretid sqlcmadsec resourcepolicy file//secretspolicyjson
请注意密钥 ARN,以便在稍后时使用它来部署 RDS for SQL Server 实例。
部署与 Microsoft Entra 域服务域连接的 Amazon RDS for SQL Server
现在,您可以为 Amazon RDS for SQL Server 启用与 Microsoft Entra 域服务的 Windows 身份验证。有关创建 RDS for SQL Server 实例的说明,请参考 创建数据库实例。
在 Amazon RDS 控制台中,在导航窗格中选择 数据库。选择 创建数据库。在 Microsoft SQL Server Windows 身份验证 部分,设置如下:选择 启用 Microsoft SQL Server Windows 身份验证。对于 Windows 身份验证类型,选择 External Active Directory Domain。对于 完全限定域名,输入 Microsoft Entra 域服务部署的域名。本文中使用 corpexamplecom。对于 域组织单位,输入 RDS AD 对象的所在位置。本文中使用 OU=RDSMSSQLDC=corpDC=exampleDC=com。对于 授权密钥 ARN,输入包含服务账户凭据的密钥的 ARN。对于 主 DNS,输入 Microsoft Entra 域服务 DNS 的主要 IP 地址。对于 次要 DNS,输入 Microsoft Entra 域服务 DNS 的次要 IP 地址。提供其他所需设置并创建数据库实例。部署完成后,Amazon RDS for SQL Server 将会创建并连接到 Microsoft Entra ID 通过 Microsoft Entra 域服务。
注意: 请查看 RDS 文档中的 注意事项 和 限制。
将 Amazon RDS Custom for SQL Server 和 SQL Server 在 Amazon EC2 上加入 Microsoft Entra 域服务
在完成先前列出的要求后,请执行以下步骤将 Amazon RDS Custom 和 EC2 上的 SQL Server 加入 Microsoft Entra DS。
配置 DNS 解析
您必须在 VPC 内配置 DNS 解析来解析 Microsoft Entra 域服务的完全限定域名 (FQDN),例如,corpexamplecom。如果您修改了 RDS Custom 实例的网络接口的 DNS 解析设置,将会导致启用 DNS 的 VPC 端点无法正常工作,这些端点对于私有子网内没有互联网访问的实例是必需的。有多种方法可以配置 DNS 解析。我们建议您使用 Amazon Route 53 出站端点和解析器规则来配置 VPC DNS 解析器,将某些域的查询转发。
一元机场登录入口要将 Amazon RDS Custom for SQL Server 或 EC2 上的 SQL Server 加入 Microsoft Entra 域服务,请完成以下步骤:
使用 RDP 连接到具有 SQL Server 或 RDS Custom for SQL Server 的 EC2 实例。提供在实例创建过程中使用的用户名和密码。有关更多信息,请参阅 通过 RDP 连接到 RDS Custom DB 实例。将实例加入 Microsoft Entra 域服务域。有关说明,请参阅 将计算机加入域。在输入用户名和密码时,输入有权限进行域加入的 Microsoft Entra 域服务域账户本文中为 AWSSQLServiceAccount。完成后,Amazon RDS Custom for SQL Server 或 EC2 上的 SQL Server 将通过 Microsoft Entra 域服务域连接到 Microsoft Entra ID。
在 RDS Custom 的故障转移或系统恢复过程中,您需要再次执行域加入。考虑采用自动化 Active Directory 配置,按照 使用 AWS Systems Manager 自动化 Amazon RDS Custom for SQL Server 的配置 中的步骤进行操作。
验证部署
当您的 RDS for SQL Server 实例处于活动状态时,您可以使用在 RDS 实例部署时设置的管理凭据,通过 SQL Server Management Studio (SSMS) 从 MGMT EC2 实例节点连接到实例。登录后,给予 Microsoft Entra 域服务的域用户账户在 RDS for SQL Server 实例中进行身份验证的权限。
RDP 连接到 MGMT EC2 实例并使用之前创建的 Microsoft Entra 域服务用户名和密码进行连接。启动 SSMS。在 连接 对话框中输入以下信息:对于 服务器名称,输入 RDS for SQL Server 实例的名称。对于 身份验证,选择 SQL Server 身份验证。对于 登录名,输入创建 RDS 实例时设置的用户名。对于 密码,输入创建 RDS 实例时设置的密码。在 SSMS 中,在导航窗格的 安全性 下,右键单击 登录,选择 新建登录。输入 Microsoft Entra ID 管理用户作为登录名,授予必要的权限,并选择 确定。选择 开始 ,输入 SSMS,然后选择 SQL Server Management Studio 以打开新的 SSMS 窗口。在对话框中提供以下信息,然后选择 连接:对于 服务器名称,输入 RDS for SQL Server 实例的终端节点名称。对于 身份验证,选择 Windows 身份验证。您可以按照相同的说明验证 Amazon RDS Custom for SQL Server 和 EC2 上的 SQL Server 的连接,通过提供 RDS Custom for SQL Server 终端节点或 EC2 终端节点来进行连接。
您现在已成功使用来自 Microsoft Entra 域服务的用户登录到 RDS for SQL Server 实例。
清理
为了避免产生费用,请清理您在本文中创建的资源。这将删除实例,请确保根据您的业务需求保留快照以备恢复。
终止 Amazon EC2 实例[删除 Amazon RDS for SQL Server](https//docsawsamazoncom/AmazonRDS/latest
发表评论