如何使用本地 Active Directory 登录到 RDS for SQL Server 实例排查问题?

上次更新日期:2022 年 10 月 21 日

使用本地 Active Directory 登录时,我无法访问适用于 Microsoft SQL Server 的 Amazon Relational Database Service(Amazon RDS)。如何排查此问题?

简短描述

设置使用 Amazon RDS 进行 Windows 身份验证时,必须建立森林式信任。此信任使用 AWS Directory Service for Microsoft Active Directory(AWS Managed Microsoft AD)建立。无论您使用的是本地还是自主管理 AWS Managed Microsoft AD,都会建立森林式信任。配置信任关系后使用本地登录时,可能会出现以下登录错误,原因有很多:

“Login Failed.The Login is From an Untrusted Domain and Cannot be Used with Windows Authentication”(登录失败。登录信息来自不受信任的域,无法用于 Windows 身份验证)

解决方法

要排查 Active Directory 登录错误,请检查以下各项:

Amazon RDS 域状态

创建或修改数据库实例后,该实例将成为域成员。RDS 控制台指示数据库实例的域成员资格状态。有关数据库实例状态的更多信息,请参阅 了解域成员资格。如果将数据库实例加入域时或 RDS 控制台上的目录状态收到“Failed”(失败)错误,请参阅 重新加入数据库实例

如果收到 AWS Identity and Access Management(IAM)错误,这可能是由于未使用默认 IAM 角色 rds-directoryservice-access-role。如果您使用自定义 IAM 角色,则附加默认策略 AmazonRDSDirectoryServiceAccess 以解决该错误。

信任关系

您可以在 AWS Managed Microsoft AD 和自主管理(本地)目录之间配置单向和双向的外部和森林式信任关系。您还可以在 AWS Cloud 中的多个 AWS Managed Microsoft AD 之间配置单向和双向的外部和森林式信任关系。AWS Managed Microsoft AD 支持所有三个信任关系方向:传入、传出和双向。要通过本地登录访问 RDS 控制台,请确保信任状态处于“已验证”状态。有关验证信任关系的更多信息,请参阅创建、验证或删除信任关系

森林范围和选择性身份验证

使用 AWS Directory Service 控制台建立森林式信任时,您可以选择启用“选择性身份验证”。如果未启用此选项,则身份验证将视为“森林范围身份验证”。

森林范围身份验证

启用森林级身份验证后,森林的域控制器将对可信森林用户提出的所有访问请求进行身份验证。身份验证成功后,将根据资源访问控制列表(ACL)授予或拒绝对资源的访问权限。

这种方法存在风险。外国用户(来自可信森林)成功通过身份验证后,他们将成为“Authenticated User”(经过身份验证的用户)组的成员。该组没有任何永久成员,成员资格根据身份验证动态计算。账户成为“Authenticated User”(经过身份验证的用户)组的成员后,该账户可以访问“Authenticated User”(经过身份验证的用户)组有权访问的所有资源。

选择性身份验证

要控制身份验证,您可以选择选择性身份验证级别。在此级别,默认情况下,并非所有用户均由域控制器进行身份验证。相反,当域控制器检测到身份验证请求来自可信森林时,域控制器会验证该用户账户。域控制器验证用户账户是否被授予对持有该对象资源的独占权限。

启用选择性身份验证后,必须添加本地 Active Directory 的相应用户和组。必须将用户和组添加到 AWS Managed AD 的“AWS Delegated Allowed to Authenticate Objects”(允许 AWS Delegated 对对象进行身份验证)组。“AWS Delegated Allowed to Authenticate Objects”(允许 AWS Delegated 对对象进行身份验证)已分配“Allowed to Authenticate”(允许进行身份验证)权限。属于该组的所有用户均可访问 RDS 实例。不属于该组的用户无法访问 Amazon RDS SQL Server。

注意:“AWS Delegated Allowed to Authenticate Objects”(允许 AWS Delegated 对对象进行身份验证)组在配置 AWS Managed AD 后默认创建。该组的成员可以对 AWS 预留组织单位(OU)中的计算机资源进行身份验证。只有具有选择性身份验证信任的本地对象才需要这样做。

登录和密码状态

本地 Active Directory 登录密码和状态不能过期或锁定。如果是,请使用以下命令检查登录状态:

net user username/domain

您只需要将用户名更改为要检查其状态的用户即可。域保持原样。

重复的服务主体名称(SPN)

默认情况下,Amazon RDS 会根据需要创建 SPN。为本地 Active Directory 登录创建其他用途的额外 SPN 可能会导致登录失败。有关更多信息,请参阅识别、删除和验证 SPN

安全补丁

如果您看到本地 Active Directory 登录错误并已验证信任关系,请检查最新的安全补丁。检查分布式控制系统(DCS)或域名系统(DNS)服务器是否存在与 Windows 更新(KB)相关的已知问题。如果由于安全补丁或 KB 而出现任何问题,则可能必须回滚更新。如果回滚更新无法解决问题,请尝试应用 Microsoft 提供的修复程序(如果有)。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?