设置自托管式 Active Directory
要设置自托管式 AD,请执行以下步骤。
主题
步骤 1:在 AD 中创建组织单位
重要
我们建议为任何拥有已加入您自托管式 AD 域的 RDS for SQL Server 数据库实例的 Amazon 账户创建专用 OU 以及作用域为该 OU 的服务凭证。通过专用 OU 和服务凭证,您可以避免权限冲突并遵循最低权限原则。
在 AD 中创建 OU
-
以域管理员身份连接到您的 AD 域。
-
打开 Active Directory 用户和计算机,然后选择要在其中创建 OU 的域。
-
右键单击该域并选择新建,然后选择组织单位。
-
为 OU 输入名称。
-
选中保护容器免遭意外删除复选框。
-
单击 确定。您的新 OU 将出现在您的域下。
步骤 2:在您的 AD 中创建 AD 域用户
域用户凭证将用于 Amazon Secrets Manager 中的密钥。
在您的 AD 中创建 AD 域用户
-
打开 Active Directory 用户和计算机,然后选择要在其中创建用户的域和 OU。
-
右键单击用户对象并选择新建,然后选择用户。
-
输入用户的名字、姓氏和登录名。单击下一步。
-
输入用户的密码。请勿选择“用户下次登录时必须更改密码”。请勿选择“账户已禁用”。单击下一步。
-
单击 确定。您的新用户将出现在您的域下。
步骤 3:将控制权委派给 AD 用户
将控制权委派给域中的 AD 域用户
-
打开 Active Directory 用户和计算机 MMC 管理单元,然后选择要在其中创建用户的域。
-
右键单击您之前创建的 OU,然后选择委派控制权。
-
在委派控制权向导页面上,单击下一步。
-
在用户或组部分,单击添加。
-
在选择用户、计算机或组部分,输入您创建的 AD 用户,然后单击检查名称。如果您的 AD 用户检查成功,请单击确定。
-
在用户或组部分,确认您的 AD 用户已添加,然后单击下一步。
-
在要委派的任务部分,选择创建要委派的自定义任务,然后选择下一步。
-
在 Active Directory 对象类型部分:
-
选择仅文件夹中的以下对象。
-
选择计算机对象。
-
选择在此文件夹中创建选定对象。
-
选择删除此文件夹中的选定对象,然后单击下一步。
-
-
在权限部分:
-
将常规保持为选中状态。
-
选择已验证写入 DNS 主机名。
-
选择已验证写入服务主体名称,然后单击下一步。
-
-
对于完成控制权委派向导,请检查并确认您的设置,然后单击完成。
步骤 4:创建 Amazon KMS 密钥
KMS 密钥用于加密您的 Amazon 密钥。
要创建 Amazon KMS 密钥
注意
对于加密密钥,请勿使用 Amazon 原定设置 KMS 密钥。确保在包含要加入自托管式 AD 的 RDS for SQL Server 数据库实例的 Amazon 账户中创建 Amazon KMS 密钥。
-
在 Amazon KMS 控制台中,选择创建密钥。
-
对于密钥类型,选择对称。
-
对于密钥用法,选择加密和解密。
-
对于 Advanced options (高级选项):
-
对于密钥材料源,选择 KMS。
-
对于区域性,选择单区域密钥,然后单击下一步。
-
-
对于别名,提供 KMS 密钥的名称。
-
(可选)对于描述,提供 KMS 密钥的描述。
-
(可选)对于标签,提供 KMS 密钥的标签,然后单击下一步。
-
对于密钥管理员,提供 IAM 用户的名称并将其选中。
-
对于密钥删除,确保选中允许密钥管理员删除此密钥复选框,然后单击下一步。
-
对于密钥用户,请提供上一步中的 IAM 用户并将其选中。单击下一步。
-
审核配置。
-
对于密钥策略,请在策略声明中包括以下内容:
{ "Sid": "Allow use of the KMS key on behalf of RDS", "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "kms:Decrypt", "Resource": "*" }
-
单击 Finish (完成)。
步骤 5:创建 Amazon 密钥
创建密钥
注意
确保在包含要加入自托管式 AD 的 RDS for SQL Server 数据库实例的 Amazon 账户中创建密钥。
-
在 Amazon Secrets Manager 下,选择存储新密钥。
-
对于密钥类型,请选择其他密钥类型。
-
对于键/值对,请添加您的两个密钥:
对于第一个密钥,请输入
CUSTOMER_MANAGED_ACTIVE_DIRECTORY_USERNAME
。对于第一个密钥的值,请输入您在上一步中在域上创建的 AD 用户的名称。
对于第二个密钥,请输入
CUSTOMER_MANAGED_ACTIVE_DIRECTORY_PASSWORD
。对于第二个密钥的值,请输入您在域中为 AD 用户创建的密码。
-
对于加密密钥,输入您在上一步中创建的 KMS 密钥,然后单击下一步。
-
在密钥名称中,输入一个描述性名称,以便您稍后查找自己的密钥。
-
(可选)对于描述,输入密钥名称的描述。
-
对于资源权限,请单击编辑。
-
将以下策略添加到权限策略中:
注意
我们建议您在策略中使用
aws:sourceAccount
和aws:sourceArn
条件,以避免出现混淆代理人问题。将您的 Amazon Web Services 账户用于aws:sourceAccount
,并将 RDS for SQL Server 数据库实例 ARN 用于aws:sourceArn
。有关更多信息,请参阅 防范跨服务混淆代理问题。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "StringEquals": { "aws:sourceAccount": "
123456789012
" }, "ArnLike": { "aws:sourceArn": "arn:aws:rds:us-west-2
:123456789012
:db:*
" } } } ] } -
单击保存,然后单击下一步。
-
对于配置轮换设置,保留原定设置值并选择下一步。
-
查看密钥的设置,然后单击存储。
-
选择您创建的密钥,然后复制密钥 ARN 的值。下一步将使用它来设置自托管式 Active Directory。
步骤 6:创建或修改 SQL Server 数据库实例
您可以使用控制台、CLI 或 RDS API 将 RDS for SQL Server 数据库实例与自托管式 AD 域关联。您可以通过下列方式之一来执行该操作:
-
使用控制台、create-db-instance CLI 命令或 CreateDBInstance RDS API 操作创建新的 SQL Server 数据库实例。
有关说明,请参阅创建 Amazon RDS 数据库实例。
-
使用控制台、modify-db-instance CLI 命令或 ModifyDBInstance RDS API 操作修改现有 SQL Server 数据库实例。
有关说明,请参阅修改 Amazon RDS 数据库实例。
-
使用控制台、restore-db-instance-from-db-snapshot CLI 命令或 RestoreDBInstanceFromDBSnapshot RDS API 操作,从数据库快照还原 SQL Server 数据库实例。
有关说明,请参阅还原到数据库实例。
-
使用控制台、restore-db-instance-to-point-in-time CLI 命令或 RestoreDBInstanceToPointInTime RDS API 操作,将 SQL Server 数据库实例还原到某个时间点。
有关说明,请参阅将 Amazon RDS 的数据库实例还原到指定时间。
使用 Amazon CLI 时,数据库实例需要以下参数才能使用您创建的自托管式 Active Directory 域:
-
对于
--domain-fqdn
参数,请使用自托管式 Active Directory 的完全限定域名(FQDN)。 -
对于
--domain-ou
参数,请使用您在自托管式 AD 中创建的 OU。 -
对于
--domain-auth-secret-arn
参数,使用您在上一步中创建的密钥 ARN 的值。 -
对于
--domain-dns-ips
参数,请使用自托管式 AD 的 DNS 服务器的主要 IPv4 地址和辅助 IPv4 地址。如果您没有辅助 DNS 服务器 IP 地址,请输入主 IP 地址两次。
以下示例 CLI 命令显示了如何创建、修改和删除已加入自托管式 AD 域的 RDS for SQL Server 数据库实例。
重要
如果您修改数据库实例,将其加入自托管式 AD 域或将其从自托管式 AD 域中删除,则需要重启数据库实例才能使修改生效。您可以选择立即应用更改,也可以等到下一个维护时段。选择立即应用选项将导致单可用区数据库实例停机。多可用区数据库实例将在完成重启之前执行失效转移。有关更多信息,请参阅 使用计划修改设置。
以下 CLI 命令创建一个新的 RDS for SQL Server 数据库实例并将其加入自托管式 AD 域。
对于 Linux、macOS 或 Unix:
aws rds create-db-instance \ --db-instance-identifier
my-DB-instance
\ --db-instance-classdb.m5.xlarge
\ --allocated-storage50
\ --enginesqlserver-se
\ --engine-version15.00.4043.16.v1
\ --license-modellicense-included
\ --master-usernamemy-master-username
\ --master-user-passwordmy-master-password
\ --domain-fqdnmy_AD_domain.my_AD.my_domain
\ --domain-ouOU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain
\ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456"
\ --domain-dns-ips"10.11.12.13" "10.11.12.14"
对于 Windows:
aws rds create-db-instance ^ --db-instance-identifier
my-DB-instance
^ --db-instance-classdb.m5.xlarge
^ --allocated-storage50
^ --enginesqlserver-se
^ --engine-version15.00.4043.16.v1
^ --license-modellicense-included
^ --master-usernamemy-master-username
^ --master-user-passwordmy-master-password
^ --domain-fqdnmy-AD-test.my-AD.mydomain
^ --domain-ouOU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain
^ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \
^ --domain-dns-ips"10.11.12.13" "10.11.12.14"
以下 CLI 命令将现有 RDS for SQL Server 数据库实例修改为使用自托管式 Active Directory 域。
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
my-DB-instance
\ --domain-fqdnmy_AD_domain.my_AD.my_domain
\ --domain-ouOU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain
\ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456"
\ --domain-dns-ips"10.11.12.13" "10.11.12.14"
对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
my-DBinstance
^ --domain-fqdnmy_AD_domain.my_AD.my_domain
^ --domain-ouOU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain
^ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456"
^ --domain-dns-ips"10.11.12.13" "10.11.12.14"
以下 CLI 命令从自托管式 Active Directory 域中删除 RDS for SQL Server 数据库实例。
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
my-DB-instance
\ --disable-domain
对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
my-DB-instance
^ --disable-domain
步骤 7:创建 Windows 身份验证 SQL Server 登录名
使用 Amazon RDS 主用户凭证连接 SQL Server 数据库实例,就像连接任何其他数据库实例一样。由于数据库实例已加入自托管式 AD 域,因此您可以预调配 SQL Server 登录名和用户。您可以通过自托管式 AD 域中的 AD 用户和组实用程序执行此操作。通过对这些 Windows 登录名授予和撤销标准 SQL Server 权限来管理数据库权限。
为了使自托管式 AD 用户能够在 SQL Server 上进行身份验证,自托管式 AD 用户或该用户所属的自托管式 Active Directory 组必须存在 SQL Server Windows 登录名。访问权限的精细控制是通过对这些 SQL Server 登录名授予和撤销权限来处理的。自托管式 AD 用户没有 SQL Server 登录名,或者用户所属自托管式 AD 组中的登录名无法访问 SQL Server 数据库实例。
创建自托管式 AD SQL Server 登录名需要 ALTER ANY LOGIN 权限。如果您尚未使用此权限创建任何登录名,请使用 SQL Server 身份验证以数据库实例的主用户身份进行连接,并在主用户的上下文下创建自托管式 AD SQL Server 登录名。
您可以运行数据定义语言(DDL)命令(如以下示例),为自托管式 AD 用户或组创建 SQL Server 登录名。
注意
使用 Windows 2000 之前的登录名称指定用户和组,格式为
。您不能使用 my_AD_domain
\my_AD_domain_user
my_AD_domain_user
@
格式的用户主体名 (UPN)。my_AD_domain
USE [master] GO CREATE LOGIN [
my_AD_domain
\my_AD_domain_user
] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO
有关更多信息,请参阅 Microsoft 开发人员网络文档中的 CREATE LOGIN (Transact-SQL)
域中用户(人和应用程序)现在均可从加入自托管式 AD 域的客户端计算机使用 Windows 身份验证连接到 RDS for SQL Server 实例。