可以使用 Windows 本地管理员密码解决方案 (Windows LAPS) 来管理本地管理员帐户和域控制器目录服务还原模式 (DSRM) 帐户的密码。 本文介绍如何开始使用 Windows LAPS 和 Windows Server Active Directory。 其中介绍了使用 Windows LAPS 将密码备份到 Windows Server Active Directory 以及检索密码的基本过程。
域功能级别和域控制器作系统版本要求
如果域功能级别(DFL)早于 2016 年,则无法启用 Windows LAPS 密码加密。 没有密码加密:
- 你可以将客户端配置为仅以明文形式存储密码,由 Windows Server Active Directory 访问控制列表(ACL)保护。
- 无法将域控制器配置为管理其本地 DSRM 帐户。
当域使用 2016 或更高版本的 DFL 时,可以启用 Windows LAPS 密码加密。 但是,运行的任何 Windows Server 2016 和更早版本的域控制器都不支持 Windows LAPS。 因此,这些域控制器无法使用 DSRM 帐户管理功能。
只要你意识到这些限制,就可以在域控制器上使用 Windows Server 2016 和更早版本的作系统。
下表汇总了各种方案中支持的功能:
域详细信息 | 受支持的明文密码存储 | 受支持的加密密码存储(适用于已加入域的客户端) | 支持的 DSRM 帐户管理(对于域控制器) |
---|---|---|---|
DFL 早于 2016 年 | 是 | 否 | 否 |
具有一个或多个 Windows Server 2016 或更早版本域控制器的 2016 DFL | 是 | 是 | 是,但仅适用于 Windows Server 2019 及更高版本的域控制器 |
2016 DFL 仅适用于 Windows Server 2019 及更高版本的域控制器 | 是 | 是 | 是 |
强烈建议升级到客户端、服务器和域控制器上的最新可用作系统,以便利用最新的功能和安全性改进。
准备 Active Directory
在配置已加入 Active Directory 或已混合加入的设备以备份托管账户密码到 Active Directory 之前,请按照以下步骤操作。
注释
如果计划只将密码备份到 Microsoft Entra ID,则无需执行任何这些步骤,包括扩展 AD 架构。
- 如果使用组策略中心存储,请手动将 Windows LAPS 组策略模板文件复制到中央存储。 有关详细信息,请参阅 配置 Windows LAPS 的策略设置。
- 分析、确定和配置适当的 AD 权限,用于密码过期和密码检索。 请参阅 Windows Server Active Directory 密码。
- 分析和确定用于解密密码的相应授权组。 请参阅 Windows Server Active Directory 密码。
- 创建一个新的 Windows LAPS 策略,该策略针对受管理设备,并具有先前步骤中确定的适当设置。
更新 Windows Server Active Directory 架构
在使用 Windows LAPS 之前,必须更新 Windows Server Active Directory 架构。 可以使用 Update-LapsADSchema
cmdlet 来执行此操作。 这是针对整个林的一次性操作。 可以在使用 Windows LAPS 更新的 Windows Server 2019 或更高版本域控制器上本地运行 Update-LapsADSchema
该 cmdlet。 但是,只要服务器支持 Windows LAPS PowerShell 模块,就可以在不是域控制器的服务器上运行此 cmdlet。
PS C:\> Update-LapsADSchema
提示
在命令行中包含参数 -Verbose
,以查看有关处理过程中 cmdlet 进度的详细信息。 可以将参数 -Verbose
与 LAPS PowerShell 模块中的任何 cmdlet 配合使用。
授予托管设备更新其密码的权限
使用 Windows LAPS 管理设备上的密码时,需要向该托管设备授予更新其密码的权限。 可以通过设置包含设备的组织单位(OU)的可继承权限来执行此作。 可以将 Set-LapsADComputerSelfPermission
cmdlet 用于此目的,如以下代码所示:
PS C:\> Set-LapsADComputerSelfPermission -Identity NewLaps
Name DistinguishedName
---- -----------------
NewLAPS OU=NewLAPS,DC=laps,DC=com
提示
如果你希望在域的根上设置可继承的权限,可以使用可分辨名称(DN)输入格式来指定整个域根。 例如,可以将参数 -Identity
与参数 DC=laps,DC=com
一起使用。
授予密码查询权限
必须授予用户权限才能从 Active Directory 查询密码。 可以通过设置包含设备的组织单位(OU)的可继承权限来执行此作。 可以将 Set-LapsADReadPasswordPermission
cmdlet 用于此目的,如以下代码所示:
PS C:\> Set-LapsADReadPasswordPermission -Identity NewLAPS -AllowedPrincipals @("laps\LapsPasswordReadersGroup")
Name DistinguishedName
---- -----------------
NewLAPS OU=NewLAPS,DC=laps,DC=com
提示
默认情况下,域管理员组的成员已具有密码查询权限。
提示
授予用户从 Active Directory 查询密码的权限时,不会自动暗示用户有权解密加密密码。 当设备将密码存储在 Active Directory 中时,使用 ADPasswordEncryptionPrincipal
策略设置配置解密加密密码的权限。 默认情况下,ADPasswordEncryptionPrincipal
的策略设置为域管理员组。
授予密码过期权限
必须授予用户权限才能设置 Active Directory 中存储的密码的过期时间。 在 Active Directory 中将密码标记为过期时,设备将在下一个处理周期轮换密码。 用户可以使用此机制将剩余时间缩短(或延长)到下一个预期的密码轮换。
可以通过设置包含设备的组织单位(OU)的可继承权限来执行此作。 可以将 Set-LapsADResetPasswordPermission
cmdlet 用于此目的,如以下代码所示:
PS C:\> Set-LapsADResetPasswordPermission -Identity NewLAPS -AllowedPrincipals @("laps\LapsPasswordExpirersGroup")
Name DistinguishedName
---- -----------------
NewLAPS OU=NewLAPS,DC=laps,DC=com
提示
默认情况下,域管理员组的成员已具有密码过期权限。
提示
授予 Set-LapsADPasswordExpirationTime
权限后,该 cmdlet 可用于在 Active Directory 中设置给定设备的密码过期时间。
查询扩展权限
某些用户或组可能对托管设备的 OU 具有扩展权限。 这种情况有问题,因为拥有此权限的用户可以读取机密属性,并且所有 Windows LAPS 密码属性都标记为机密。
可以使用 Find-LapsADExtendedRights
cmdlet 查看谁具有此权限,如以下代码所示:
PS C:\> Find-LapsADExtendedRights -Identity newlaps
ObjectDN ExtendedRightHolders
-------- --------------------
OU=NewLAPS,DC=laps,DC=com {NT AUTHORITY\SYSTEM, LAPS\Domain Admins}
在输出中,只有受信任的实体 SYSTEM 和域管理员才具有权限。 在这种情况下,不需要执行任何其他操作。
配置设备策略
以下部分演示如何配置设备策略。
选择策略部署机制
第一步是选择如何在设备上应用策略。
大多数环境使用 Windows LAPS 组策略将所需设置部署到其已加入 Windows Server Active Directory 域的设备。
如果你的设备也加入了 Microsoft Entra ID 混合域,则你可以使用 Microsoft Intune 和 Windows LAPS 配置服务提供程序 (CSP) 来部署策略。
配置特定策略
至少必须配置BackupDirectory
设置,并为其分配值2
。 此值用于将密码备份到 Windows Server Active Directory。
如果未配置 AdministratorAccountName
此设置,Windows LAPS 默认管理默认的内置本地管理员帐户。 此内置帐户通过使用其已知的相对标识符(RID)自动标识。 不应使用名称来标识它。 内置本地管理员帐户的名称因设备的默认区域设置而异。
如果要配置自定义的本地管理员帐户,则应将该帐户的名称设置为配置项AdministratorAccountName
。
重要
如果将 Windows LAPS 配置为管理自定义本地管理员帐户,则必须确保已创建该帐户。 Windows LAPS 不会创建该帐户。 建议使用 RestrictedGroups CSP 创建帐户。
您可以根据组织的需要配置其他设置,例如 PasswordLength
。
如果未配置给定设置,则会应用默认值。 请确保了解设置的默认值。 例如,如果启用密码加密但未配置 ADPasswordEncryptionPrincipal
设置,则会加密密码,以便只有域管理员可以解密密码。 如果希望除域管理员以外的用户能够解密它,则可以使用不同的设置进行配置 ADPasswordEncryptionPrincipal
。
更新 Windows Server Active Directory 中的密码
Windows LAPS 每小时处理活动策略。 还可以手动启动处理周期,因为 Windows LAPS 会响应组策略更改通知。
若要验证密码是否已在 Windows Server Active Directory 中成功更新,请查找 ID 为 10018 的事件的事件日志:
为了避免在应用策略后等待,可以运行 Invoke-LapsPolicyProcessing
PowerShell cmdlet 立即处理策略。
从 Windows Server Active Directory 检索密码
可以使用 Get-LapsADPassword
cmdlet 从 Windows Server Active Directory 检索密码,如以下代码所示:
PS C:\> Get-LapsADPassword -Identity lapsAD2 -AsPlainText
ComputerName : LAPSAD2
DistinguishedName : CN=LAPSAD2,OU=NewLAPS,DC=laps,DC=com
Account : Administrator
Password : <password>
PasswordUpdateTime : 7/1/2022 1:23:19 PM
ExpirationTimestamp : 7/31/2022 1:23:19 PM
Source : EncryptedPassword
DecryptionStatus : Success
AuthorizedDecryptor : LAPS\Domain Admins
在此输出中,该 Source
行指示已启用密码加密。 密码加密要求为 Windows Server 2016 或更高版本 DFL 配置域。
如果拒绝访问查询密码,可以调整密码读取权限。 请参阅 “授予密码查询权限”。
轮换密码
Windows LAPS 在每个策略处理周期从 Windows Server Active Directory 读取密码过期时间。 如果密码已过期,则会立即生成并存储新密码。
在某些情况下,你可能希望提前轮换密码,例如,在安全漏洞之后或在即兴测试期间轮换密码。 若要手动强制轮换密码,可以使用 Reset-LapsPassword
cmdlet。
可以使用 Set-LapsADPasswordExpirationTime
cmdlet 设置存储在 Windows Server Active Directory 中的计划密码过期时间。 以下代码将过期时间设置为当前时间:
PS C:\> Set-LapsADPasswordExpirationTime -Identity lapsAD2
DistinguishedName Status
----------------- ------
CN=LAPSAD2,OU=NewLAPS,DC=laps,DC=com PasswordReset
下次 Windows LAPS 处理当前策略时,会看到修改后的密码过期时间并轮换密码。 如果不想等待下一个处理周期,可以运行 Invoke-LapsPolicyProcessing
cmdlet 立即处理策略。
可以使用 Reset-LapsPassword
cmdlet 在本地强制立即轮换密码。
在 Windows Server Active Directory 灾难恢复方案中检索密码
若要检索 Windows LAPS 密码(包括 DSRM 密码),通常需要至少一个 Windows Server Active Directory 域控制器才能可用。 在灾难性场景中,域中的所有域控制器可能会瘫痪。 在这种情况下,如何恢复密码?
Windows Server Active Directory 管理的最佳做法建议定期备份所有域控制器。 可以使用 PowerShell cmdlet 并指定 Get-LapsADPassword
参数,查询存储在装载的备份 Windows Server Active Directory 数据库中的 Windows LAPS 密码。
在 Windows Insider 预览体验计划版本 27695 及更高版本中,Get-LapsADPassword
cmdlet 提供增强的密码检索功能。 具体而言,使用 Get-LapsADPassword
cmdlet 并同时指定 -Port
和 -RecoveryMode
参数时,密码恢复会成功,无需联系域控制器。 此外,还可以在此模式下在工作组(未加入域)计算机上运行 Get-LapsADPassword
。 此功能在客户端和服务器作系统中可用。
提示
可以使用该 dsamain.exe
实用工具装载 Windows Server Active Directory 备份媒体,并通过轻型目录访问协议(LDAP)对其进行查询。
dsamain.exe
该工具默认未安装,因此必须添加该工具。 可以使用 Enable-WindowsOptionalFeature
cmdlet 来启用它。
- 在 Windows 客户端计算机上,可以运行
Enable-WindowsOptionalFeature -Online -FeatureName DirectoryServices-ADAM-Client
。 - 在 Windows Server 计算机上,可以运行
Enable-WindowsOptionalFeature -Online -FeatureName DirectoryServices-ADAM
。
以下代码查询存储在端口 50000 上本地装载的 Windows Server Active Directory 备份数据库中的 Windows LAPS 密码:
PS C:\> Get-LapsADPassword -Identity lapsDC -AsPlainText -Port 50000 -RecoveryMode
ComputerName : LAPSDC
DistinguishedName : CN=LAPSDC,OU=Domain Controllers,DC=laps,DC=com
Account : Administrator
Password : <password>
PasswordUpdateTime : 8/15/2024 10:31:51 AM
ExpirationTimestamp : 9/14/2024 10:31:51 AM
Source : EncryptedDSRMPassword
DecryptionStatus : Success
AuthorizedDecryptor : S-1-5-21-2127521184-1604012920-1887927527-35197
重要
从工作组计算机上装载的 Windows Server Active Directory 备份数据库中检索加密的 Windows LAPS 密码时,该 AuthorizedDecryptor
字段始终以原始安全标识符 (SID) 格式显示。 工作组计算机无法将 SID 转换为友好名称。
另请参阅
- 使用 Microsoft Entra ID(Azure AD)引入 Windows 本地管理员密码解决方案
- Microsoft Entra ID 中的 Windows 本地管理员密码解决方案
- RestrictedGroups CSP
- Microsoft Intune
- Microsoft Intune 对 Windows LAPS 的支持
- Windows LAPS CSP
- Windows LAPS 故障排除指南