配置 Microsoft Entra ID 到 Active Directory 的预配(预览版)

本文指导你配置 Microsoft Entra Cloud Sync,以便将用户和组从Microsoft Entra ID预配到本地Active Directory 域服务(AD DS)。 创建配置、选择预配的对象、设置范围筛选器和属性值筛选、选择目标容器和自定义属性映射。

由于范围选择确定属性值筛选是否可用,因此此处将一起介绍范围和属性映射。 配置完成后, 测试并启用它,对于所有部署选项都是相同的。 最后一部分介绍预配运行后执行的任务,例如验证结果和移动预配的用户。

如果要从 AD 预配到Microsoft Entra ID,请参阅配置从Active Directory到Microsoft Entra ID的预配。

Prerequisites

在继续之前,请完成从Microsoft Entra ID预配到Active Directory的先决条件中的步骤。

选择部署选项

所有部署选项都使用相同的配置类型:Microsoft Entra ID 到 AD 同步。不同之处在于要纳入范围的对象类型:

选项 规定 Availability
仅限群组 安全组与成员身份 正式发布
仅限用户 用户 Preview
用户和群组 两者都在一个配置中 Preview

有关如何选择方案以及扩展性方面的考量,请参阅 部署选项。

创建配置

若要创建 Microsoft Entra ID 到 AD 的预配配置,请执行以下步骤:

  1. 请以至少混合身份管理员的身份登录Microsoft Entra 管理中心。

  2. 浏览到 Entra ID>Entra Connect>云同步。

  3. 选择“新配置”。

  4. 选择“Microsoft Entra ID 与 AD 同步”。

  5. 在配置屏幕上,选择你的域。 选择“创建”。

  6. 此时将打开“开始使用”屏幕。 在此处,可以继续配置云同步。

配置分为以下五个部分:

章节 说明
1.添加范围筛选器 定义哪些对象在预配范围内。
2. 地图属性 映射 Microsoft Entra ID 用户/组与 AD 对象之间的属性。
3. 测试 在部署配置之前对其进行测试。
4.查看默认属性 查看默认设置,并在适当情况下对其进行更改。
5. 启用您的配置 启用配置和对象开始同步。

本文介绍了第 1 节和第 2 节。 有关第 3–5 节,请参阅测试并启用向 Active Directory 预配。

配置作用域筛选器

作用域筛选器决定要预配哪些对象。 范围筛选器页面显示当前配置的只读视图。 选择 “编辑” 以打开向导。

  1. 在“开始使用”页面上,选择“添加范围筛选器”,或者在左侧“管理”下选择“范围筛选器”。

    “范围筛选器”页的屏幕截图,其中显示了当前范围设置、分配、组成员身份和目标容器。

分配范围

在 “编辑 ”模式下,使用 “按分配范围 ”选择是同步所有对象还是所选对象。 属性值筛选可用于任一选择,但仅适合其中一种:

  • 所有用户和组 — 下一步是 按属性划分的范围。 为每个启用的对象类型(用户、组或两者)添加 属性值筛选器 ,以便预配仅评估所需的对象。

    “按分配确定范围”步骤的屏幕截图,其中已选择“所有用户和组”。

  • 所选用户和组 - 下一步是 选择用户和组,可在其中选取特定对象。 属性值筛选在此模式下可用,但不建议这样做,因为所选内容已确定范围。 有关详细信息,请参阅 建议的配置。

    “按分配确定范围”步骤的屏幕截图,其中已选择“所选用户和组”。

注释

如果选择成员中包含嵌套安全组的安全组,则仅写回该嵌套安全组,而非其成员。 若要预配嵌套成员,请同时将所有成员组添加到范围。

属性值筛选

基于属性的范围筛选通过评估对象的属性值来缩小预配对象的范围。 您可以在 按属性确定范围 步骤中的 用户 选项卡、组 选项卡,或同时在这两个选项卡中进行配置。

将其与 所有用户和组 一起使用时,筛选器是唯一用于缩小范围的因素:如果没有筛选器,租户中的每个用户和组都会在每个周期被评估。

“按属性划分的范围”步骤的屏幕截图,其中选择了“所有用户和组”,警告未配置属性值筛选器。

不要将其与 所选用户和组一起使用,因为所选内容已缩小范围,因此筛选器会添加处理时间,而无需更改预配的对象。

“按属性确定范围”步骤的屏幕截图,其中已选择“所选用户和组”,并警告无需进行属性值筛选。

预配配置在这两种情况下都显示警告,但不会阻止你。 有关详细信息,请参阅 建议的配置。

默认安全条款

默认安全子句会通过使用 AND 逻辑应用于组,并叠加在您创建的子句之上:

securityEnabled IS TRUE AND dirSyncEnabled IS FALSE AND mailEnabled IS FALSE

默认的安全子句会在您配置的子句之前进行评估。

筛选逻辑

单个子句定义一个属性值的一个条件。 在单个作用域筛选器中,各子句使用 AND 进行求值——所有子句都必须为 TRUE。

属性范围筛选器的屏幕截图,其中包含两个使用 AND 逻辑的子句。

系统会对多个范围筛选器进行求值 OR — 如果任何筛选器为 TRUE,则会预配该对象。

使用 OR 逻辑的两个属性范围筛选器的屏幕截图。

创建基于属性的筛选器

若要创建评估属性值的筛选器,

  1. 选择 “添加属性范围筛选器”。
  2. 在 “名称”中,输入筛选器的名称。
  3. 在 “属性”下,选择要评估的属性。
  4. 在“运算符”下,选择一个运算符(例如,EQUALS、NOT EQUALS、INCLUDESREGEX MATCH)。
  5. 在 “值”下输入值。
  6. 选择“保存”。

支持的运算符

支持以下运算符:

Operator 说明
EQUALS 如果计算的属性与输入字符串完全匹配,则 TRUE 返回。 比较是区分大小写的。
GREATER_THAN 如果计算的属性大于指定的值,则返回 TRUE 。 指定的值和计算的属性必须是整数,例如 0、1 或 2。
GREATER_THAN_OR_EQUALS 如果计算的属性大于或等于指定的值,则返回 TRUE 。 指定的值和计算的属性必须是整数。
IS FALSE 如果求值后的属性包含值为 false 的布尔值,则返回 TRUE。
IS NOT NULL 如果计算的属性不为空,则返回 TRUE 。
IS NULL 如果计算的属性为空,则返回 TRUE 。
IS TRUE 如果求值后的属性包含值为 true 的布尔值,则返回 TRUE。
NOT EQUALS 如果计算的属性与输入字符串不匹配,则返回 TRUE 。 比较是区分大小写的。
NOT REGEX MATCH 如果计算的属性与正则表达式模式不匹配,则返回 TRUE 。 如果该属性为 null 或为空,则返回 FALSE。
REGEX MATCH 如果计算的属性与正则表达式模式匹配,则 TRUE 返回。 例如, ([1-9][0-9]) 匹配从 10 到 99 的任何数字。 比较是区分大小写的。

使用正则表达式筛选

若要进行更高级的筛选,请使用 REGEX MATCH 搜索子字符串的属性字符串。 例如,假设有描述如下的组:

  • Contoso-Sales-US
  • Contoso-Marketing-US
  • Contoso-Operations-US
  • Contoso-LT-US

若要仅将 Sales、Marketing 和 Operations 组预配到Active Directory,请使用以下正则表达式:

REGEX MATCH description (?:^|\W)Sales|Marketing|Operations(?:$|\W)

该表达式会在组描述中搜索所提供的字词,并且仅预配匹配的组。

有关编写表达式的详细信息,请参阅有关在 Microsoft Entra ID 中编写属性映射的表达式的参考。

本地用户的组成员身份

启用组同步后,可以选择在 “配置组成员身份 ”步骤中将成员身份从云组预配到本地用户。 默认情况下,此设置处于关闭状态。

“配置组成员身份”步骤的屏幕截图,其中包含将成员身份预配到本地用户的选项。

使用目录扩展的范围

若要进行更高级的范围和筛选,可以使用目录扩展。 有关概述,请参阅用于将Microsoft Entra ID预配到Active Directory的目录扩展。 有关分步教程,请参阅预配到Active Directory时使用目录扩展。

配置目标容器

使用目标容器控制在Active Directory中创建用户和组对象的组织单位(OU)。 可以在 parentDistinguishedName 属性上使用 常量、直接或 表达式 映射。

“配置目标容器”步骤的屏幕截图,其中显示了用户和组目标容器。

  • 用户 — 默认用户目标容器自动保留其授权源(SOA)转换为云的用户的原始 OU(默认 parentDistinguishedName 表达式使用 onPremisesDistinguishedName)。 将在 CN=Users,DC=<selected AD domain> 中创建一个云原生用户,您可以覆盖该设置。

    用于映射用户目标容器的表达式的屏幕截图。

  • 组 - 默认组目标容器为 CN=Users,DC=<selected AD domain>。 若要按属性将组放置到不同的 OU 中,请使用包含 Switch() 函数的表达式。 以下示例按显示名称对组进行路由:

    Switch([displayName],"OU=Default,OU=container,DC=contoso,DC=com","Marketing","OU=Marketing,OU=container,DC=contoso,DC=com","Sales","OU=Sales,OU=container,DC=contoso,DC=com")
    

    配置多个组目标容器的表达式的屏幕截图。

    显示名称是一个弱路由密钥,因为它可以更改,并且不能保证遵循一致的模式。 若要按稳定值路由组,或者若要将组保留在它已占用的组织单位中,请改用目录扩展。 有关详细信息,请参阅 “保留 OU 路径”。

保留 OU 路径

原始 OU 的保留方式取决于对象类型:

  • 用户——已内置保留功能。 默认的 parentDistinguishedName 映射会在经 SOA 转换的用户原始 OU 中重新创建该用户,因此无需进行额外配置。
  • 组——不会自动检测到原始 OU。 在转换该组的 SOA 之前,使用 GroupDN 目录扩展捕获该组的可分辨名称 (DN),然后在 OU 和通用名称 (CN) 映射表达式中引用此扩展。

若要设置扩展,请参阅 “保留组的组织单位和名称”。 在将组转换为云托管之前完成该设置,然后使用下面的表达式。

保留组的原始组织单位

若要将经 SOA 转换的组映射到其原始 OU,请调整示例表达式:将 <Default ParentDistinguishedName> 替换为租户中的扩展属性名称,并将 extension_<AppIdWithoutHyphens>_GroupDN 替换为当扩展值为空时要使用的目标 OU:

IIF(
    IsPresent([extension_<AppIdWithoutHyphens>_GroupDN]),
    Replace(
        Mid(
            Mid(
                Replace([extension_<AppIdWithoutHyphens>_GroupDN], "\,", , , "\2C", , ),
                Instr(Replace([extension_<AppIdWithoutHyphens>_GroupDN], "\,", , , "\2C", , ), ",", , ),
                9999
            ),
            2,
            9999
        ),
        "\2C", , , ",", ,
    ),
    "<Default ParentDistinguishedName>"
)

将默认值(如果为 null)设置为目标 OU,以便在GroupDN扩展为空时使用。

将表达式应用于目标容器映射:

  1. 在 “组目标容器”下,选择 “编辑属性映射”。
  2. 将 映射类型 更改为 表达式。
  3. 将表达式粘贴到表达式框中。
  4. 选择“应用”,然后选择“保存”。

保留组的原始公用名

使用相同的 GroupDN 扩展来保留公用名(CN)。 该表达式从已存储的可分辨名称中提取 CN,并将组显示名称和对象 ID 用作后备值:

IIF(
    IsPresent([extension_<AppIdWithoutHyphens>_GroupDN]),
    Replace(
        Replace(
            Replace(
                Word(Replace([extension_<AppIdWithoutHyphens>_GroupDN], "\,", , , "\2C", , ), 1, ","),
                "CN=", , , "", ,
            ),
            "cn=", , , "", ,
        ),
        "\2C", , , ",", ,
    ),
    Append(Append(Left(Trim([displayName]), 51), "_"), Mid([objectId], 25, 12))
)

将表达式应用于 cn 属性映射,然后选择“ 保存架构”。

完成配置范围筛选器和目标容器后,选择“ 保存”。 一条消息告知下一步配置的内容;选择链接以继续。

配置属性映射

Microsoft Entra Cloud Sync 映射Microsoft Entra ID用户/组与 AD 对象之间的属性。 由于 AD 架构不可发现,因此 AD 配置的每个Microsoft Entra ID都使用固定的默认映射集,你可以根据业务需求自定义这些映射。

保留相同的组名称

默认情况下,sAMAccountName 不会从 Microsoft Entra ID 同步到 Active Directory,因此,在 AD 中新建的组会被分配一个随机生成的 sAMAccountName。 若要在 AD 中保持组名称一致,请创建到 sAMAccountName 的自定义映射。 例如,使用以下表达式:

Join("_", [displayName], "Contoso_Group")

该表达式将 displayName 值与 Contoso_Group 组合。 例如,具有显示名称 Marketing 的组接收 sAMAccountName 值 Marketing_Contoso_Group。

重要

确保每个自定义sAMAccountName值在Active Directory中是唯一的。

根据需要更改其他属性映射

下表列出了默认用户和组属性映射。 可以根据要求更改其中任何一个映射 , 修改现有映射、删除一个映射或添加新映射。 某些映射由服务管理,无法编辑。

要添加映射:

  1. 浏览到 Entra ID>Entra Connect>云同步。

  2. 在“配置”下,选择 Microsoft Entra ID 到 Active Directory 的配置。

  3. 在左侧选择“属性映射”。

  4. 在顶部,选择要映射的对象类型: 用户、 组或 联系人。

  5. 选择 “添加属性映射”,然后选择映射类型:

    • 直接 — 目标属性采用源属性的值。
    • 常量 - 目标属性采用指定的固定字符串。
    • 表达式 - 目标属性采用表达式的结果。
    • 无 — 目标属性未修改。
  6. 填写所选映射类型的剩余选项,选择何时应用映射,然后选择 “应用”。

  7. 选择“保存架构”。 保存架构会触发同步。

有关编写表达式的详细信息,请参阅有关在 Microsoft Entra ID 中编写属性映射的表达式的参考。

用户属性映射

目标属性(Active Directory) 源属性(Microsoft Entra ID) 映射类型
accountDisabled Not([accountEnabled]) Expression
cn Append(Append(Left(Trim([displayName]), 51), "_"), Mid([objectId], 25, 12)) Expression
co IgnoreFlowIfNullOrEmpty(Trim([country])) Expression
company IgnoreFlowIfNullOrEmpty(Trim([companyName])) Expression
department IgnoreFlowIfNullOrEmpty(Trim([department])) Expression
displayName displayName 直接
employeeID IgnoreFlowIfNullOrEmpty([employeeId]) Expression
givenName IgnoreFlowIfNullOrEmpty(Trim([givenName])) Expression
l IgnoreFlowIfNullOrEmpty(Trim([city])) Expression
manager manager 直接
mobile IgnoreFlowIfNullOrEmpty(Trim([mobile])) Expression
msDS-ObjectSoa Cloud 定额
parentDistinguishedName 保留原始 OU 的表达式 Expression
postalCode IgnoreFlowIfNullOrEmpty(Trim([postalCode])) Expression
preferredLanguage IgnoreFlowIfNullOrEmpty(Trim([preferredLanguage])) Expression
sAMAccountName Left(Item(Split([userPrincipalName], "@"), 1), 15) Expression
sn IgnoreFlowIfNullOrEmpty(Trim([surname])) Expression
st IgnoreFlowIfNullOrEmpty(Trim([state])) Expression
streetAddress IgnoreFlowIfNullOrEmpty(Trim([streetAddress])) Expression
userPrincipalName IIF(IsPresent([onPremisesUserPrincipalName]), [onPremisesUserPrincipalName], Append(Item(Split([userPrincipalName], "@"), 1), Append("@", %DomainFQDN%))) Expression

某些用户映射(例如, adminDescription 和 msDS-ExternalDirectoryObjectId)由服务管理,在 UI 中不可见,不得编辑。

组属性映射

目标属性(Active Directory) 源属性(Microsoft Entra ID) 映射类型
cn Append(Append(Left(Trim([displayName]),51),"_"),Mid([objectId],25,12)) Expression
description Left(Trim([description]),448) Expression
displayName displayName 直接
isSecurityGroup True 定额
member members 直接
parentDistinguishedName CN=Users,DC=<selected AD domain> 定额
UniversalScope True 定额

服务管理的组映射(adminDescription、、msDS-ExternalDirectoryObjectIdObjectGUID)在 UI 中不可见,不得编辑。

目录扩展和自定义属性映射

Microsoft Entra Cloud Sync 允许添加目录扩展并将其映射到自定义属性。 有关详细信息,请参阅用于将Microsoft Entra ID预配到Active Directory的目录扩展。

属性映射完成后,选择“ 保存架构”。 一条消息告知下一步配置的内容;选择链接以继续。

验证和管理预配的对象

以下任务在预配运行完成后执行。 在完成这些操作之前, 请测试和启用配置。

验证预配

转换 SOA 且对象处于范围内后,运行预配并确认结果。 这些步骤适用于所有三个部署选项:仅用户、组或用户和组。

组:

  • 确认经 SOA 转换的组可在预配配置的组范围内使用。

    在预配配置的组范围中选定的已转换为 SOA 的组的截图。

  • 作业运行时,经 SOA 转换的组会被成功预配。 在 预配日志中,搜索组并验证是否已预配。

    预配日志中组更新成功的屏幕截图。

  • 打开预配日志详细信息,确认该组已与现有目标组 匹配 。

    预配日志详细信息的截图,显示某个组已在 Active Directory 中完成匹配和更新。

  • 在 “修改的属性 ”选项卡上,确认目标组 adminDescription 和 cn 属性已更新。

    预配日志修改的属性的屏幕截图,其中显示了更新的 cn 和 adminDescription 属性。

在 AD DS 中验证

在Active Directory 用户和计算机中,确认原始组在预期的 OU 中更新,而不是正在创建的重复组。

其Active Directory组织单位中预配的安全组的屏幕截图。

打开组属性并验证是否存在预期的组名称、范围和属性。

Active Directory中更新的 SOA 转换组的常规属性的屏幕截图。

更新的 SOA 转换组的属性编辑器的屏幕截图,其中显示了其可分辨名称、cn 和 adminDescription 值。

云跳过在 SOA 转换后 AD 中所做的更改

将对象的 SOA 迁移到云端后,云端就是权威来源。 如果直接在 AD DS 中编辑该对象的属性(例如重命名组),则 Cloud Sync 在预配过程中 会跳过 该对象。 在 预配日志中,该对象显示为 “跳过”,详细信息说明该对象不会同步,因为它的 SOA 已转换为云。

在Active Directory中直接更改 SOA 转换组名称的屏幕截图。

预配日志的屏幕截图,其中显示了已修改的 SOA 转换组,其状态为“跳过”。

预配日志详细信息的屏幕截图,说明导出已被跳过,因为组的 SOA 已转换为云。

将预配的用户移动到其他组织单位

用户完成预配后,更改 目标容器 不会将其移到新位置,并且在 AD DS 中手动移动该对象的操作会在下一个同步周期被撤销。 此行为是预期的,因为默认 parentDistinguishedName 表达式检查用户是否已有本地位置:

IIF(IsNullOrEmpty([onPremisesDistinguishedName]), "OU=Cloud_Users,DC=contoso,DC=com", Replace([onPremisesDistinguishedName], , "^.*?,(?=(?:CN|OU|DC)=)", , "", , ))

如果 onPremisesDistinguishedName 为空,则会在指定的常量目标容器中创建用户。 填充该表达式时,该表达式会从该属性派生 OU,并忽略常量。 这种优先顺序会保留其 SOA 已迁移到云端的用户的原始 OU。 这也是已预配的用户继续返回到其云对象上记录的 OU 的原因。

云原生用户在首次预配周期之前没有 onPremisesDistinguishedName,该周期会将该值写回云对象。 有关已写回属性的完整列表,请参阅 写回到 Microsoft Entra ID 的本地属性。

Microsoft Entra ID中用户本地属性的屏幕截图,其中显示了本地可分辨名称。

若要移动用户,请使用与更改范围匹配的选项:

  • 与映射规则匹配的所有用户 - 更改目标容器映射,使其指向新 OU,然后选择“ 保存”。 预配将在下一个周期重新启动,并移动所有符合映射规则的用户。
  • 单个用户 — 在 Microsoft Entra ID 中更新该用户的 onPremisesDistinguishedName 属性。
  • 移动到其他域的用户 - 从当前配置的范围中删除用户,然后将用户添加到面向其他域的配置范围。

属性为只读,除非你至少被分配了onPremisesDistinguishedName角色。 Microsoft Entra 管理中心不公开用于编辑的本地属性,因此请使用Microsoft Graph更新单个用户:

PATCH https://microsoftgraph.chinacloudapi.cn/v1.0/users/{user-id}
Content-Type: application/json

{
    "onPremisesDistinguishedName": "CN=Cloud User,OU=Cloud_Users,DC=contoso,DC=com"
}

响应 204 No Content 确认更新。 用户将在下一次同步周期中移动到新的 OU。

更新本地可分辨名称并返回“204 无内容”的 Microsoft Graph PATCH 请求的屏幕截图。

若要确认移动,请在 预配日志 中打开用户的条目,然后选择 “修改的属性”。 该 parentDistinguishedName 行显示旧值和新值。

显示旧的和新的 parentDistinguishedName 值的预配日志详细信息屏幕截图。

回滚已转换为 SOA 的用户或组

如果将经过 SOA 转换的用户或组回滚,使其重新由 AD DS 管理,预配将不再同步该对象的更改,并将其从配置作用域中移除。 不会删除本地对象,并且本地控件在下一个同步周期中恢复。

若要确认回滚,请检查 审核日志 以验证该对象不再发生同步,因为它在本地托管,然后在 AD DS 中确认该对象仍然存在。

后续步骤