

# 设置自托管式 Active Directory
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp"></a>

要设置自托管式 AD，请执行以下步骤。

**Topics**
+ [步骤 1：在 AD 中创建组织单位](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU)
+ [步骤 2：在您的 AD 中创建 AD 域服务账户](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser)
+ [步骤 3：将控制权委派给 AD 域服务账户](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl)
+ [步骤 4：创建 AWS KMS 密钥](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey)
+ [步骤 5：创建 AWS 密钥](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret)

## 步骤 1：在 AD 中创建组织单位
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU"></a>

**重要**  
 我们建议为任何拥有已加入您自托管式 AD 域的 RDS for SQL Server 数据库实例的 AWS 账户创建专用 OU 以及作用域为该 OU 的服务凭证。通过专用 OU 和服务凭证，您可以避免权限冲突并遵循最低权限原则。

**在 AD 中创建 OU**

1. 以域管理员身份连接到您的 AD 域。

1. 打开 **Active Directory 用户和计算机**，然后选择要在其中创建 OU 的域。

1. 右键单击该域并选择**新建**，然后选择**组织单位**。

1. 为 OU 输入名称。

1. 选中**保护容器免遭意外删除**复选框。

1. 单击**确定**。您的新 OU 将出现在您的域下。

## 步骤 2：在您的 AD 中创建 AD 域服务账户
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser"></a>

域服务账户凭证将用于 AWS Secrets Manager 中的密钥。

**在 AD 中创建 AD 域服务账户**

1. 打开 **Active Directory 用户和计算机**，然后选择要在其中创建用户的域和 OU。

1. 右键单击**用户**对象并选择**新建**，然后选择**用户**。

1. 输入用户的名字、姓氏和登录名。单击**下一步**。

1. 输入用户的密码。请勿选择**“用户下次登录时必须更改密码”**。请勿选择**“账户已禁用”**。单击**下一步**。

1. 单击**确定**。您的新用户将出现在您的域下。

## 步骤 3：将控制权委派给 AD 域服务账户
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl"></a>

**将控制权委派给域中的 AD 域服务账户**

1. 打开 **Active Directory 用户和计算机** MMC 管理单元，然后选择要在其中创建用户的域。

1. 右键单击您之前创建的 OU，然后选择**委派控制权**。

1. 在**委派控制权向导**页面上，单击**下一步**。

1. 在**用户或组**部分，单击**添加**。

1. 在**选择用户、计算机或组**部分，输入您创建的 AD 域服务账户，然后单击**检查名称**。如果您的 AD 域服务账户检查成功，请单击**确定**。

1. 在**用户或组**部分，确认您的 AD 域服务账户已添加，然后单击**下一步**。

1. 在**要委派的任务**部分，选择**创建要委派的自定义任务**，然后选择**下一步**。

1. 在 **Active Directory 对象类型**部分：

   1. 选择**仅文件夹中的以下对象**。

   1. 选择**计算机对象**。

   1. 选择**在此文件夹中创建选定对象**。

   1. 选择**删除此文件夹中的选定对象**，然后单击**下一步**。

1. 在**权限**部分：

   1. 将**常规**保持为选中状态。

   1. 选择**已验证写入 DNS 主机名**。

   1. 选择**已验证写入服务主体名称**，然后单击**下一步**。

   1. 要启用 Kerberos 身份验证，请选中**特定于属性**，然后从列表中选择**写入 servicePrincipalName**。

1. 对于**完成控制权委派向导**，请检查并确认您的设置，然后单击**完成**。

1. 要进行 Kerberos 身份验证，请打开 DNS 管理器并打开**服务器**属性。

   1. 在 Windows 对话框中，输入 `dnsmgmt.msc`。

   1. 在**安全**选项卡下添加 AD 域服务账户。

   1. 选择**读取**权限并应用您的更改。

## 步骤 4：创建 AWS KMS 密钥
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey"></a>

KMS 密钥用于加密您的 AWS 密钥。

**要创建 AWS KMS 密钥**
**注意**  
 对于**加密密钥**，请勿使用 AWS 原定设置 KMS 密钥。确保在包含要加入自托管式 AD 的 RDS for SQL Server 数据库实例的 AWS 账户中创建 AWS KMS 密钥。

1. 在 AWS KMS 控制台中，选择**创建密钥**。

1. 对于**密钥类型**，选择**对称**。

1. 对于**密钥用法**，选择**加密和解密**。

1. 对于 **Advanced options (高级选项)**：

   1. 对于**密钥材料源**，选择 **KMS**。

   1. 对于**区域性**，选择**单区域密钥**，然后单击**下一步**。

1. 对于**别名**，提供 KMS 密钥的名称。

1. (可选）对于**描述**，提供 KMS 密钥的描述。

1. （可选）对于**标签**，提供 KMS 密钥的标签，然后单击**下一步**。

1. 对于**密钥管理员**，提供 IAM 用户的名称并将其选中。

1. 对于**密钥删除**，确保选中**允许密钥管理员删除此密钥**复选框，然后单击**下一步**。

1. 对于**密钥用户**，请提供上一步中的 IAM 用户并将其选中。单击**下一步**。

1. 审核配置。

1. 对于**密钥策略**，请在策略**声明**中包括以下内容：

   ```
   {
       "Sid": "Allow use of the KMS key on behalf of RDS",
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "rds.amazonaws.com"
           ]
       },
       "Action": "kms:Decrypt",
       "Resource": "*"
   }
   ```

1. 单击 **Finish (完成)**。

## 步骤 5：创建 AWS 密钥
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret"></a>

**创建密钥**
**注意**  
 确保在包含要加入自托管式 AD 的 RDS for SQL Server 数据库实例的 AWS 账户中创建密钥。

1. 在 AWS Secrets Manager 下，选择**存储新密钥**。

1. 对于**密钥类型**，请选择**其他密钥类型**。

1. 对于**键/值对**，请添加您的两个密钥：

   1. 对于第一个密钥，请输入 `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`。

   1. 对于第一个密钥的值，请仅输入 AD 用户的用户名（不带域前缀）。请勿包含域名，因为这会导致实例创建失败。

   1. 对于第二个密钥，请输入 `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`。

   1. 对于第二个密钥的值，请输入您在域中为 AD 用户创建的密码。

1. 对于**加密密钥**，输入您在上一步中创建的 KMS 密钥，然后单击**下一步**。

1. 在**密钥名称**中，输入一个描述性名称，以便您稍后查找自己的密钥。

1. （可选）对于**描述**，输入密钥名称的描述。

1. 对于**资源权限**，请单击**编辑**。

1. 将以下策略添加到权限策略中：
**注意**  
我们建议您在策略中使用 `aws:sourceAccount` 和 `aws:sourceArn` 条件，以避免出现*混淆代理人*问题。将您的 AWS 账户用于 `aws:sourceAccount`，并将 RDS for SQL Server 数据库实例 ARN 用于 `aws:sourceArn`。有关更多信息，请参阅 [防范跨服务混淆代理问题](cross-service-confused-deputy-prevention.md)。

------
#### [ JSON ]

****  

   ```
   {
       "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:*"
                   }
               }
           }
       ]
   }
   ```

------

1. 单击**保存**，然后单击**下一步**。

1. 对于**配置轮换设置**，保留原定设置值并选择**下一步**。

1. 查看密钥的设置，然后单击**存储**。

1. 选择您创建的密钥，然后复制**密钥 ARN** 的值。下一步将使用它来设置自托管式 Active Directory。