我为 AWS 账户配置了 AWS Directory Service for Microsoft Active Directory。我在尝试创建 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 数据库 (DB) 实例时遇到了问题。
简述
在创建 Amazon RDS for SQL Server 数据库实例时,您可能会遇到以下问题之一:
- AWS 托管的 Microsoft AD 不可用。
- 您会收到“Failed to join a host to a domain”错误消息,或者 Amazon Aurora 和 RDS 控制台上的目录状态显示 Failed(失败)。
- 您无法使用 Windows Authentication 登录数据库实例。
您可以在多个 AWS 账户和虚拟私有云 (VPC) 之间对 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 未列出或不可用
重要信息: 要在 Aurora 和 RDS 控制台上列出 AWS Managed Microsoft AD,托管域类型必须为 AWS Managed Active Directory。
如果 AWS Managed Microsoft AD 与数据库实例位于不同的区域,则 Amazon RDS 不会在您创建或修改数据库实例时列出该目录。要解决此问题,请确保数据库实例与您的目录位于同一区域。
要检查您的数据库实例是否与您的目录位于同一区域,请完成以下步骤:
- 打开 Aurora 和 RDS 控制台。
- 在导航窗格中,选择 Databases(数据库)。
- 选择您的数据库实例。
- 在 Summary(摘要)部分中,记下您的数据库实例所在的 Region(区域)。
- 使用 AWS Directory Service 控制台确认目录与数据库实例位于同一区域。
如果您的 AWS Managed Microsoft AD 与数据库实例位于不同的账户中,请完成以下步骤:
- 与您要在其中创建数据库实例的 AWS 账户共享该目录。
- 使用数据库实例的账户打开 AWS Directory Service 控制台。
- 验证域是否处于 SHARED(已分享)状态。
- 使用 Directory ID 值将数据库实例加入域。
将数据库实例加入域时,您会收到错误或发现 Directory Status(目录状态)显示为 Failed(失败)
将数据库实例加入域时,您可能会收到“Failed to join a host to a domain.Domain membership status for instance XXXXXXX has been set to Failed”错误消息。或者,Directory status(目录状态)可能显示为 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 会创建安全组。有关添加到安全组的入站和出站规则的列表,请参阅 What gets created with your AWS Managed Microsoft AD(使用 AWS Managed Microsoft AD 创建的内容)。
- 检查您的数据库实例和 AWS Managed Microsoft AD 是否位于不同的 VPC 或账户中。
注意: 如果是这样,请确保有正确的路由将数据库实例连接到 AWS Managed Microsoft AD。此外,请确保 Microsoft Managed AD 有正确的路由到达数据库实例。
确定并解决域加入失败的潜在原因后,完成以下步骤,将域重新加入数据库实例:
- 打开 Aurora 和 RDS 控制台。
- 在导航窗格中,选择 Databases(数据库)。
- 选择未能加入域的数据库实例,然后选择 Modify(修改)。
- 在 Microsoft SQL Server Windows Authentication(Microsoft SQL Server Windows 身份验证)部分中,对于 Directory(目录),选择 None(无)。
- 选择 Apply immediately(立即应用)。
注意: 修改完成后,数据库实例会自动重启。
- 在导航窗格中,选择 Databases(数据库)。
- 选择数据库实例,然后选择 Modify(修改)。
- 在 Microsoft SQL Server Windows Authentication(Microsoft SQL Server Windows 身份验证)部分中,对于 Directory(目录),选择您的目录。
- 选择 Apply immediately(立即应用)。
注意: 修改完成后,数据库实例会再次重启。
调用 ModifyDBInstance 操作时出现 InvalidParameterCombination 错误
当您调用 ModifyDBInstance 操作时,您可能会收到“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) 以主用户身份登录数据库实例。
- 运行以下命令来创建 Windows Authentication 登录名:
CREATE LOGIN [Domain Name\user or group] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
注意: 将 Domain Name\user or group 替换为您的域名和要使用的用户或组。在 RDS for SQL Server 实例上创建 Windows Authentication 登录名时,必须使用 T-SQL。您不能使用图形用户界面 (GUI) 在 SQL SSMS 中创建登录名。
- 使用 Windows Authentication 连接到数据库实例。
相关信息
将 AWS Managed Active Directory 用于 RDS for SQL Server
无法连接到 Amazon RDS 数据库实例
Joining your Amazon RDS DB instances across accounts to a single shared domain(跨账户将您的 Amazon RDS 数据库实例加入单个共享域)
Migrating Microsoft SQL Server databases to the AWS Cloud(将 Microsoft SQL Server 数据库迁移到 AWS 云)