我如何排查结合使用 Amazon RDS for SQL Server Windows 身份验证与 AWS Managed Microsoft Active Directory 的问题?

上次更新时间:2019 年 6 月 18 日

我已为我的 AWS 账户配置了 AWS Directory Service for Microsoft Active Directory。但是,当我尝试创建运行 SQL Server 的 Amazon Relational Database Service (Amazon RDS) 实例时,我遇到以下其中一个问题:

  • Active Directory 不可用
  • 我收到一条错误消息:“Failed to join a host to a domain”(无法将主机加入域中)
  • 我无法使用 Windows 身份验证登录数据库实例

我如何排查使用 AWS Managed Microsoft AD 时碰到的这些问题?

简短描述

仅在 Amazon Virtual Private Cloud (Amazon VPC) 中支持运行 SQL Server 的 Amazon RDS Windows 身份验证实例。因此,该目录必须与数据库实例位于同一 AWS 区域和同一 VPC 中。即使两个 VPC 间的 VPC 对等位于不同的 AWS 区域,则该目录不会列在 Amazon RDS 控制台中。

解决方法

创建数据库实例时,Active Directory 未列出或不可用

重要提示:托管域类型必须为适用于 Active Directory 的托管活动目录,因为 Active Directory 必须列在 Amazon RDS 控制台中。

如果 VPC 和目录位于与数据库实例不同的 AWS 区域中,则在您创建或修改数据库实例是,您将无法看到列出的目录。要解决此问题,请确保数据库实例与您的目录位于同一 AWS 区域和同一 VPC 中。

1.    打开 Amazon RDS 控制台,然后从导航窗格中选择数据库

2.    选择要连接到目录的实例。

3.    从连接与安全选项卡中,查看与您的数据库实例关联的 VPC。

4.    确认该目录与数据库实例位于同一 AWS 区域和同一 VPC 中。

5.    打开 Directory Service 控制台

6.    从导航窗格中,选择 目录,然后选择您创建的目录。

7.    从目录详细信息选项卡中,查看 VPC 信息。确认信息与数据库实例匹配。

然后,在您创建数据库实例时,该目录中即会列在 Microsoft SQL Server Windows 身份验证列表中。

如果您的目录与数据库实例位于同一 AWS 区域和 VPC,而您仍未看到可添加目录的选项,则您的实例可能位于不受支持的区域。有关更多信息,请参阅结合使用 Windows 身份验证与 Microsoft SQL Server 数据库实例

将数据库实例加入域中时收到的错误

将实例加入域时,您可能会收到以下错误消息:

“Failed to join a host to a domain.Domain membership status for instance XXXXXXX has been set to Failed.”(无法将主机加入到域中。实例 XXXXXXX 的域成员状态已设置为“失败”。)

要解决此错误,请确认已配置安全组的入站和出站规则,以便数据库实例可与 Active Directory 通信。然后,按照下列步骤将数据库实例重新加入域中:

1.    打开 Amazon RDS 控制台,然后从导航窗格中选择数据库

2.    选择未能加入域中的数据库实例,然后选择修改

3.    从Microsoft SQL Server Windows 身份验证部分,对于目录,选择

4.    选择立即应用。完成修改后,将会自动重启数据库实例。

5.    要重新加入目录,从导航窗格中,选择数据库

6.    选择数据库实例,然后选择修改

7.    从Microsoft SQL Server Windows 身份验证部分,对于目录,从列表中选择目录。

8.    选择立即应用。完成修改后,将会再次重启数据库实例。

无法使用 Windows 身份验证登录数据库实例

要使用 Windows 身份验证登录,您必须使用 RDS 数据库实例主用户凭证在 Active Directory 用户或组的数据库实例上创建 SQL 登录。如果您使用本地 Active Directory 中的组或用户,您必须创建信任关系

1.    使用 SQL Server Management Studio (SSMS) 登录使用主用户的 Amazon RDS SQL Server 数据库实例。

2.    使用 T-SQL 创建 Windows 身份验证登录:

CREATE LOGIN [<Domain Name>\<user or group>] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];

注意:仅支持使用 T-SQL在 RDS SQL Server 创建 Windows 身份验证登录。不支持使用图形界面在 SQL Server Management Studio 或类似平台创建登录。

3.    使用 Windows 身份验证连接数据库实例。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?