教程 - 使用 Microsoft Entra Cloud Sync 将组预配到 Active Directory 域服务

本教程逐步讲解如何将云同步配置为将组同步到本地 Active Directory 域服务(AD DS)。

重要

建议在将组预配配置为 AD DS 时使用 所选安全组 作为默认范围筛选器。 此默认范围筛选器有助于防止预配组时出现任何性能问题。

将 Microsoft Entra ID 预配到 Active Directory 域服务 - 先决条件

若要将预配组实现到 Active Directory 域服务(AD DS),需要满足以下先决条件。

许可要求

使用此功能需要 Microsoft Entra ID P1 许可证。 若要查找适合你的要求的许可证,请参阅 比较Microsoft Entra ID 的正式版功能

一般要求

  • 至少具有混合标识管理员角色的 Microsoft Entra 帐户。
  • 具有 msDS-ExternalDirectoryObjectId 属性的本地 AD DS 架构,该属性在 Windows Server 2016 及更高版本中可用。
  • 使用内部版本 1.1.3730.0 或更高版本预配代理。

备注

仅在全新安装期间分配对服务帐户的权限。 如果要从以前的版本升级,则需要使用 PowerShell 手动分配权限:

$credential = Get-Credential  

Set-AAD DSCloudSyncPermissions -PermissionType UserGroupCreateDelete -TargetDomain "FQDN of domain" -EACredential $credential

如果手动设置权限,则需要为所有后代组和用户对象分配“读取”、“写入”、“创建”和“删除”所有属性。

默认情况下,这些权限不会应用于 AdminSDHolder 对象。 有关详细信息,请参阅 Microsoft Entra 预配代理 gMSA PowerShell cmdlet

  • 预配代理必须安装在运行 Windows Server 2022、Windows Server 2019 或 Windows Server 2016 的服务器上。
  • 预配代理必须能够与端口 TCP/389 (LDAP) 和 TCP/3268(全局目录)上的一个或多个域控制器通信。
    • 用于全局目录查找以筛选无效的成员资格引用所必需的
  • Microsoft Entra Connect Sync 使用内部版本 2.22.8.0
    • 支持使用 Microsoft Entra Connect Sync 的本地用户成员身份所需
    • 必须同步 AD DS:user:objectGUIDAAD DS:user:onPremisesObjectIdentifier

支持的组和规模限制

支持以下操作:

  • 如果希望将已转换的 SOA 组设置为 AD DS,请确保保留 OU 路径,并在 组预配到 AD 配置中使用正确的映射进行设置。 有关详细信息,请参阅 使用 Microsoft Entra Cloud Sync 将组预配到 Active Directory 域服务
  • 仅支持云原生或 SOA 转换(从 AD DS 转换为 Microsoft Entra ID) 安全组
  • 这些组可以有指定的成员组或动态成员组。
  • 这些组只能包含本地同步的用户或其他云创建的安全组。
  • 同步的用户可以来自同一林中的任何域。
  • 这些组用 通用组的组范围写回。 您的本地环境必须支持通用组的范围。
  • 不支持超过 50,000 个成员的组。
  • 不支持超过 150,000 个对象的租户。 如果用户和组的任意组合超过 150,000 个对象,该租户将不受支持。
  • 每个直接子嵌套组都算作引用组中的一个成员。
  • 如果在 AD DS 中手动更新组,则不支持将 Microsoft Entra ID 与 AD DS 之间的组同步。

详细信息

以下是将组预配到 AD DS 时需要考虑的更多要点。

  • 使用云同步预配到 AD DS 的组只能包含本地同步的用户或其他云创建的安全组。
  • 这些用户必须在其帐户上设置 onPremisesObjectIdentifier 属性。
  • onPremisesObjectIdentifier 必须与目标 AD DS 环境中的相应对象GUID 匹配。
  • 可以使用任一同步客户端将本地用户 objectGUID 属性同步到云用户 onPremisesObjectIdentifier 属性。
  • 只有全局性的 Microsoft Entra ID 租户才能从 Microsoft Entra ID 预配到 AD DS。 不支持 B2C 等租户。
  • 组预配作业计划为每 20 分钟运行一次。

假设

本教程假定:

  • 您拥有一个 AD DS 本地部署环境

  • 你有云同步设置,可将用户同步到 Microsoft Entra ID。

  • 你有两个同步的用户:Britta Simon 和 Lola Jacobson。 这些用户存在于本地和 Microsoft Entra ID 中。

  • 在 AD DS 中为以下每个部门创建了一个组织单位(OU):

    显示名称 可分辨名称
    群组 OU=Marketing,DC=contoso,DC=com
    Sales OU=Sales,DC=contoso,DC=com
    Marketing OU=Groups,DC=contoso,DC=com

将用户添加到云原生或颁发机构源(SOA)转换后的安全组

若要添加同步的用户,请执行以下步骤:

备注

仅将同步的用户成员引用预配到 AD DS。

  1. 以至少混合标识管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到 Entra ID>群组>所有群组
  3. 在顶部的搜索框中输入“Sales”
  4. 选择新的 “销售 ”组。
  5. 在左侧,选择“ 成员”。
  6. 在顶部,选择“ 添加成员”。
  7. 在顶部的搜索框中,输入“Britta Simon”
  8. Britta Simon 旁边放置一个检查,然后选择“ 选择”。
  9. 它应成功将用户添加到组。
  10. 在最左侧,选择 “所有组”。 使用 Sales 组重复此过程,并将 Lola Jacobson 添加到该组。

准备已转换的 SOA 组以将其预配到原始的组织单位(OU)路径

完成以下步骤,准备计划转换为云管理的组,以便从 Microsoft Entra ID 预配回本地 Active Directory 域服务(AD DS)中的原始 OU 路径:

  1. 将 AD DS 组范围更改为通用。
  2. 创建特殊应用程序。
  3. 为组创建目录扩展属性。

将 AD DS 组的组范围更改为通用

  1. 打开“Active Directory 管理中心”。
  2. 右键单击组,单击“ 属性”。
  3. “组 ”部分中,选择“ 通用 ”作为组范围。
  4. 单击“ 保存”。

创建扩展

Cloud Sync 仅支持在名为 CloudSyncCustomExtensionsApp 的特殊应用程序上创建的扩展。 如果租户中不存在应用,则必须创建它。 此步骤为每个租户执行一次。

有关如何创建扩展的详细信息,请参阅 云同步目录扩展和自定义属性映射

  1. 打开提升的 PowerShell 窗口并运行以下命令以安装模块并连接:

    Install-Module Microsoft.Graph -Scope CurrentUser -Force 
    Connect-MgGraph -Scopes "Application.ReadWrite.All","Directory.ReadWrite.All","Directory.AccessAsUser.All" 
    
  2. 检查应用程序是否存在。 如果没有,请创建它。 此外,请确保存在服务主体。

    $tenantId = (Get-MgOrganization).Id 
    $app = Get-MgApplication -Filter "identifierUris/any(uri:uri eq 'API://$tenantId/CloudSyncCustomExtensionsApp')" 
    if (-not $app) { 
      $app = New-MgApplication -DisplayName "CloudSyncCustomExtensionsApp" -IdentifierUris "API://$tenantId/CloudSyncCustomExtensionsApp" 
    } 
    
    $sp = Get-MgServicePrincipal -Filter "AppId eq '$($app.AppId)'" 
    if (-not $sp) { 
      $sp = New-MgServicePrincipal -AppId $app.AppId 
    } 
    
  3. 现在添加名为 GroupDN 的目录扩展属性。 这是组对象上可用的字符串属性。

    New-MgApplicationExtensionProperty ` 
      -ApplicationId $app.Id ` 
      -Name "GroupDN" ` 
      -DataType "String" ` 
      -TargetObjects Group 
    

有关如何为组创建目录扩展属性的详细信息,请参阅 云同步目录扩展和自定义属性映射

配置预配

若要配置预配,请执行以下步骤:

  1. 以至少混合标识管理员身份登录到 Microsoft Entra 管理中心

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

    显示Microsoft Entra Connect Cloud Sync 主页的屏幕截图。

  1. 选择“新配置”。

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

    配置选择的屏幕截图。

  3. 在配置屏幕上,选择域以及是否启用密码哈希同步。选择“ 创建”。

    新配置的屏幕截图。

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

  5. 在左侧,选择 范围筛选器

  6. 对于组范围,请选择所选安全组

    范围筛选器部分的屏幕截图。

  7. 有两种方法可以设定 OU:

    • 可以使用自定义表达式,确保使用相同的 OU 重新创建组。 将以下表达式用于 ParentDistinguishedName 值:

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

      此表达式:

      • 如果扩展为空,则使用默认 OU。
      • 否则将删除 CN 部分,并保留 parentDN 路径,同时再次处理转义的逗号。

      此更改会导致完全同步,不会影响现有组。 使用 Microsoft Graph 测试为现有组设置 GroupDN 属性,并验证其移回原始 OU。

    • 如果不想保留本地的原始 OU 路径和 CN 信息,请在 “目标容器 ”下选择 “编辑属性映射”。

      1. 映射类型 更改为 表达式

      2. 在表达式框中,输入:

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

      3. 默认值 更改为 OU=Groups,DC=contoso,DC=com.

        如何更改 OU 的默认值的屏幕截图。

      4. 选择应用。 目标容器根据组 displayName 属性更改。

  8. 可以使用自定义表达式确保组以相同的 CN 重新创建。 将以下表达式用于 CN 值:

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

    此表达式:

    • 如果扩展名为空,则从 DisplayName 和 ObjectId 生成备用 CN。
    • 否则,将转义的逗号临时替换为十六进制值以提取 CN。
  9. 选择“保存”

  10. 在左侧,选择“ 概述”。

  11. 在顶部,选择“ 查看并启用”。

  12. 在右侧,选择“ 启用配置”。

测试配置

备注

运行按需预配时,不会自动预配成员。 需要选择要测试的成员,限制为五个成员。

  1. 以至少混合标识管理员身份登录到 Microsoft Entra 管理中心

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

    显示Microsoft Entra Connect Cloud Sync 主页的屏幕截图。

  1. 在“配置”下选择你的配置。

  2. 在左侧,选择“按需预配”。

  3. “所选组”框中输入 Sales

  4. “所选用户 ”部分,选择要测试的一些用户。

    添加成员的屏幕截图。

  5. 选择“预配”

  6. 你应会看到组已预配。

按需成功预配的屏幕截图。

在 AD DS 中验证

按照以下步骤确保将组配置到 AD DS:

  1. 登录到本地环境。

  2. 启动“Active Directory 用户和计算机”

  3. 验证是否已预配新组。

    新预配组的屏幕截图。

针对 SOA 转换的对象将组预配到 AD DS 行为

将颁发机构源(SOA)转换为本地组的云时,该组有资格将组预配到 AD DS。

例如,在下图中,SOA 或 SOATestGroup1 转换为云。 因此,它可用于组预配到 AD DS 的作业范围。

作用域中作业的屏幕截图。

  • 作业运行时,已成功预配 SOATestGroup1

  • 预配日志中,可以搜索 SOATestGroup1 并验证是否已预配组。

    预配日志的屏幕截图。

  • 详细信息显示 SOATestGroup1 已与现有目标组匹配。

    匹配属性的屏幕截图。

  • 还可以确认目标组的 adminDescriptioncn 已更新。

    更新的属性的屏幕截图。

  • 查看 AD DS 时,可以看到原始组已更新。

    更新后的组的屏幕截图。

    组属性的屏幕截图。

云跳过预配转换后的 SOA 对象到 Microsoft Entra ID

如果在将 SOA 转换为云后尝试在 AD DS 中编辑组的属性,则 Cloud Sync 在预配过程中会跳过该对象。

假设我们有一个组 SOAGroup3,并且将其组名称更新为 SOA Group3.1

对象名称更新的屏幕截图。

预配日志中,可以看到已 跳过 SOAGroup3

跳过的对象屏幕截图。

详细信息说明对象未同步,因为它的 SOA 已转换为云。

阻止的同步的屏幕截图。

嵌套组和成员资格引用处理

下表介绍了在不同用例中转换 SOA 后预配如何处理成员身份引用。

用例 父组类型 成员组类型 工作 同步的工作原理
一个 Microsoft Entra 父安全组仅包含 Microsoft Entra 成员。 Microsoft Entra 安全组 Microsoft Entra 安全组 AAD2ADGroupProvisioning (AD DS 的组预配) 该作业使用其所有成员引用(成员组)预配父组。
Microsoft Entra 父安全组具有一些已同步组的成员。 Microsoft Entra 安全组 AD DS 安全组(已同步组) AAD2ADGroupProvisioning (AD DS 的组预配) 该作业预配父组,但未预配 AD DS 组的所有成员引用(成员组)。
Microsoft Entra 的父安全组包含一些成员,这些成员是其 SOA 已转换为云的同步组。 Microsoft Entra 安全组 其 SOA 转换为云的 AD DS 安全组。 AAD2ADGroupProvisioning (AD DS 的组预配) 该作业使用其所有成员引用(成员组)预配父组。
将具有云拥有的组作为成员的同步组(父组)的 SOA 进行转换。 将 SOA 转换为云的 AD DS 安全组 Microsoft Entra 安全组 AAD2ADGroupProvisioning (AD DS 的组预配) 该作业使用其所有成员引用(成员组)预配父组。
将具有其他已同步组作为成员的同步组(父组)的 SOA 进行转换。 将 SOA 转换为云的 AD DS 安全组 AD DS 安全组(已同步组) AAD2ADGroupProvisioning (AD DS 的组预配) 该作业预配父组,但未预配 AD DS 安全组的所有成员引用(成员组)。
转换已同步组(父级)的 SOA,其成员是已将 SOA 转换为云的其他同步组。 将 SOA 转换为云的 AD DS 安全组 将 SOA 转换为云的 AD DS 安全组 AAD2ADGroupProvisioning (AD DS 的组预配) 该作业使用其所有成员引用(成员组)预配父组。

回滚 SOA 转换后的组后,将组预配到 AD DS 行为

如果作用域中有 SOA 转换组,并且回滚 SOA 转换后的组以使其归 AD DS 所有,则到 AD DS 的组预配会停止同步更改,但不会删除本地组。 它还从配置范围中删除组。 下一个同步周期中,组的本地控制将恢复。

  • 可以在审核日志中验证此对象不会发生同步,因为它在本地托管。

    审核日志详细信息的屏幕截图。

    还可以签入 AD DS,该组仍然完好无损且未删除。

    用户和计算机的屏幕截图。

后续步骤