

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：扩展你的 AWS 托管 Microsoft AD 架构
<a name="ms_ad_tutorial_extend_schema"></a>

在本教程中，您将学习如何通过添加满足您 AWS 特定要求的独特*属性和**类*来扩展微软活动目录目录的架构，也称为 AWS 托管 Microsoft AD。 AWS 托管 Microsoft AD 架构扩展只能使用有效的 LDIF（轻量级目录交换格式）脚本文件上传和应用。

属性 (attributeSchema) 定义数据库中的字段，而类 (classSchema) 定义数据库中的表。例如，Active Directory 中的所有用户对象均由架构类 *User* 定义，而用户的各个属性 (如电子邮件地址或电话号码) 由每个属性定义。

如果您要添加新属性 (如 Shoe-Size)，您需要定义一个 *integer* 类型的新属性。您还可以定义下限和上限，如 1 到 20。创建 Shoe-Size attributeSchema 对象后，可以更改 *User* classSchema 对象以包含该属性。属性可以关联到多个类。例如，也可以将 Shoe-Size 添加到 *Contact* 类。有关 Active Directory 架构的更多信息，请参阅[何时扩展你的 Microsoft AD AWS 托管架构](ms_ad_schema_extensions.md#ms_ad_schema_when_to_extend)。

此工作流程具有三个基本步骤。

![\[图表显示了本教程的步骤：1 创建 LDIF 文件，2 导入 LDIF 文件，3 验证架构更改。\]](http://docs.aws.amazon.com/zh_cn/directoryservice/latest/admin-guide/images/tutorialextendadschema.png)


**[步骤 1：创建 LDIF 文件](create.md)**  
首先，创建一个 LDIF 文件并定义新属性和应将这项属性添加到的任何类。您可以将此文件用于工作流程的下一阶段。

**[步骤 2：导入 LDIF 文件](import.md)**  
在此步骤中，您将使用 AWS Directory Service 控制台将 LDIF 文件导入到您的 Microsoft Active Directory 环境中。

**[步骤 3：验证架构扩展是否成功](verify.md)**  
最后，您以管理员身份使用 EC2 实例来验证新扩展是否出现在 Active Directory 架构管理单元中。

# 步骤 1：创建 LDIF 文件
<a name="create"></a>

LDIF 文件是用于表示 [LDAP](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) (轻量目录访问协议) 目录内容和更新请求的标准纯文本数据交换格式。LDIF 将目录内容作为一组记录来传递，每个对象 (或条目) 对应一条记录。它将更新请求 (如添加、修改、删除和重命名) 也表示为一组记录，每个更新请求对应一条记录。

通过在 AWS Directory Service 托管 AWS Microsoft AD 目录上运行`ldifde.exe`应用程序，导入带有架构更改的 LDIF 文件。因此，您会发现理解 LDIF 脚本语法很有帮助。有关更多信息，请参阅 [LDIF 脚本](https://msdn.microsoft.com/en-us/library/ms677268(v=vs.85).aspx)。

多种第三方 LDIF 工具均可提取、清理和更新您的架构更新。无论您使用哪种工具，都要了解 LDIF 文件中使用的所有标识符都必须唯一，这一点很重要。

强烈建议您在创建自己的 LDIF 文件之前先查看以下概念和提示。
+ **架构元素**-了解架构元素，例如属性、类 IDs、对象和链接属性。有关更多信息，请参阅 [架构元素](ms_ad_key_concepts.md#ms_ad_schema_elements)。
+ **项目序列** – 确保 LDIF 文件中的项目布局顺序自上而下按照[目录信息树（DIT）](https://en.wikipedia.org/wiki/Directory_information_tree)进行。LDIF 文件中确定顺序的一般规则如下：

   
  + 各项目之间以空白行分隔。
  + 子项目列在其父项目之后。
  + 确保架构中存在属性或对象类等项目。如果不存在，则必须先将其添加到架构中，然后才能使用。例如，在将属性分配给类之前，必须先创建该属性。
+ **DN 的格式** – 对于 LDIF 文件中的每个新指令，将可分辨名称 （DN）定义为指令的第一行。DN 在 Active Directory 对象树中标识 Active Directory 对象，并且必须包含目录的域组件。例如，在本教程中，目录的域组件为 `DC=example,DC=com`。

  DN 还必须包含 Active Directory 对象的公用名（CN）。第一个 CN 条目代表属性或类名称。要扩展 Active Directory 架构，请使用 `CN=Schema,CN=Configuration`。请记住，不能修改 Active Directory 对象内容。DN 的一般格式如下所示。

  ```
  dn: CN=[attribute or class name],CN=Schema,CN=Configuration,DC=[domain_name]
  ```

  在本教程中，新 Shoe-Size 属性的 DN 类似于：

  ```
  dn: CN=Shoe-Size,CN=Schema,CN=Configuration,DC=example,DC=com
  ```
+ **警告** – 请在扩展架构前查看下面的警告。
  + 在扩展 Active Directory 架构之前，必须先查看 Microsoft 有关此操作的影响的警告。有关更多信息，请参阅[在扩展架构之前需要了解的事项](https://msdn.microsoft.com/en-us/library/ms677995(v=vs.85).aspx)。
  + 您不能删除架构属性或类。因此，如果您犯了错误且不想从备份中还原，则只能禁用该对象。有关更多信息，请参阅[禁用现有的类和属性](https://msdn.microsoft.com/en-us/library/ms675903(v=vs.85).aspx)。
  + 不支持 defaultSecurityDescriptor 对的更改。

要详细了解如何构建 LDIF 文件并查看可用于测试托管 AWS Microsoft AD 架构扩展的 LDIF 文件示例，请参阅安全博客上的 “[如何扩展托管 AWS Microsoft AD 目录架构”](https://aws.amazon.com/blogs/security/how-to-add-more-application-support-to-your-microsoft-ad-directory-by-extending-the-schema/) 一文。 AWS 

**下一步**

[步骤 2：导入 LDIF 文件](import.md)

# 步骤 2：导入 LDIF 文件
<a name="import"></a>

您可以通过从 AWS Directory Service 控制台导入 LDIF 文件或使用 API 来扩展架构。有关如何使用架构扩展执行此操作的更多信息 APIs，请参阅 [https://docs.aws.amazon.com/directoryservice/latest/devguide/](https://docs.aws.amazon.com/directoryservice/latest/devguide/)。目前， AWS 不支持通过外部应用程序（如 Microsoft Exchange）直接执行架构更新。

**重要**  
当你对 AWS 托管的 Microsoft AD 目录架构进行更新时，该操作是不可逆的。换言之，新类或属性一旦创建，Active Directory 不允许您将其删除。但是，您可以将其禁用。  
如果您必须删除架构更改，一个选项是从之前的快照中还原目录。还原快照会将架构和目录数据都回滚到以前的时间点，而不仅仅是回滚架构。请注意，快照支持的最长期限为 180 天。有关更多信息，请参阅 Microsoft 网站上的 [Active Directory 的系统状态备份的有用保质期](https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/shelf-life-system-state-backup-ad)。

在更新过程开始之前，Mic AWS rosoft AD 会拍摄快照以保留目录的当前状态。

**注意**  
架构扩展是 AWS 托管 Microsoft AD 的一项全球功能。如果您使用的是 [为 AWS 托管的 Microsoft AD 配置多区域复制](ms_ad_configure_multi_region_replication.md)，则必须在 [主 区域](multi-region-global-primary-additional.md#multi-region-primary) 中执行以下过程。更改将自动应用于所有复制的区域。有关更多信息，请参阅 [全局与区域特色](multi-region-global-region-features.md)。

**导入 LDIF 文件**

1. 在 [AWS Directory Service 控制台](https://console.aws.amazon.com/directoryservicev2/)导航窗格中，选择**目录**。

1. 在**目录**页面上，选择您的目录 ID。

1. 在**报告详细信息**页面上，执行以下操作之一：
   + 如果**多区域复制**下显示多个区域，选择主区域，然后选择**维护**选项卡。有关更多信息，请参阅 [主区域与其他区域](multi-region-global-primary-additional.md)。
   + 如果**多区域复制**下未显示任何区域，选择**维护**选项卡。

1. 在**架构扩展**部分中，选择**操作**，然后选择**上传和更新架构**。

1. 在对话框中，单击 **Browse**，选择有效的 LDIF 文件，键入描述，然后选择 **Update Schema**。
**重要**  
扩展架构是一项至关重要的操作。在开发或测试环境中使用您的应用程序对架构更新进行测试之前，请勿在生产环境中应用任何架构更新。

## 如何应用 LDIF 文件
<a name="howapplied"></a>

上传 LDIF 文件后， AWS Microsoft AD 会采取措施保护您的目录免受错误影响，因为它会按以下顺序应用更改。

1. **验证 LDIF 文件。**由于 LDIF 脚本可以操作域中的任何对象，因此托管 AWS Microsoft AD 会在您上传后立即运行检查，以帮助确保导入操作不会失败。其中包括用于确保以下事项的检查：
   + 要更新的对象仅保留在架构容器中
   + DC (域控制器) 部分与运行 LDIF 脚本所在域的名称匹配

1. **拍摄目录的快照。**在更新架构后如果应用程序出现任何问题，可以使用该快照来还原目录。

1. **将更改应用于单个 DC。** AWS 托管 Microsoft AD 会隔离您的一个， DCs 并将 LDIF 文件中的更新应用到隔离的 DC。然后，它会选择您的 DCs 一个作为主架构，将该 DC 从目录复制中删除，然后使用应用您的 LDIF 文件。`Ldifde.exe`

1. **复制发生在所有人身上 DCs。** AWS 托管 Microsoft AD 将隔离的 DC 重新添加到复制中以完成更新。在执行这些操作的过程中，您的目录会继续为您的应用程序提供 Active Directory 服务，而不发生中断。

**下一步**

[步骤 3：验证架构扩展是否成功](verify.md)

# 步骤 3：验证架构扩展是否成功
<a name="verify"></a>

完成导入过程后，需要验证架构更新是否已应用到您的目录中，这一点很重要。在迁移或更新依赖架构更新的任何应用程序之前，这一点尤其重要。您可以使用各种不同的 LDAP 工具或通过编写能够发出相应 LDAP 命令的测试工具来进行此验证。

此过程使用 Active Directory 架构管理单元 and/or PowerShell 来验证架构更新是否已应用。您必须在已加入 AWS 托管 Microsoft AD 的域的计算机上运行这些工具。这可以是本地网络中通过访问 Virtual Private Cloud (VPC) 或通过虚拟专用网络 (VPN) 连接运行的 Windows 服务器。还可以对 Amazon EC2 Windows 实例运行这些工具（请参阅 [How to launch a new EC2 instance with seamless domain join](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-join-aws-domain.html#join-domain-console)）。

**使用 Active Directory 架构管理单元进行验证**

1. 按照[TechNet](https://technet.microsoft.com/en-us/library/cc732110.aspx)网站上的说明安装 Active Directory 架构管理单元。

1. 打开 Microsoft 管理控制台 (MMC) 并展开目录的 **AD 架构**树。

1. 浏览 **Classes** 和 **Attributes** 文件夹，直至找到您以前所做的架构更改。

**要进行验证，请使用 PowerShell**

1. 打开一 PowerShell 扇窗户。

1. 使用如下所示的 `Get-ADObject` cmdlet 来验证架构更改。例如：

   `get-adobject -Identity 'CN=Shoe-Size,CN=Schema,CN=Configuration,DC=example,DC=com' -Properties *`

**可选步骤**

[向新属性中添加值（可选）](addvalue.md)

# 向新属性中添加值（可选）
<a name="addvalue"></a>

当您创建了新属性并希望在 AWS 托管 Microsoft AD 目录中为该属性添加新值时，请使用此可选步骤。

**向属性中添加值**

1. 打开 PowerShell 命令行实用工具，并使用以下命令设置新属性。在此示例中，我们将在特定计算机的属性中添加一个新 EC2的 instanceID 值。

   `PS C:\> set-adcomputer -Identity computer name -add @{example-EC2InstanceID = 'EC2 instance ID'}`

1. 您可以通过运行以下命令 EC2来验证 instanceID 值是否已添加到计算机对象：

   `PS C:\> get-adcomputer -Identity computer name –Property example-EC2InstanceID`

# 相关资源
<a name="additional"></a>

以下资源链接位于 Microsoft 网站上，并提供了相关信息。

 
+ [扩展架构 (Windows)](https://msdn.microsoft.com/en-us/library/ms676900(v=vs.85).aspx)
+ [Active Directory 架构 (Windows)](https://msdn.microsoft.com/en-us/library/ms674984(v=vs.85).aspx)
+ [Active Directory 架构](https://technet.microsoft.com/en-us/library/cc961581.aspx)
+ [Windows 管理：扩展 Active Directory 架构](https://technet.microsoft.com/en-us/magazine/a39543ba-e561-4933-b590-0878885f44f5)
+ [架构扩展限制 (Windows)](https://msdn.microsoft.com/en-us/library/ms677924(v=vs.85).aspx)
+ [Ldifde](https://technet.microsoft.com/en-us/library/cc731033(v=ws.11).aspx)