Windows LAPS 中的关键概念

了解 Windows 本地管理员密码解决方案 (Windows LAPS) 的基本设计和安全概念,包括:

  • 体系结构
  • 基本方案流
  • 后台策略处理周期
  • Microsoft Entra 密码
  • Windows Server Active Directory 密码
  • 身份验证后的密码重置
  • 帐户密码篡改防护
  • Windows 安全模式

Windows LAPS 体系结构

下图描绘了 Windows LAPS 体系结构:

显示托管设备、Microsoft Entra ID 和 Windows Server Active Directory 的 Windows LAPS 体系结构图。

Windows LAPS 体系结构示意图中有多个关键组件:

  • IT 管理员:统一表示 Windows LAPS 部署中可能涉及的各种 IT 管理员角色。 IT 管理员角色涉及策略配置、存储密码的过期或检索,以及与托管设备的交互。

  • 托管设备:表示要在其上管理本地管理员帐户的已加入 Microsoft Entra 或 Windows Server Active Directory 的设备。 该功能由几个关键的二进制文件组成:用于核心逻辑的 laps.dll、用于配置服务提供程序 (CSP) 逻辑的 lapscsp.dll,以及用于 PowerShell cmdlet 逻辑的 lapspsh.dll。 还可以使用组策略配置 Windows LAPS。 Windows LAPS 会响应组策略对象 (GPO) 更改通知。 托管设备可以是 Windows Server Active Directory 域控制器,并配置为备份目录服务修复模式 (DSRM) 帐户密码。

  • Windows Server Active Directory:本地 Windows Server Active Directory 部署。

  • Microsoft Entra ID:在云中运行的 Microsoft Entra 部署。

  • Microsoft Intune:首选的 Microsoft 设备策略管理解决方案,也在云中运行。

基本方案流

基本 Windows LAPS 方案中的第一步是为组织配置 Windows LAPS 策略。 建议使用以下配置选项:

  • 已加入 Microsoft Entra 的设备:使用 Microsoft Intune

  • 已加入 Windows Server Active Directory 的设备:使用组策略。

  • 使用 Microsoft Intune 注册的已加入混合 Microsoft Entra 的设备:使用 Microsoft Intune

为托管设备配置启用 Windows LAPS 的策略后,该设备将开始管理已配置的本地帐户密码。 当密码过期时,设备会生成一个新的随机密码,该密码符合当前策略的长度和复杂性要求。

验证新密码后,设备会将该密码存储在配置的目录中,即 Windows Server Active Directory 或 Microsoft Entra ID。 关联的密码过期时间基于当前策略的密码期限设置,也会计算出来并存储在该目录中。 达到密码过期时间时,设备会自动轮换密码。

当本地帐户密码存储在相关目录中时,已获授权的 IT 管理员可以访问该密码。 Microsoft Entra ID 中存储的密码通过基于角色的访问控制模型受到保护。 Windows Server Active Directory 中存储的密码通过访问控制列表 (ACL) 受到保护,也可以选择通过密码加密受到保护。

可以在一般预期的过期时间之前轮换密码。 使用以下方法之一在预定过期时间之前轮换密码:

  • 使用 Reset-LapsPassword cmdlet 在受管理设备上手动轮换密码。
  • Windows LAPS CSP 中调用 ResetPassword Execute 操作。
  • 修改目录中的密码过期时间(仅适用于 Windows Server Active Directory)。
  • 当托管帐户用于向托管设备进行身份验证时触发自动轮换。

后台策略处理周期

Windows LAPS 使用每小时唤醒的后台任务来处理当前处于活动状态的策略。 此任务未使用 Windows 任务计划程序任务实现,并且不可配置。

当该后台任务运行时,它会执行以下基本流:

描述 Windows LAPS 后台处理周期的流程图。

Microsoft Entra ID 流和 Windows Server Active Directory 流之间的明显主要差别与检查密码过期时间的方式有关。 在这两种方案中,密码过期时间与最新密码一同存储在目录中。

在 Microsoft Entra 方案中,托管设备不会轮询 Microsoft Entra ID。 当前密码过期时间保留在设备本地。

在 Windows Server Active Directory 方案中,托管设备定期轮询目录以查询密码过期时间,当密码过期时它会采取操作。

手动启动策略处理周期

Windows LAPS 会响应组策略更改通知。 可以通过两种方式手动启动策略处理周期:

  • 强制组策略刷新。 下面是一个示例:

    gpupdate.exe /target:computer /force
    
  • 运行 Invoke-LapsPolicyProcessing cmdlet。 这是首选方法,因为它的范围更大。

提示

早期发布的 Microsoft LAPS(旧版 Microsoft LAPS)是作为组策略 (GPO) 客户端扩展 (CSE) 构建的。 在每个组策略刷新周期中会加载并调用 GPO CSE。 旧版 Microsoft LAPS 轮询周期的频率与组策略刷新周期的频率相同。 Windows LAPS 不是作为 CSE 构建的,因此其轮询周期已硬编码为每小时一次。 Windows LAPS 不受组策略刷新周期的影响。

Microsoft Entra 密码

将密码备份到 Microsoft Entra ID 时,托管的本地帐户密码会存储在 Microsoft Entra 设备对象上。 Windows LAPS 使用托管设备的设备标识向 Microsoft Entra ID 进行身份验证。 存储在 Microsoft Entra ID 中的数据非常安全,但为了提供额外保护,在保存密码之前会进一步将其加密。 在将密码返回给已获授权的客户端之前,将删除这个额外的加密层。

默认情况下,只有全局管理员、云设备管理员和 Intune 管理员角色的成员可以检索明文密码。

Windows Server Active Directory 密码

以下部分提供了有关将 Windows LAPS 与 Windows Server Active Directory 配合使用的重要信息。

密码安全性

将密码备份到 Windows Server Active Directory 时,托管本地帐户密码将存储在计算机对象中。 Windows LAPS 使用两种机制保护这些密码:

  • ACL
  • 加密的密码

ACL

Windows Server Active Directory 中的第一道密码安全防线使用在包含组织单位 (OU) 的计算机对象中设置的 ACL。 ACL 继承到计算机对象本身。 可以使用 Set-LapsADReadPasswordPermission cmdlet 指定谁可以读取各种密码属性。 同样,可以使用 Set-LapsADResetPasswordPermission cmdlet 指定谁可以读取和设置密码过期时间属性。

加密的密码

第二道密码安全防线使用 Windows Server Active Directory 密码加密功能。 若要使用 Windows Server Active Directory 密码加密,域必须在 Windows Server 2016 域功能级别 (DFL) 或更高版本上运行。 启用该功能后,首先会加密密码,以便只有特定的安全主体(组或用户)才能解密它。 在设备将密码发送到目录之前,密码加密将在托管设备本身上进行。

重要

  • 我们强烈建议在 Windows Server Active Directory 中存储 Windows LAPS 密码时启用密码加密。
  • Microsoft 不支持在运行低于 Windows Server 2016 版本的 DFL 的域中检索以前解密的 LAPS 密码。 该操作可能成功,也可能不成功,具体取决于运行低于 Windows Server 2016 版本的域控制器是否已提升到域。

用户组权限

在设计密码检索安全模型时,请考虑下图中的信息:

显示 Windows LAPS 密码安全层的示意图。

该图演示了建议的 Windows Server Active Directory 密码安全层及其相互关系。

最外面的圆圈(绿色)由有权在目录中的计算机对象上读取或设置密码过期时间属性的安全主体组成。 这是一种敏感权限,但被认为是非破坏性的。 获得此权限的攻击者可能会强制托管设备更频繁地轮换其托管设备。

中间的圆圈(黄色)由有权在目录中的计算机对象上读取或设置密码属性的安全主体组成。 这是一种敏感权限,应小心地予以监视。 最安全的方法是为域管理员安全组的成员保留此权限级别。

仅当已启用密码加密时,里面的圆圈(红色)中的信息才适用。 内圈由对目录中计算机对象上的已加密密码属性拥有解密权限的组或用户组成。 与中间圆圈中的权限一样,此解密权限也是一种敏感权限,应小心地予以监视。 最安全的方法是为域管理员组的成员保留此权限级别。

重要

考虑自定义安全层以匹配组织中托管计算机的敏感性。 例如,允许支持管理员访问一线 IT 工作人员的设备,但为企业行政人员的便携式计算机设置更严格的访问界限。

密码加密

Windows LAPS 密码加密功能基于加密 API:下一代数据保护 API (CNG DPAPI)。 CNG DPAPI 支持多种加密模式,但 Windows LAPS 仅支持针对单个 Windows Server Active Directory 安全主体(用户或组)加密密码。 基础加密基于高级加密标准 256 位密钥 (AES-256) 加密。

可以使用 ADPasswordEncryptionPrincipal 策略设置来设置用于加密密码的特定安全主体。 如果未指定 ADPasswordEncryptionPrincipal,Windows LAPS 将针对托管设备域的域管理员组加密密码。 在托管设备加密密码之前,该设备始终会验证指定的用户或组是否可解析。

提示

  • Windows LAPS 仅支持针对单个安全主体加密密码。 CNG DPAPI 支持针对多个安全主体进行加密,但 Windows LAPS 不支持此模式,因为它会导致已加密密码缓冲区膨胀。 如果需要向多个安全主体授予解密权限,为了解决这一限制,可以创建一个将所有相关安全主体作为成员组合到一起的包装器组。
  • 加密密码后,无法更改有权解密该密码的安全主体。

已加密密码历史记录

Windows LAPS 支持对已加入 Windows Server Active Directory 域的客户端和域控制器使用密码历史记录功能。 仅当启用了密码加密时,才支持密码历史记录。 如果将明文密码存储在 Windows Server Active Directory 中,则不支持密码历史记录。

启用已加密密码历史记录后,当需要轮换密码时,托管设备首先会从 Windows Server Active Directory 中读取当前版本的已加密密码。 然后将当前密码添加到密码历史记录中。 它会根据需要删除历史记录中较低版本的密码,以符合配置的最大历史记录限制。

提示

若要正常使用密码历史记录功能,必须为托管设备授予 SELF 权限,使其能够从 Windows Server Active Directory 读取当前版本的已加密密码。 当运行 Set-LapsADComputerSelfPermission cmdlet 时会自动处理此要求。

重要

建议永远不要向托管设备授予解密任何设备(包括该托管设备本身)的已加密密码的权限。

DSRM 密码支持

Windows LAPS 支持在 Windows Server 域控制器上备份 DSRM 帐户密码。 如果启用了密码加密,则只能将 DSRM 帐户密码备份到 Windows Server Active Directory。 否则,此功能的工作方式几乎与已加入 Windows Server Active Directory 的客户端的已加密密码支持工作方式相同。

不支持将 DSRM 密码备份到 Microsoft Entra ID。

重要

启用 DSRM 密码备份后,可以检索任一域控制器的当前 DSRM 密码,前提是可以访问该域中的至少一个域控制器。

请考虑一种灾难性的情况,即域中所有域控制器都已关闭。 在这种情况下,只要你一直在维护每个 Active Directory 的常规备份最佳做法,你仍然可以使用 AD 灾难恢复方案中检索密码中所述的过程从备份中恢复 DSRM 密码。

身份验证后的密码重置

如果检测到使用本地管理员帐户进行身份验证,Windows LAPS 支持自动轮换本地管理员帐户密码。 此功能旨在限制明文密码的可用时间长短。 可以配置一个宽限期,让用户有时间完成其所需操作。

域控制器上的 DSRM 帐户不支持身份验证后的密码重置。

帐户密码篡改防护

当 Windows LAPS 配置为管理本地管理员帐户密码时,可以防止该帐户遭到意外或不小心的篡改。 当 Windows LAPS 通过 Windows Server Active Directory 域控制器管理 DSRM 帐户时,这种保护将扩展到该帐户。

Windows LAPS 拒绝意外尝试修改帐户的密码,并且出现 STATUS_POLICY_CONTROLLED_ACCOUNT (0xC000A08B) 或 ERROR_POLICY_CONTROLLED_ACCOUNT (0x21CE\8654) 错误。 Windows LAPS 事件日志通道中将每个此类拒绝记录为 10031 事件。

在 Windows 安全模式下已禁用

当 Windows 以安全模式、DSRM 模式或任何其他非正常引导模式启动时,Windows LAPS 将处于禁用状态。 即使处于已过期状态,在此期间也不会备份受管理帐户的密码。

Windows LAPS 与智能卡策略的集成

启用“交互式登录:需要 Windows Hello 企业版或智能卡”策略(即 SCForceOption)时,将豁免 Windows LAPS 管理的帐户。 请参阅其他智能卡组策略设置和注册表项

Windows LAPS 操作系统映像回退检测和缓解

将实时操作系统映像还原到早期版本时,往往会面临“撕裂状态”结果,即目录中存储的密码不再与设备本地存储的密码匹配。 例如,将 Hyper-V 虚拟机还原到以前的快照时,则可能会出现此问题。

出现此问题后,IT 管理员将无法使用暂留的 Windows LAPS 密码登录到设备。 在 Windows LAPS 轮换密码之前,此问题将不会得到解决,但根据当前密码过期日期,此问题可能持续数天或数周不会出现。

Windows LAPS 通过同时将随机 GUID 写入目录来缓解此问题,同时保存新密码,然后保存本地副本。 该 GUID 将存储在 msLAPS-CurrentPasswordVersion 属性中。 在每个处理循环中,都将查询 msLAPS-CurrentPasswordVersion guid,并将其与本地副本进行比较。 如果这两个 GUID 不一致,则会立即轮换密码。

仅当将密码备份到 Active Directory 时,才支持此功能。 不支持 Microsoft Entra ID。

重要

仅当计算机仍具有有效的计算机帐户密码并且能够向 Active Directory 进行身份验证时,Windows LAPS 回滚检测和缓解才能正常工作。 根据回滚导致的不匹配状态,该条件可能或可能不是 true。 如果计算机不再能够进行身份验证,则需要执行其他恢复步骤,例如重置计算机帐户密码。 如果已启用 Windows LAPS 密码历史记录功能,还原计算机上的 Windows LAPS 帐户可能仍然很有用。

重要

Windows LAPS OS 映像回滚检测和缓解功能在 Windows 11 24H2、Windows Server 2025 及更高版本中受支持。 除非运行最新版本的 Update-LapsADSchema PowerShell cmdlet,否则此功能将不起作用,该 cmdlet 会将新的 msLAPS-CurrentPasswordVersion 架构属性添加到 Active Directory 架构中。

另请参阅

后续步骤

了解 Windows LAPS 设计的基本概念后,请开始使用以下方案之一: