Microsoft Entra Cloud Sync 可以将云用户和组预配到本地 Active Directory (AD)。 AD 对象强制实施允许保护特定的预配用户和组,以便只能通过Microsoft Entra预配服务执行修改。 本文介绍如何启用强制引擎、配置其共享策略以及标记用户和组以强制实施。
在开始之前,请确保域控制器、预配代理、AD 架构和管理访问权限满足先决条件。
Prerequisites
在开始配置步骤之前,请确保已准备好以下先决条件。
| 先决条件 | Details |
|---|---|
| Microsoft Entra许可证 | 具有将用户和组预配到 AD 所需许可证的 Microsoft Entra 租户。 请参阅 许可证要求。 |
| AD 角色 | 域管理员,用于运行安装策略和管理策略对象的 PowerShell 脚本。 仅在安装或更改策略时使用此权限。 完成后,按照组织的实时特权访问过程删除或停用特权访问。 |
| 每个可写域控制器上受支持的域控制器操作系统 | Windows Server 2022或Windows Server 2025。 由于必须在每个可写域控制器上启用强制实施,因此请确认所有这些域控制器都可以运行受支持的 OS。 如果任何可写域控制器都无法升级到受支持的操作系统版本,则该域控制器将无法参与,并且无法为该域配置强制实施。 |
| 预配代理主机 | 已加入域且符合云同步代理要求的服务器。 建议Windows Server 2025 或 Windows Server 2022。 代理不必在域控制器上运行。 |
| 没有域功能级别要求 | 实施不需要提升域或林的功能级别。 启用每个可写域控制器(而不是功能级别设置)是一项操作要求。 |
| Schema | 使用自Windows Server 2016架构以来存在的现有msDS-ObjectSoa属性。 不需要架构扩展。 |
| 域控制器清单 | 域中所有可写域控制器的清单。 若要枚举它们,请运行 Get-ADDomainController -Filter * | Where-Object { -not $_.IsReadOnly } 或查看 域控制器列表。 |
| 已配置到 AD 的预配 | 一个 Microsoft Entra ID 到 AD 的配置,用于预配要对其强制实施策略的用户或组。 请参阅教程:从 Microsoft Entra ID 管理对本地应用的访问。 |
有关预配代理先决条件的完整列表,请参阅从Microsoft Entra ID预配到Active Directory的先决条件。
Important
AD 用户和组强制执行功能现处于 预览 阶段。 该预览版包含两个需要一起配置的部分:域控制器上的Active Directory 强制引擎,以及用于将用户和组标记为强制实施对象的Microsoft Entra Cloud Sync配置。 有关适用于预览版Azure功能的法律条款,请参阅Microsoft Azure预览版补充使用条款。
AD 对象强制工作原理
Active Directory 会在轻量目录访问协议 (LDAP) 写入时,在处理该写入的域控制器上评估强制执行策略。 当更改面向标记为强制实施的用户或组时,域控制器会检查调用标识是否由策略授权。 如果不是这样,更改会被阻止(强制模式)或被记录(审核模式),以防在对象在 Microsoft Entra 中的状态与其在 AD 中的状态之间发生任何偏差。
两个组件协同工作
- 一个适用于整个域的授权源 (SOA) 策略,其中列出了被授权更改受强制保护对象的安全标识符 (SID) 以及当前模式(强制或审计)。 该策略存储在
SOA-Policies下创建的CN=System,DC=<your domain>容器中。 - 通过 Cloud Sync 设置的对象级标记,即
msDS-ObjectSoa属性。该策略仅适用于设置了此属性的对象。
| 模式 | Behavior |
|---|---|
| 已强制执行 | 只有策略允许的 SID 才能更改强制实施的用户和组。 该策略会阻止 LDAP 修改操作、修改 DN 操作以及从回收站执行的还原操作。 即使添加包含 msDS-ObjectSoa 属性,该策略仍允许 LDAP 添加操作。 在公开预览期间,允许执行删除操作。 |
| 审计 | 可根据你现有的 AD 基于角色的访问控制(RBAC)权限进行更改。 当未经授权的标识更改强制对象时,策略会将事件写入 目录服务 日志。 在切换到“强制模式”之前,先使用“审计模式”发现带外更改。 若要查看事件,请启用安全诊断日志记录(请参阅 查看事件日志中的强制事件)。 |
AD 对象强制机制是对您现有 AD RBAC 模型的补充。 它会在当前访问控制的基础上设置额外的限制,而无需授予任何其他访问权限。
Warning
强制操作仅适用于你标记的用户和组,并且只有在启用每个可写域控制器时,标记对象的保护才完成。 强制执行并不是作用于整个域的统一开关:它只对设置了 msDS-ObjectSoa 属性的对象生效。 对于每个标记对象,该策略仅在运行受支持操作系统、已安装更新且已启用该功能的域控制器上才会生效。 如果未启用一个可写域控制器,则针对该域控制器的未授权更改会成功,并绕过该对象的控制。 在依赖强制实施之前,请计划更新和启用 所有 可写域控制器。
规划部署
高级配置为:
- 安装更新并在每个可写域控制器上启用该功能。
- 在“强制”或“审核”模式下安装策略。
- 标记要保护的用户和组。
更新并启用每个可写域控制器
在整个域内上线执行引擎。 在每个可写域控制器上重复更新和启用。
在每个可写域控制器上,安装最新的累积Windows Server更新,然后部署匹配的组策略 (KIR) 包以启用该功能。 Windows Server 2022的最低版本C:\Windows\System32\ntdsai.dll为 10.0.20348.5257,Windows Server 2025 年为 10.0.26100.32995。 若要验证已安装的版本,请在域控制器上运行 (Get-Item C:\Windows\System32\ntdsai.dll).VersionInfo.FileVersion。
在每个可写域控制器上,安装最新的累积Windows Server更新。
如果更新提示你,请重启域控制器。
通过部署相应的组策略包,在所有可写域控制器上启用该功能,该组策略包使用已知问题回滚(KIR)启用模型。 有关在所有可写域控制器上启用该功能的分步指南,请参阅 使用组策略部署已知问题回滚。 下载匹配包:
- Windows Server 2022:适用于Windows Server 2022的组策略包
- Windows Server 2025:Windows Server 2025 的组策略包
启用后重启每个域控制器。
更新并启用主域控制器模拟器(PDCe)后,它会自动在 SOA-Policies 下创建 CN=System,DC=<your domain> 容器,然后该容器会复制到所有域控制器。 确认容器存在(替换实际域名)。 可能需要几分钟才会显示出来并完成复制。
在“强制”或“审核”模式下安装策略
该 Set-CloudSyncSOAPolicy.ps1 脚本在 Cloud 容器中创建 SOA-Policies 策略对象,并将预配代理的组托管服务帐户 (GMSA) SID 添加到策略的允许列表中。
SOA-Policies如果容器尚不存在,脚本将创建它。
该脚本从本地已安装的预配代理服务中读取该代理的 GMSA。 在安装了云同步预配代理的计算机上运行它。
安装 Microsoft Entra Cloud Sync 预配代理。 有关安装说明,请参阅安装 Microsoft Entra Cloud Sync 预配代理。
登录到安装预配代理的计算机。
Set-CloudSyncSOAPolicy.ps1在 GitHub 上从 AzureAD/EntraIDGovernance 存储库下载 PowerShell 脚本。以管理员身份打开 PowerShell。
将目录更改为包含脚本的文件夹。
运行脚本。 将
Enforced指定为该模式(“假设”部署请使用Audit):.\Set-CloudSyncSOAPolicy.ps1 -EnforcementMode Enforced -Credential (Get-Credential -Message "Enter Domain Admin credentials (format: DOMAIN\Username)")确认
Cloud策略是使用关键字 “强制” (或 “审核”)配置的。 留出时间让新对象在整个域中完成复制。
将用户和组标记为强制执行对象
组和用户的属性映射不同。 为要保护的每个对象类型配置适用的映射。
将组标记为强制执行对象
通过 Cloud Sync 属性映射将 msDS-ObjectSoa 属性设置为 Cloud,从而将组标记为强制执行对象。
- 在组预配到 AD 的配置中,编辑属性映射。
- 添加
msDS-ObjectSoa为具有值Cloud的目标属性。 选择以下选项之一:- 常量映射(建议大多数客户使用):为预配作业范围内的所有组设置该属性。
- 表达式映射:根据条件逻辑限制为其设置属性的组。
- 将要保护的组分配到预配范围。
- 可按需预配该组,或通过启动同步周期来预配该组。
有关将组预配到 AD 的详细信息,请参阅配置 Microsoft Entra ID 以向 Active Directory 进行预配。
将用户标记为待强制执行对象
通过 Cloud Sync 属性映射将 msDS-ObjectSoa 属性设置为 Cloud,以将用户标记为强制执行对象。 在 Microsoft Entra ID 到 AD 的配置中,默认用户属性映射已包含映射到常量 Cloud的 msDS-ObjectSoa,因此该配置预配的用户会被自动标记。
若要确认或配置映射,请执行以下命令:
- 在 Microsoft Entra ID 到 AD 的配置中,编辑 user 属性映射。
- 确认
msDS-ObjectSoa作为具有值Cloud的目标属性存在。 如果需要限制标记的用户,请使用 表达式 映射而不是 常量 映射。 - 将要保护的用户分配到预配范围。
- 按需预配用户,或通过启动同步周期预配用户。 请参阅配置Active Directory预配。
有关用户属性映射的详细信息,请参阅配置到Active Directory的预配。
验证强制执行属性
在域控制器上使用 ADSI 编辑来确认该策略适用于你标记的每个本地用户或组:
- 打开 ADSI 编辑。
- 选择“ 查看>高级功能”。
- 导航到用户或组,然后打开 “属性”。
- 确认属性
msDS-ObjectSoa已设置为Cloud.
以下屏幕截图显示在组上设置的属性:
当某项更改被阻止时,管理员看到的内容
在 “强制” 模式下,在 LDAP 写入层阻止未经授权的修改强制用户或组的尝试,并返回一个特定的错误,指示对象由云 SOA 策略管理。 该更改永远不会被提交,因此不存在需要协调的偏差。 此错误不同于泛型“拒绝访问”,因此管理员可以判断更改被有意阻止,并且必须通过Microsoft Entra管理对象。 确切的措辞因工具(Active Directory 用户和计算机、PowerShell 或 LDAP 客户端)而异,但含义相同。
在 审核 模式下,允许进行相同的更改,并将事件写入 目录服务 日志,指示更改已被阻止。
在强制模式和审核模式之间切换
若要更改模式,请使用 Set-CloudSyncSOAPolicy.ps1 的新值再次运行 -EnforcementMode:
.\Set-CloudSyncSOAPolicy.ps1 -EnforcementMode Audit -Credential (Get-Credential -Message "Enter Domain Admin credentials (format: DOMAIN\Username)")
破窗帐户
您可以授权其他身份更改本地的强制实施用户和组,例如在云预配不可用时使用的紧急管理员帐户。 为此,需要将该帐户的 SID 添加到策略中。
请记住以下限制和行为:
- 使允许列表尽可能精简。 为实现最严格的治理态势,请仅允许预配代理 SID,并避免添加紧急访问帐户,除非您有特定的运维需求。 该策略最多支持 64 个 SID。
- 策略加载时会验证 SID。 单个无效或过时的 SID 会导致 整个策略无法加载,从而使没有任何身份获得授权。 查看 目录服务 日志,查找策略加载错误并更正 SID。
- 帐户更改是操作风险。 如果授权账户被删除或重新创建,且其 SID 发生变化,请相应更新
msDS-Settings。 将此记录在您的运维手册中。
在事件日志中查看实施事件
若要查看未授权更改的审核事件,请执行以下操作:
- 在注册表中,将“安全诊断”的值设置为
1。 有关详细信息,请参阅 AD 和 LDS 诊断事件日志记录。 - 打开事件查看器并查看目录服务事件日志。
使用默认值 0进行安全诊断时,只会记录策略加载事件;不会记录单个块和审核事件。
排查实施策略问题
如果 AD 对象强制未按预期方式执行(例如,应阻止的本地更改仍在处理),请使用 Check-CloudSyncSOAPolicy.ps1 脚本确认在域控制器上启用了强制。
-
Check-CloudSyncSOAPolicy.ps1从 GitHub 上的 AzureAD/EntraIDGovernance 存储库下载脚本。 - 登录到要验证的域控制器。
- 以管理员身份打开 PowerShell。
- 将目录更改为包含脚本的文件夹。
- 运行脚本。 它报告是否在该域控制器上启用了 AD 对象强制策略。
如果应阻止的更改仍然成功,请检查以下内容:
- 更改已写入未更新且未启用的域控制器。 确认 每个可写域控制器 都有更新和组策略包,并在之后重新启动。 若要查找客户端使用的域控制器,请运行
nltest /dsgetdc:<your domain>。 - 策略处于 审核 模式,而不是 强制实施。
- 容器
SOA-Policies存在于CN=System,DC=<your domain>. - 该
msDS-ObjectSoa属性在目标用户或组上设置。 如果不是,请确认适用的用户或组属性映射并运行预配周期。
如果某项已获授权的更改被意外阻止,请确认执行操作的帐户的 SID 是否存在于该策略的 msDS-Settings 属性中,并确认该更改是否已复制到负责处理此次写入操作的域控制器。
测试策略
使用以下示例测试用例验证配置:
- 使用未经授权的帐户更新本地强制组的成员身份。 应阻止更改。
- 使用未经授权的帐户在本地更新受强制执行保护用户的属性。 应阻止更改。
- 将策略切换到 审核 并重复测试。 允许进行此更改,并且 Directory Service 事件日志中会出现一条事件记录。
- 将 SID 作为紧急访问账户添加到策略中,并使用该账户进行一次更新。 此更改应会成功。
- 在每个可写域控制器上尝试进行相同的未授权更改,以确认整个域内的执行是否一致。
此预览版中的已知行为和限制
- 转换Microsoft Entra中用户或组的授权源不会自动锁定 AD 中的对象。 完成本文中的步骤,将对象标记为通过预配到 AD 强制执行。
- 强制不会阻止删除。
- 强制保护每个标记对象的属性,并保护组成员身份。 将强制组嵌套到非强制组中并不受限制。
- 在此预览期间,用户和组预配到 AD 的现有限制仍然适用。
- 强制仅在启用它的域控制器上生效。 在每个可写域控制器上启用该功能;否则,写入未启用该功能的域控制器的更改仍会被处理。