Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

将 Windows 身份验证与 Microsoft SQL Server 数据库实例结合使用

当用户连接到运行 Microsoft SQL Server 的 Amazon RDS 数据库实例时,您可以使用 Windows 身份验证来验证用户。数据库实例使用 AWS Directory Service for Microsoft Active Directory(企业版) (也称为 Microsoft AD) 来启用 Windows 身份验证。当用户对联接到信任域的 SQL Server 数据库实例进行身份验证时,身份验证请求将转发至您使用 AWS Directory Service 创建的域目录。

Amazon RDS 支持在除以下区域外的所有 AWS 区域对 SQL Server 使用 Windows 身份验证:

  • 美国西部(加利福尼亚北部)

  • 亚太地区(孟买)

  • 南美洲(圣保罗)

Amazon RDS 使用混合模式进行 Windows 身份验证。此方式意味着,主用户 (用于创建 SQL Server 数据库实例的名称和密码) 使用 SQL 身份验证。由于主用户账户是特权凭证,您应限制对此账户的访问。

要使用本地或自承载 Microsoft Active Directory 获取 Windows 身份验证,您需要创建林信任。有关使用 AWS Directory Service 设置林信任的更多信息,请参阅创建信任关系 (Microsoft AD)

要为 SQL Server 数据库实例设置 Windows 身份验证,请执行下列步骤 (本节中更为详细地介绍):

  1. 使用 AWS Directory Service for Microsoft Active Directory(企业版) (也称为 Microsoft AD) 从 AWS 控制台或 AWS Directory Service API 创建 Microsoft AD 目录。

     

  2. 如果您使用 AWS CLI 或 Amazon RDS API 创建 SQL Server 数据库实例,则需创建使用托管 IAM 策略 AmazonRDSDirectoryServiceAccess 的 IAM 角色。此角色允许 Amazon RDS 调用您的目录。如果您使用 AWS 控制台创建 SQL Server 数据库实例,则 AWS 将为您创建 IAM 角色。

     

  3. 使用 Microsoft Active Directory 工具在 Microsoft AD 目录中创建和配置用户与组。有关在 Active Directory 中创建用户和组的更多信息,请参阅 AWS Directory Service 文档中的添加用户和组 (Simple AD 和 Microsoft AD)。 添加用户和组 (Simple AD 和 Microsoft AD)

     

  4. 使用 Amazon RDS 从 AWS 控制台、AWS CLI 或 Amazon RDS API 新建 SQL Server 数据库实例。在创建请求中,提供在创建目录时生成的域标识符 (“d-*”标识符) 和您创建的角色的名称。通过为数据库实例设置IAM 角色 参数并在与域目录相同的 VPC 中查找现有 SQL Server 数据库实例,您还可将此数据库实例为使用 Windows 身份验证。

     

  5. 使用 Amazon RDS 主用户 凭证连接到 SQL Server 数据库实例,就像连接到任何其他数据库实例一样。由于数据库实例联接到 Microsoft AD 域,因此您可从其域的 Active Directory 用户和组中预置 SQL Server 登录名和用户 (称为 SQL Server“Windows”登录名)。数据库权限是通过为这些 Windows 登录名授予和撤销的标准 SQL Server 权限管理的。

     

为 Kerberos 身份验证创建终端节点

基于 Kerberos 的身份验证需要终端节点是客户指定的主机名、句点,然后是完全限定的域名 (FQDN)。例如,以下是您可以用于基于 Kerberos 身份验证的终端节点的示例。在此示例中,SQL Server 数据库实例主机名为 ad-test,域名为 corp-ad.company.com

ad-test.corp-ad.company.com

如果您要检查以确保连接使用的是 Kerberos,可运行以下查询:

Copy
SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

为 SQL Server 数据库实例设置 Windows 身份验证

使用 AWS Directory Service for Microsoft Active Directory(企业版) (也称为 Microsoft AD) 为 SQL Server 数据库实例设置 Windows 身份验证。要设置 Windows 身份验证,请执行下列步骤:

步骤 1:使用 AWS Directory Service for Microsoft Active Directory(企业版) 创建目录

AWS Directory Service 将在 AWS 云中创建一个完全托管的 Microsoft Active Directory。当您创建 Microsoft AD 目录时,AWS Directory Service 将代表您创建两个域控制器和 DNS 服务器。目录服务器是在 VPC 的不同子网中创建的;此冗余帮助确保您的目录即使在出现故障时仍可访问。

创建 Microsoft AD 目录时,AWS Directory Service 将代表您执行下列任务:

  • 在 VPC 中设置 Microsoft Active Directory。

  • 使用用户名 Admin 和指定密码创建目录管理员账户。您可以使用此账户管理您的目录。

    注意

    请务必保存此密码。AWS Directory Service 不会存储此密码并且它无法检索或重置。

  • 为目录控制器创建安全组。

当您启动 AWS Directory Service for Microsoft Active Directory(企业版) 时,AWS 将创建一个包含您的所有目录对象的部门 (OU)。此 OU (具有您在创建目录时键入的 NetBIOS 名称) 位于域根目录中。此域根目录由 AWS 拥有和管理。

使用您的 Microsoft AD 目录创建的 admin 账户对您的 OU 的最常见管理活动具有以下权限:

  • 创建、更新或删除用户、组和计算机

  • 将资源添加到域 (如文件或打印服务器),然后为 OU 中的用户和组分配这些资源的权限

  • 创建额外的 OU 和容器

  • 委托授权

  • 创建和链接组策略

  • 从 Active Directory 回收站还原删除的对象

  • 在 Active Directory Web 服务上运行 AD 和 DNS Windows PowerShell 模块

admin 账户还具有执行下列域范围活动的权限:

  • 管理 DNS 配置 (添加、删除或更新记录、区域和转发器)

  • 查看 DNS 事件日志

  • 查看安全事件日志

使用 AWS Directory Service for Microsoft Active Directory(企业版) 创建目录

  1. AWS Directory Service 控制台导航窗格中,选择 Directories 并选择 Set up Directory

  2. 选择 Create Microsoft AD。Microsoft AD 是当前唯一支持用于 Amazon RDS 的选项。

  3. 提供以下信息:

    Directory DNS

    目录的完全限定名称,如 corp.example.com。

    NetBIOS name

    目录的短名称,如 CORP。

    管理员密码

    目录管理员的密码。目录创建过程将使用用户名 Admin 和此密码创建一个管理员账户。

    目录管理员密码并且不能包含单词“admin”。此密码区分大小写,且长度必须介于 8 到 64 个字符之间。至少,它还必须包含下列四种类别中三种类别的一个字符:

    • 小写字母 (a-z)

    • 大写字母 (A-Z)

    • 数字 (0-9)

    • 非字母数字字符 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    确认密码

    重新键入管理员密码。

    说明

    目录的可选描述。

  4. VPC Details 部分中提供以下信息并选择 Next Step

    VPC

    目录的 VPC。请注意,必须在此同一 VPC 中创建 SQL Server 数据库实例。

    Subnets

    为目录服务器选择子网。两个子网必须位于不同的可用区。

  5. 查看目录信息并进行必要的更改。如果信息正确,请选择 Create Microsoft AD

     “目录详细信息”页的图形

目录创建需要几分钟时间。创建成功后,Status 值将更改为 Active

要查看有关您的目录的信息,请在目录列表中选择您的目录。请记下目录 ID;您将在创建或修改 SQL Server 数据库实例时需要此值。

 “详细信息”页的图形

步骤 2:创建 Amazon RDS 使用的 IAM 角色

如果您使用 AWS 控制台创建您的 SQL Server 数据库实例,则可跳过此步。如果您已使用 AWS CLI 或 Amazon RDS API 创建 SQL Server 数据库实例,则必须创建使用托管 IAM 策略 AmazonRDSDirectoryServiceAccess 的 IAM 角色。此角色允许 Amazon RDS 为您调用 AWS Directory Service。

以下 IAM 策略 AmazonRDSDirectoryServiceAccess 提供了对 AWS Directory Service 的访问权限:

Copy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication" ], "Effect": "Allow", "Resource": "*" } ] }

使用此策略创建 IAM 角色。有关创建 IAM 角色的更多信息,请参阅创建客户托管策略

步骤 3:创建和配置用户和组

您可使用 Active Directory 用户和计算机工具 (Active Directory Domain Services 和 Active Directory Lightweight Directory Services 工具的一部分) 创建用户和组。用户表示有权访问您的目录的独立个人或实体。对于针对用户组授予或拒绝权限非常有用,从而不必将这些权限应用于每个独立用户。

要在 AWS Directory Service 目录中创建用户和组,您必须连接到为 AWS Directory Service 目录成员的 Windows EC2 实例并且已作为有权创建用户和组的用户登录。有关更多信息,请参阅添加用户和组 (Simple AD 和 Microsoft AD)

步骤 4:创建或修改 SQL Server 数据库实例

接下来,创建或修改 Microsoft SQL Server 数据库实例以用于目录。您可以通过下列方式之一来执行此操作:

  • 创建新的 SQL Server 数据库实例

  • 修改现有 SQL Server 数据库实例

  • 从数据库快照还原 SQL Server 数据库实例

  • 通过时间点还原来还原 SQL Server 数据库实例

Windows 身份验证仅受 VPC 中的 SQL Server 数据库实例支持,并且数据库实例必须与目录位于相同的 VPC 中。

数据库实例需要多个参数才能使用您创建的域目录:

  • 对于参数,您必须输入创建目录时生成的域标识符 (“d-*”标识符)。

  • 同样使用创建目录时使用的 VPC。

  • 使用在 VPC 中允许出口的安全组,以便数据库实例可与目录通信。

步骤 5:创建 Windows 身份验证 SQL Server 登录名

使用 Amazon RDS 主用户 凭证连接到 SQL Server 数据库实例,就像连接到任何其他数据库实例一样。由于数据库实例已联接到 Microsoft AD 域,您可从域中的 Active Directory 用户和组中预置 SQL Server 登录名和用户。数据库权限是通过为这些 Windows 登录名授予和撤销的标准 SQL Server 权限管理的。

要允许某 Active Directory 用户对 SQL Server 进行身份验证,此用户或其所属的组必须存在 SQL Server Windows 登录名。访问权限的精细控制是通过对这些 SQL Server 登录名授予和撤销权限来处理的。如果某用户无任何相应的 SQL Server 登录名并且不是使用相应 SQL Server 登录名的组的成员,则该用户无法访问 SQL Server 数据库实例。

创建 Active Directory SQL Server 登录名需要 ALTER ANY LOGIN 权限。如果您尚未使用此权限创建任何登录名,请使用 SQL Server 身份验证作为数据库实例的主用户 连接。运行以下数据定义语言 (DDL) 命令为 Active Directory 用户或组创建 SQL Server 登录名:

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

用户或组必须使用 Windows 2000 之前格式为 domainName\login_name 的登录名指定。您不能使用格式为 login_name@DomainName 的用户主体名 (UPN)。有关 CREATE LOGIN 的更多信息,请转至 Microsoft Developer Network 文档中的 https://msdn.microsoft.com/en-us/library/ms189751.aspx

域中用户 (人和应用程序) 现在均可从联接域的客户端计算机使用 Windows 身份验证连接到 RDS SQL Server 实例。

在域中管理数据库实例

您可以使用 AWS 控制台、AWS CLI 或 Amazon RDS API 管理您的数据库实例及其与域的关系,如将数据库实例移进/出域或在各域之间移动。

例如,使用 Amazon RDS API,您可以执行下列操作:

  • 要为失败的成员资格重新尝试域联接,请使用 ModifyDBInstance API 操作并指定当前成员资格的目录 ID。

  • 要为成员资格更新 IAM 角色名称,请使用 ModifyDBInstance API 操作并指定当前成员资格的目录 ID 和新的 IAM 角色。

  • 要从域中删除数据库实例,请使用 ModifyDBInstance API 操作并指定“无”作为域参数。

  • 要将数据库实例从一个域移至另一个域,请使用 ModifyDBInstance API 操作并指定新域的域标识符作为域参数。

  • 要列出每个数据库实例的成员资格,请使用 DescribeDBInstances API 操作。

了解域成员资格

在创建或修改数据库实例后,实例将成为域的成员。AWS 控制台将指示数据库实例的域成员资格状态。数据库实例的状态可以是以下状态之一:

  • 已联接 - 实例是域的成员。

  • 正在联接 - 实例正处于成为域成员的过程中。

  • 待联接 - 实例成员资格待定。

  • 待维护联接 - AWS 将在下一计划维护期间尝试使实例成为域成员。

  • 待删除 - 等待从域中删除实例。

  • 待维护删除 - AWS 将在下一计划维护期间尝试从域中删除实例。

  • 失败 - 配置问题阻碍实例联接域。在重新发出实例修改命令之前检查并修复配置。

  • 正在删除 - 正从域中删除实例。

成为域成员的请求可能因网络连接问题或不正确的 IAM 角色而失败。如果创建数据库实例或修改现有实例以及尝试成为域成员失败,则应重新发出修改命令或修改新创建的实例以联接域。

使用 Windows 身份验证连接到 SQL Server

要使用 Windows 身份验证连接到 SQL Server,您必须作为域用户登录联接域的计算机。在启动 SQL Server Management Studio 之后,请选择 Windows 身份验证作为身份验证类型,如下所示。

还原 SQL Server 数据库实例,然后将其添加到域中

您可还原数据库快照或为 SQL Server 数据库实例执行时间点还原,然后将其添加到域中。数据库实例还原后,使用步骤 4:创建或修改 SQL Server 数据库实例部分中介绍的过程修改此实例以将数据库实例添加到域中。

相关主题