Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
如何对使用 AWS Managed Microsoft AD 的 Amazon RDS for SQL Server Windows Authentication 问题进行故障排除?
我为 AWS 账户配置了 AWS Directory Service for Microsoft Active Directory。我在创建 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 数据库实例时遇到了问题。
简短描述
在创建 Amazon RDS for SQL Server 数据库实例时,您可能会遇到以下问题之一:
- Microsoft Managed AD 不可用。
- 您会收到 Failed to join a host to a domain(无法将主机加入域)的错误消息,或者 Amazon RDS 控制台上的目录状态显示 Failed(失败)。
- 您无法使用 Windows Authentication 登录数据库实例。
您可以跨多个 AWS 账户和 Amazon Virtual Private Cloud (Amazon VPC) 对 Amazon RDS for SQL Server 数据库实例使用 Windows Authentication。您还可以在多个账户和 VPC 之间共享 AWS Managed Microsoft AD 目录,以管理目录感知数据库工作负载。但是,RDS for SQL Server 数据库实例必须与 AWS Managed Microsoft AD 目录位于同一个 AWS 区域。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
创建数据库实例时,AWS Managed Microsoft AD 未列出或不可用
**重要事项:**要在 Amazon RDS 控制台上列出 AWS Managed Microsoft AD,托管域类型必须为 AWS Managed Active Directory。
如果 AWS Managed Microsoft AD 与数据库实例位于不同的区域,则在您创建或修改数据库实例时不会列出该目录。要解决此问题,请确保数据库实例与您的 Directory Service 位于同一区域。
完成以下步骤:
- 打开 Amazon RDS 控制台。
- 在导航窗格中,选择数据库。
- 选择您的数据库实例。
- 在 Summary(摘要)部分中,记下您的数据库实例所在的 Region(区域)。
- 使用 AWS Directory Service 控制台确认目录服务与数据库实例位于同一区域。
如果您的 AWS Managed Microsoft AD 与数据库实例位于不同的账户中,请将 Microsoft Managed AD 与 AWS 账户共享。然后,在创建或修改数据库实例时列出目录服务。
完成以下步骤:
- 与将在其中创建数据库实例的 AWS 账户共享目录。按照**《AWS Directory Service 管理指南》**中的共享您的 AWS Managed Microsoft AD 目录以无缝加入 EC2 域中的步骤操作。
- 使用数据库实例的账户打开 AWS Directory Service 控制台。
- 验证域是否处于 SHARED 状态。
- 使用 Directory ID 值将数据库实例加入域。
将数据库实例加入域时,您会收到错误或目录状态显示为“Failed”(失败)
将数据库实例加入域时,您可能会收到以下错误消息: “Failed to join a host to a domain.Domain membership status for instance XXXXXXX has been set to Failed.” 或者,目录状态可能显示为 Failed(失败)。
要对域加入失败的问题进行故障排除,请完成以下步骤:
- 确认您已将 RDS for SQL Server 实例安全组配置为允许以下出站流量:
TCP 和 UDP 端口 53
TCP 和 UDP 端口 88
TCP 和 UDP 端口 135
TCP 和 UDP 端口 389
TCP 和 UDP 端口 445
TCP 和 UDP 端口 464
TCP 端口 636
TCP 端口 3268
TCP 端口 3269
TCP 端口 9389
TCP 端口 49152-65535
UDP 端口 123
UDP 端口 138 - 确认 AWS Managed Microsoft AD 安全组已配置为允许正确的入站流量。
**注意:**当您创建 AWS Managed Microsoft AD 时,AWS Directory Service 会创建安全组。有关添加到安全组的入站和出站规则的列表,请参阅使用 AWS Managed Microsoft AD 创建的内容。 - 检查您的数据库实例和 AWS Managed Microsoft AD 是否位于不同的 VPC 或账户中。
**注意:**如果属实,请确保有正确的路径将数据库实例连接到 AWS Managed Microsoft AD。此外,请确保 Microsoft Managed AD 有正确的路由到达数据库实例。有关详细信息,请参阅 RDS 对跨账户和跨 VPC 域加入的支持。
确定并解决域加入失败的潜在原因后,完成以下步骤,将域重新加入数据库实例:
- 打开 Amazon RDS 控制台。
- 在导航窗格中,选择 Databases(数据库)。
- 选择未能加入域的数据库实例,然后选择 Modify(修改)。
- 在 Microsoft SQL Server Windows Authentication 部分中,对于 Directory(目录),选择 None(无)。
- 选择 Apply immediately(立即应用)。
**注意:**修改完成后,数据库实例会自动重启。 - 在导航窗格中,选择 Databases(数据库)。
- 选择数据库实例,然后选择 Modify(修改)。
- 在 Microsoft SQL Server Windows Authentication 部分中,对于 Directory(目录),选择您的目录。
- 选择 Apply immediately(立即应用)。
**注意:**修改完成后,数据库实例再次重启。
调用 ModifyDBInstance 操作时出现 InvalidParameterCombination 错误
如果您收到以下错误消息: “IAM role provided is not valid, check that the role exists and has the correct policies”,请执行以下操作:
- 使用 AWS CLI 将目录服务连接到数据库实例时,使用默认的 rds-directoryservice-access-role AWS Identity and Access Management (IAM) 角色。
- 如果您使用自定义角色,请将 AmazonRDSDirectoryServiceAccess 默认策略附加到该自定义角色。
无法使用 Windows Authentication 登录数据库实例
Windows Authentication 要求 AWS Managed Microsoft AD 用户或组在实例上进行 SQL 登录。SQL 登录使用数据库实例的主用户凭证。如果您在本地 Microsoft Active Directory 中使用组或用户,则必须创建信任关系。
要创建信任关系,请完成以下步骤:
- 使用 SQL Server Management Studio (SSMS) 以主用户身份登录数据库实例。
- 使用 T-SQL 创建 Windows Authentication 登录名:
**注意:**在 RDS for SQL Server 实例上创建 Windows Authentication 登录名时,必须使用 T-SQL。您无法使用 GUI 在 SQL SSMS 中创建登录名。CREATE LOGIN [Domain Name\user or group] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
- 使用 Windows Authentication 连接到数据库实例。
相关信息
