在 Microsoft Entra Cloud Sync 中配置 AD 用户和组强制执行(预览版)

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 属性的对象生效。 对于每个标记对象,该策略仅在运行受支持操作系统、已安装更新且已启用该功能的域控制器上才会生效。 如果未启用一个可写域控制器,则针对该域控制器的未授权更改会成功,并绕过该对象的控制。 在依赖强制实施之前,请计划更新和启用 所有 可写域控制器。

规划部署

高级配置为:

  1. 安装更新并在每个可写域控制器上启用该功能。
  2. 在“强制”或“审核”模式下安装策略。
  3. 标记要保护的用户和组。

更新并启用每个可写域控制器

在整个域内上线执行引擎。 在每个可写域控制器上重复更新和启用。

在每个可写域控制器上,安装最新的累积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。

  1. 在每个可写域控制器上,安装最新的累积Windows Server更新。

  2. 如果更新提示你,请重启域控制器。

  3. 通过部署相应的组策略包,在所有可写域控制器上启用该功能,该组策略包使用已知问题回滚(KIR)启用模型。 有关在所有可写域控制器上启用该功能的分步指南,请参阅 使用组策略部署已知问题回滚。 下载匹配包:

  4. 启用后重启每个域控制器。

更新并启用主域控制器模拟器(PDCe)后,它会自动在 SOA-Policies 下创建 CN=System,DC=<your domain> 容器,然后该容器会复制到所有域控制器。 确认容器存在(替换实际域名)。 可能需要几分钟才会显示出来并完成复制。

在“强制”或“审核”模式下安装策略

该 Set-CloudSyncSOAPolicy.ps1 脚本在 Cloud 容器中创建 SOA-Policies 策略对象,并将预配代理的组托管服务帐户 (GMSA) SID 添加到策略的允许列表中。 SOA-Policies如果容器尚不存在,脚本将创建它。

该脚本从本地已安装的预配代理服务中读取该代理的 GMSA。 在安装了云同步预配代理的计算机上运行它。

  1. 安装 Microsoft Entra Cloud Sync 预配代理。 有关安装说明,请参阅安装 Microsoft Entra Cloud Sync 预配代理。

  2. 登录到安装预配代理的计算机。

  3. Set-CloudSyncSOAPolicy.ps1在 GitHub 上从 AzureAD/EntraIDGovernance 存储库下载 PowerShell 脚本。

  4. 以管理员身份打开 PowerShell。

  5. 将目录更改为包含脚本的文件夹。

  6. 运行脚本。 将 Enforced 指定为该模式(“假设”部署请使用 Audit):

    .\Set-CloudSyncSOAPolicy.ps1 -EnforcementMode Enforced -Credential (Get-Credential -Message "Enter Domain Admin credentials (format: DOMAIN\Username)")
    
  7. 确认 Cloud 策略是使用关键字 “强制” (或 “审核”)配置的。 留出时间让新对象在整个域中完成复制。

    ADSI 编辑的屏幕截图,其中显示了 CN=SOA-Policies 容器下的 CN=Cloud 策略对象。

将用户和组标记为强制执行对象

组和用户的属性映射不同。 为要保护的每个对象类型配置适用的映射。

将组标记为强制执行对象

通过 Cloud Sync 属性映射将 msDS-ObjectSoa 属性设置为 Cloud,从而将组标记为强制执行对象。

  1. 在组预配到 AD 的配置中,编辑属性映射。
  2. 添加 msDS-ObjectSoa 为具有值 Cloud的目标属性。 选择以下选项之一:
    • 常量映射(建议大多数客户使用):为预配作业范围内的所有组设置该属性。
    • 表达式映射:根据条件逻辑限制为其设置属性的组。
  3. 将要保护的组分配到预配范围。
  4. 可按需预配该组,或通过启动同步周期来预配该组。

有关将组预配到 AD 的详细信息,请参阅配置 Microsoft Entra ID 以向 Active Directory 进行预配。

将用户标记为待强制执行对象

通过 Cloud Sync 属性映射将 msDS-ObjectSoa 属性设置为 Cloud,以将用户标记为强制执行对象。 在 Microsoft Entra ID 到 AD 的配置中,默认用户属性映射已包含映射到常量 Cloud的 msDS-ObjectSoa,因此该配置预配的用户会被自动标记。

若要确认或配置映射,请执行以下命令:

  1. 在 Microsoft Entra ID 到 AD 的配置中,编辑 user 属性映射。
  2. 确认 msDS-ObjectSoa 作为具有值 Cloud的目标属性存在。 如果需要限制标记的用户,请使用 表达式 映射而不是 常量 映射。
  3. 将要保护的用户分配到预配范围。
  4. 按需预配用户,或通过启动同步周期预配用户。 请参阅配置Active Directory预配。

有关用户属性映射的详细信息,请参阅配置到Active Directory的预配。

验证强制执行属性

在域控制器上使用 ADSI 编辑来确认该策略适用于你标记的每个本地用户或组:

  1. 打开 ADSI 编辑。
  2. 选择“ 查看>高级功能”。
  3. 导航到用户或组,然后打开 “属性”。
  4. 确认属性 msDS-ObjectSoa 已设置为 Cloud.

以下屏幕截图显示在组上设置的属性:

ADSI 编辑中Active Directory组的属性编辑器选项卡的屏幕截图,其中显示了 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 添加到策略中。

  1. 打开 ADSI 编辑。

  2. 导航到 CN=SOA-Policies>CN=Cloud。

  3. 打开 属性编辑器。

  4. msDS-Settings编辑属性并添加 break-glass 帐户的 SID。

    ADSI Edit 的屏幕截图,显示位于 CN=SOA-Policies 下的 msDS-Settings 属性正在“多值字符串编辑器”中使用 SID 值进行编辑。

请记住以下限制和行为:

  • 使允许列表尽可能精简。 为实现最严格的治理态势,请仅允许预配代理 SID,并避免添加紧急访问帐户,除非您有特定的运维需求。 该策略最多支持 64 个 SID。
  • 策略加载时会验证 SID。 单个无效或过时的 SID 会导致 整个策略无法加载,从而使没有任何身份获得授权。 查看 目录服务 日志,查找策略加载错误并更正 SID。
  • 帐户更改是操作风险。 如果授权账户被删除或重新创建,且其 SID 发生变化,请相应更新 msDS-Settings。 将此记录在您的运维手册中。

在事件日志中查看实施事件

若要查看未授权更改的审核事件,请执行以下操作:

  1. 在注册表中,将“安全诊断”的值设置为 1。 有关详细信息,请参阅 AD 和 LDS 诊断事件日志记录。
  2. 打开事件查看器并查看目录服务事件日志。

使用默认值 0进行安全诊断时,只会记录策略加载事件;不会记录单个块和审核事件。

排查实施策略问题

如果 AD 对象强制未按预期方式执行(例如,应阻止的本地更改仍在处理),请使用 Check-CloudSyncSOAPolicy.ps1 脚本确认在域控制器上启用了强制。

  1. Check-CloudSyncSOAPolicy.ps1从 GitHub 上的 AzureAD/EntraIDGovernance 存储库下载脚本。
  2. 登录到要验证的域控制器。
  3. 以管理员身份打开 PowerShell。
  4. 将目录更改为包含脚本的文件夹。
  5. 运行脚本。 它报告是否在该域控制器上启用了 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 的现有限制仍然适用。
  • 强制仅在启用它的域控制器上生效。 在每个可写域控制器上启用该功能;否则,写入未启用该功能的域控制器的更改仍会被处理。