设置自托管式 Active Directory
要设置自托管式 AD,请执行以下步骤。
主题
步骤 1:在 AD 中创建组织单位
重要
对于任何 AWS 账户,如果它拥有已加入自行管理的 AD 域的 RDS for Db2 数据库实例,我们建议为它创建专用 OU 以及作用域为该 OU 的服务凭证。通过指定专用 OU 和服务凭证,您可以避免权限冲突并遵循最低权限原则。
在 AD 中创建 OU
-
以域管理员身份连接到您的 AD 域。
-
打开 Active Directory 用户和计算机,然后选择要在其中创建 OU 的域。
-
打开域的上下文菜单,选择新建,然后选择组织单元。
-
为 OU 输入名称。
-
选中保护容器免遭意外删除复选框。
-
选择确定。您的新 OU 将出现在您的域下。
步骤 2:在您的 AD 中创建 AD 域服务账户
将域服务账户凭证用作 AWS Secrets Manager 中的密钥。
在 AD 中创建 AD 域服务账户
-
打开 Active Directory 用户和计算机,然后选择要在其中创建用户的域和 OU。
-
打开用户的上下文菜单,然后依次选择新建和用户。
-
输入用户的名字、姓氏和登录名。选择下一步。
-
输入用户的密码。请勿选择用户下次登录时必须更改密码。请勿选择账户已禁用。选择下一步。
-
选择确定。新用户将出现在您的域下。
步骤 3:将控制权委派给 AD 域服务账户
A 部分:使用控制权委派向导委派权限
将控制权委派给域中的 AD 域服务账户
-
打开 Active Directory 用户和计算机 Microsoft 管理控制台(MMC)管理单元,然后选择要在其中创建用户的域。
-
打开您之前创建的 OU 的上下文菜单,然后选择委派控制权。
-
在控制权委派向导上,选择下一步。
-
在用户或组部分,选择添加。
-
在选择用户、计算机或组部分,输入您创建的 AD 域服务账户,然后选择检查名称。如果您的 AD 域服务账户检查获得成功,请选择确定。
-
在用户或组部分,确认您的 AD 域服务账户已添加,然后选择下一步。
-
在要委派的任务部分,选择创建要委派的自定义任务,然后选择下一步。
-
在 Active Directory 对象类型部分:
-
选择仅文件夹中的以下对象。
-
选择用户对象。
-
选择在此文件夹中创建选定对象。
-
选择删除此文件夹中的选定对象,然后选择下一步。
-
-
在权限部分:
-
将常规保持为选中状态。
-
选择特定于属性。
-
选择创建/删除特定的子对象。
-
选择重置密码。
-
选择读取 msDS-SupportedEncryptionTypes。
-
选择写入 msDS-SupportedEncryptionTypes。
-
-
对于完成控制权委派向导,请检查并确认您的设置,然后选择完成。
B 部分:使用 PowerShell 委派 servicePrincipalName 权限
控制权委派向导不会公开用户对象的 servicePrincipalName 属性。在域控制器上运行以下 PowerShell 脚本,来向 servicePrincipalName 授予对 OU 中的用户对象进行 AD 域服务账户读写访问的权限。
将 service-account 替换为您在步骤 2 中创建的 AD 域服务账户的名称,并更新 OU 可分辨名称以匹配您在步骤 1 中创建的 OU。
$ou = "OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain" $user = Get-ADUser "service-account" $acl = Get-Acl "AD:\$ou" $schemaPath = (Get-ADRootDSE).schemaNamingContext $spnSchema = Get-ADObject -SearchBase $schemaPath -Filter {lDAPDisplayName -eq "servicePrincipalName"} -Properties schemaIDGUID $spnGuid = New-Object Guid (,$spnSchema.schemaIDGUID) $userGuid = New-Object Guid "bf967aba-0de6-11d0-a285-00aa003049e2" $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule( $user.SID, "ReadProperty,WriteProperty", "Allow", $spnGuid, "Descendents", $userGuid ) $acl.AddAccessRule($ace) Set-Acl "AD:\$ou" $acl
要验证权限是否已正确地应用,请运行以下 PowerShell 脚本:
$acl = Get-Acl "AD:\$ou" $acl.Access | Where-Object { $_.IdentityReference -like "*service-account*" } | Format-List
步骤 4:创建 AWS KMS 密钥
KMS 密钥用于加密您的 AWS 密钥。
注意
对于加密密钥,请勿使用 AWS 原定设置 KMS 密钥。确保在包含要加入自行管理的 AD 的 RDS for Db2 数据库实例的相同 AWS 账户中创建 AWS KMS 密钥。
创建 AWS KMS 密钥
-
在 https://console.aws.amazon.com/kms/
上,打开 AWS 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": "*" } -
选择结束。
步骤 5:创建 AWS 密钥
注意
确保在包含要加入自行管理的 AD 的 RDS for Db2 数据库实例的相同 AWS 账户中创建密钥。
创建密钥
-
打开位于 https://console.aws.amazon.com/secretsmanager/
的 AWS Secrets Manager 控制台。选择存储新密钥。 -
对于密钥类型,请选择其他密钥类型。
-
对于键/值对,请添加您的两个密钥:
-
对于第一个密钥,请输入
SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME。 -
对于第一个密钥的值,请仅输入 AD 用户的用户名(不带域前缀)。请勿包含域名,因为这会导致实例创建失败。
-
对于第二个密钥,请输入
SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD。 -
对于第二个密钥的值,请输入您在域中为 AD 用户创建的密码。
-
-
对于加密密钥,输入您在上一步中创建的 KMS 密钥,然后选择下一步。
-
在密钥名称中,输入一个描述性名称,以便您稍后查找自己的密钥。
-
(可选)对于描述,输入密钥名称的描述。
-
对于资源权限,选择编辑。
-
将以下策略添加到权限策略中:
注意
我们建议您在策略中使用
aws:sourceAccount和aws:sourceArn条件,以避免出现混淆代理人问题。将您的 AWS 账户用于aws:sourceAccount,并将 RDS for Db2 数据库实例 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:创建或修改 Db2 数据库实例
您可以使用 AWS CLI 将 RDS for Db2 数据库实例与自行管理的 AD 域关联。您可以通过下列方式之一来执行该操作:
-
使用 create-db-instance CLI 命令创建新的 Db2 数据库实例。有关说明,请参阅创建 Amazon RDS 数据库实例。
-
使用 modify-db-instance CLI 命令修改现有 Db2 数据库实例。有关说明,请参阅修改 Amazon RDS 数据库实例。
使用 AWS CLI 时,数据库实例需要以下参数才能使用您创建的自行管理的 AD 域:
-
对于
--domain-fqdn参数,请使用自托管式 AD 的完全限定域名(FQDN)。 -
对于
--domain-ou参数,请使用您在自托管式 AD 中创建的 OU。 -
对于
--domain-auth-secret-arn参数,使用您在上一步中创建的密钥 ARN 的值。 -
对于
--domain-dns-ips参数,请使用自托管式 AD 的 DNS 服务器的主要 IPv4 地址和辅助 IPv4 地址。如果您没有辅助 DNS 服务器 IP 地址,请输入主 IP 地址两次。
以下 CLI 命令创建一个新的 RDS for Db2 数据库实例并将其加入自行管理的 AD 域。
对于 Linux、macOS 或 Unix:
aws rds create-db-instance \ --db-instance-identifiermy-DB-instance\ --db-instance-class db.m6i.large \ --allocated-storage 50 \ --engine db2-se \ --engine-version 11.5 \ --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-identifiermy-DB-instance^ --db-instance-class db.m6i.large ^ --allocated-storage 50 ^ --engine db2-se ^ --engine-version 11.5 ^ --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"