Microsoft Entra 云同步可将云组预配到本地 Active Directory (AD)。 AD 组强制实施使你能够指定特定的已同步组,从而只能通过 Microsoft Entra 预配服务对其进行修改。 Microsoft Entra ID 与 AD 组之间的这种对齐减少了对单独核对流程的需要,并有助于确保所有访问权限都通过 Microsoft Entra 授予。
Important
AD 组强制执行当前处于 预览版。 该预览版包含两个需要一起配置的部分:位于域控制器上的 Active Directory 强制实施引擎(该代码包含在 Windows Server 的累积更新中,但默认处于禁用状态,并在预览期间通过组策略包启用),以及用于将组标记为强制实施对象的 Microsoft Entra 云同步 配置。 有关适用于 beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览补充使用条款。
AD 组强制执行的工作原理
强制实施由 Active Directory 在执行 LDAP 写入时,在处理该写入的域控制器上进行评估。 当更改面向标记为强制的组时,域控制器会检查调用标识是否由策略授权。 如果不符合要求,则会在任何漂移(即 Microsoft Entra 中的组状态与 AD 中的组状态出现偏离)发生之前,阻止该更改(强制模式)或记录该更改(审核模式)。
两个组件协同工作
- 列出有权更改强制对象的安全标识符(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 属性的组生效。 对于每个已标记的组,该策略仅会在运行受支持操作系统、已安装更新并已启用该功能的域控制器上生效。 如果未启用一个可写域控制器,则针对该域控制器的未授权更改会成功,并且该组将绕过该控件。 在依赖强制实施之前,请计划更新和启用 所有 可写域控制器。
在您开始之前
在开始配置步骤之前,请确保已准备好以下先决条件。
| 先决条件 | 详细信息 |
|---|---|
| Microsoft Entra许可证 | 具有用于配置向 AD 预配组的 Microsoft Entra ID P1 许可证的 Microsoft Entra 租户。 |
| AD 角色 | 域管理员,用于运行安装策略和管理策略对象的 PowerShell 脚本。 |
| 每个可写域控制器上受支持的域控制器操作系统 | Windows Server 2022或Windows Server 2025。 由于必须在每个可写域控制器上启用强制实施,因此请确认所有这些域控制器都可以运行受支持的 OS。 如果任何可写域控制器都无法升级到受支持的操作系统版本,则该域控制器将无法参与,并且无法为该域配置强制实施。 |
| 预配代理主机 | 已加入您的 AD 域的 Windows Server 2019 或 Windows Server 2022 计算机。 代理不必在域控制器上运行。 |
| 没有域功能级别要求 | 实施不需要提升域或林的功能级别。 启用每个可写域控制器(而不是功能级别设置)是一项操作要求。 |
| Schema | 使用自Windows Server 2016架构以来存在的现有msDS-ObjectSoa属性。 不需要架构扩展。 |
| 域控制器清单 | 域中所有可写域控制器的清单。 若要枚举它们,请运行 Get-ADDomainController -Filter * | Where-Object { -not $_.IsReadOnly } 或查看 域控制器列表。 |
有关预配代理先决条件的完整列表,请参阅Microsoft Entra云同步的先决条件。
规划部署
高级配置为:
- 安装更新并在每个可写域控制器上启用该功能。
- 在“强制”或“审核”模式下安装策略。
- 标记要保护的组。
步骤 1:更新并启用每个可写域控制器
在整个域内上线执行引擎。 在每个可写域控制器上重复更新和启用。
在每个可写域控制器上,安装最新的累积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> 容器,然后该容器会复制到所有域控制器。 确认容器存在(替换实际域名)。 可能需要几分钟才会显示出来并完成复制。
步骤 2:在强制模式或审核模式下安装策略
该 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策略是使用关键字 “强制” (或 “审核”)配置的。 留出时间让新对象在整个域中完成复制。
步骤 3:标记组以强制实施
通过 Cloud Sync 属性映射将 msDS-ObjectSoa 属性设置为 Cloud,将组标记为用于强制执行。
- 在组预配到 AD 的配置中,编辑属性映射。
- 添加
msDS-ObjectSoa为具有值Cloud的目标属性。 选择以下选项之一:- 常量映射(建议大多数客户使用):为预配作业范围内的所有组设置该属性。
- 表达式映射:根据条件逻辑限制为其设置属性的组。
- 将要保护的组分配到预配范围。
- 可按需预配该组,或通过启动同步周期来预配该组。
有关配置向 AD 预配组的详细信息,请参阅 配置将 Microsoft Entra ID 预配到 Active Directory。
验证是否已在组上设置属性
在域控制器上使用 ADSI Edit 确认策略应用于本地组:
- 打开 ADSI 编辑。
- 选择“查看>高级功能”。
- 导航到该组,然后打开 “属性”。
- 确认在
msDS-ObjectSoa组上设置了该属性。
当某项更改被阻止时,管理员看到的内容
在 “强制” 模式下,在 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 作为紧急访问账户添加到策略中,并使用该账户进行一次更新。 此更改应会成功。
- 在每个可写域控制器上尝试进行相同的未授权更改,以确认整个域内的执行是否一致。
此预览版中的已知行为和限制
- 此预览版仅支持组对象。 尚不支持通过预配代理将用户预配到 AD。
- 在 Microsoft Entra 中转换组的权威源不会自动锁定 AD 中的该组。 完成本文中的步骤,通过向 AD 进行组预配将某个组标记为强制实施。
- 强制不会阻止删除。
- 强制执行可保护已标记对象自身的成员关系和属性。 将强制组嵌套到非强制组中并不受限制。
- 在此预览期间,向 AD 预配组的现有限制仍然适用。
- 强制仅在启用它的域控制器上生效。 如 AD 组强制实施的工作方式 中所述,请在每个可写域控制器上启用该功能;否则,写入到未启用该功能的域控制器的更改仍会被处理。