本教程逐步讲解如何将云同步配置为将组同步到本地 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:objectGUID到AAD 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。
- 以至少混合标识管理员身份登录到 Microsoft Entra 管理中心。
- 浏览到 Entra ID>群组>所有群组。
- 在顶部的搜索框中输入“Sales”。
- 选择新的 “销售 ”组。
- 在左侧,选择“ 成员”。
- 在顶部,选择“ 添加成员”。
- 在顶部的搜索框中,输入“Britta Simon”。
- 在 Britta Simon 旁边放置一个检查,然后选择“ 选择”。
- 它应成功将用户添加到组。
- 在最左侧,选择 “所有组”。 使用 Sales 组重复此过程,并将 Lola Jacobson 添加到该组。
准备已转换的 SOA 组以将其预配到原始的组织单位(OU)路径
完成以下步骤,准备计划转换为云管理的组,以便从 Microsoft Entra ID 预配回本地 Active Directory 域服务(AD DS)中的原始 OU 路径:
- 将 AD DS 组范围更改为通用。
- 创建特殊应用程序。
- 为组创建目录扩展属性。
将 AD DS 组的组范围更改为通用
- 打开“Active Directory 管理中心”。
- 右键单击组,单击“ 属性”。
- 在 “组 ”部分中,选择“ 通用 ”作为组范围。
- 单击“ 保存”。
创建扩展
Cloud Sync 仅支持在名为 CloudSyncCustomExtensionsApp 的特殊应用程序上创建的扩展。 如果租户中不存在应用,则必须创建它。 此步骤为每个租户执行一次。
有关如何创建扩展的详细信息,请参阅 云同步目录扩展和自定义属性映射。
打开提升的 PowerShell 窗口并运行以下命令以安装模块并连接:
Install-Module Microsoft.Graph -Scope CurrentUser -Force Connect-MgGraph -Scopes "Application.ReadWrite.All","Directory.ReadWrite.All","Directory.AccessAsUser.All"检查应用程序是否存在。 如果没有,请创建它。 此外,请确保存在服务主体。
$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 }现在添加名为 GroupDN 的目录扩展属性。 这是组对象上可用的字符串属性。
New-MgApplicationExtensionProperty ` -ApplicationId $app.Id ` -Name "GroupDN" ` -DataType "String" ` -TargetObjects Group
有关如何为组创建目录扩展属性的详细信息,请参阅 云同步目录扩展和自定义属性映射。
配置预配
若要配置预配,请执行以下步骤:
以至少混合标识管理员身份登录到 Microsoft Entra 管理中心。
浏览到 Entra ID>Entra Connect>云同步。
选择“新配置”。
选择“Microsoft Entra ID 与 AD 同步”。
在配置屏幕上,选择域以及是否启用密码哈希同步。选择“ 创建”。
此时将打开“开始使用”屏幕。 在此处,可以继续配置云同步。
在左侧,选择 范围筛选器。
对于组范围,请选择所选安全组。
有两种方法可以设定 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 信息,请在 “目标容器 ”下选择 “编辑属性映射”。
可以使用自定义表达式确保组以相同的 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。
选择“保存”。
在左侧,选择“ 概述”。
在顶部,选择“ 查看并启用”。
在右侧,选择“ 启用配置”。
测试配置
备注
运行按需预配时,不会自动预配成员。 需要选择要测试的成员,限制为五个成员。
以至少混合标识管理员身份登录到 Microsoft Entra 管理中心。
浏览到 Entra ID>Entra Connect>云同步。
在 AD DS 中验证
按照以下步骤确保将组配置到 AD DS:
针对 SOA 转换的对象将组预配到 AD DS 行为
将颁发机构源(SOA)转换为本地组的云时,该组有资格将组预配到 AD DS。
例如,在下图中,SOA 或 SOATestGroup1 转换为云。 因此,它可用于组预配到 AD DS 的作业范围。
作业运行时,已成功预配 SOATestGroup1 。
在 预配日志中,可以搜索 SOATestGroup1 并验证是否已预配组。
详细信息显示 SOATestGroup1 已与现有目标组匹配。
还可以确认目标组的 adminDescription 和 cn 已更新。
查看 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 的组预配会停止同步更改,但不会删除本地组。 它还从配置范围中删除组。 下一个同步周期中,组的本地控制将恢复。