前言

Windows本地管理员密码解决方案Windows LAPS是一项Windows功能,允许IT管理员保护本地管理员密码。这包括自动轮换密码以及将密码备份到Azure Active Directory或Active Directory。

自2023年4月21日起,适用于Azure Active Directory的Windows LAPS也可以在公共预览版中访问。本文,我将记录使用 Azure Active Directory & Microsoft Intune对Windows LAPS 的初步使用测试。

官方文档


先决条件

许可证要求

拥有Azure AD免费或更高版本许可证的客户现在可以访问Windows LAPS for Azure Active Directory。但是,相关功能(如管理单元、自定义角色、条件访问和 Microsoft Intune)有特定的许可要求。

支持的场景

只有加入Azure ADHybrid Azure AD的设备才与Windows LAPS for Azure Active Directory兼容。

支持的操作系统

所需的角色或权限

  • Cloud Device Administrator
  • Intune Administrator
  • Global Administrator

除了Azure AD的默认角色:Cloud Device AdministratorIntune AdministratorGlobal Administrator这些角色都有权访问device.LocalCredentials.Read.All外,你还可以使用Azure AD自定义角色或管理单元授权以恢复本地管理员密码。


Azure Active Directory的Windows LAPS功能概述:

  • 在Microsoft Azure(在Azure设备对象上)中存储密码
  • 通过Microsoft Intune进行设置配置
  • 通过Microsoft Entra/Microsoft Intune门户或Microsoft Graph API/PowerShell恢复存储的密码
  • 通过Microsoft Intune进行按需密码轮换
  • 在使用时自动重置密码(客户端驱动)
  • 创建Azure AD基于角色的访问控制(RBAC)策略,使用自定义角色和管理单元进行密码恢复授权。
  • 通过Microsoft Entra或Microsoft Graph API/PowerShell查看审核日志,以监视密码更新和检索事件。
  • 在具有密码恢复授权的目录角色上配置条件访问策略。

配置 Windows LAPS for AAD

本文将以Windows 11客户端为例配置Windows LAPS

要求

确保你的客户端必须安装了(2023 年 4 月累积更新(KB5025239)

配置本地管理员账户

请务必注意,在Windows 11中,默认情况下本地内置管理员帐户是禁用状态。Windows LAPS不会自动为我们启用内置管理员帐户,也不会自动创建专用管理员帐户。

可以通过以下方式配置本地管理员账户, 具体基于个人习惯或公司策略进行配置

  • 手动或通过脚本启用administrator账户;
  • 手动或通过脚本创建自定义Local Admin 账户;
  • 基于Intune主动修正脚本或自定义OMA-URI

本文将直接手动启用administrator账户进行配置。

启用 Windows LAPS

Windows LAPS for Azure Active Directory可以从Microsoft Entra管理中心或Azure Active Directory门户启用:

启用Azure AD本地管理员密码解决方案(LAPS)

  • https://entra.microsoft.com 依次访问设备⇒概述⇒设备设置⇒启用Azure AD本地管理员密码解决方案(LAPS):是
  • https://portal.azure.com 依次访问Azure Active Directory⇒设备⇒设备设置⇒启用Azure AD本地管理员密码解决方案(LAPS):是

创建 Windows LAPS 策略

Windows LAPS 密码策略配置可通过Microsoft Intune管理中心Endpoint Security进行配置:

https://intune.microsoft.com 依次访问端点安全⇒帐户保护⇒创建策略⇒Windows 10 及更高版本⇒选择配置文件:本地管理员密码解决方案 (Windows LAPS)

Intune Endpoint Security

Windows LAPS配置设置

下面我简单列出可用的不同配置选项。详见请见官方文档:

官方文档

备份目录: 允许将本地管理员密码备份到Azure AD 或 Local AD;

管理员帐户名称: 如果已配置,则指定帐户的密码将通过策略进行管理。如果未指定,则默认的内置本地管理员帐户将由已知的 SID 定位(即使它已被重命名);

注意: 如果在此设置中指定了自定义托管本地管理员帐户名称,则必须确保该帐户已经创建并启用。在此设置中指定名称不会导致创建帐户;

密码复杂性: 允许IT 管理员配置托管本地管理员帐户的密码复杂性;

密码长度: 配置密码长度。默认值为14,最小值为8,最大值为64;

Post Authentication Actions: 此设置指定成功进行身份验证后LAPS应如何处理帐户。默认情况下,它将注销管理帐户并重置密码;

Post Authentication Reset Delay: 在执行我们上面指定的身份验证后操作之前将等待多长时间。默认值为24小时;


配置、查阅本地管理员密码

管理员可以通过多种方式查看本地管理员密码:

Intune Admin Portal

Intune Admin Portal

Microsoft Entra

Microsoft Entra

PowerShell

安装Microsoft Graph SDK

Install-Module Microsoft.Graph -Scope AllUsers

安装Azure Module

Install-Module Az -Scope AllUsers

创建AZURE ACTIVE DIRECTORY应用

  1. 连接Azure AD
Connect-AzAccount
  1. 创建 Azure AD 注册的应用程序
$AppRegistrationSplat = @{
	DisplayName    = "IntuneLAPSadmin"
}
$AzureADApp = New-AzADApplication @AppRegistrationSplat 

  1. 给注册的应用授权

需要为新创建的应用程序授予适当的权限。应用程序必须具有Device.Read.All权限,并且具有以下两个权限之一: DeviceLocalCredential.ReadBasic.AllDeviceLocalCredential.Read.All,其中:

  • DeviceLocalCredential.ReadBasic.All: 用于授予读取有关持久化 Windows LAPS 密码的非敏感元数据的权限。示例包括密码备份到 Azure 的时间以及密码的预期过期时间。此权限级别适用于报告和合规性应用程序。

  • DeviceLocalCredential.Read.All: 用于授予读取有关持久化 Windows LAPS 密码的所有内容的完全权限,包括明文密码本身。此权限级别很敏感,谨慎使用。

下表将列出权限及其相应的权限 ID。记下下一步的权限 ID。

Permission ID
Device.Read.All 7438b122-aefc-4978-80ed-43db9fcc7715
DeviceLocalCredential.Read.All 884b599e-4d48-43a5-ba94-15c414d00588
DeviceLocalCredential.ReadBasic.All db51be59-e728-414b-b800-e0f010df1a79
$AppPermissions = @(
	"7438b122-aefc-4978-80ed-43db9fcc7715"
	"884b599e-4d48-43a5-ba94-15c414d00588"
)

$AppPermissions | ForEach-Object {
	Add-AzADAppPermission -ObjectId $AzureADApp.id -ApiId '7c24036f-0000-0000-c000-c24e0558687' -PermissionId $_ -Type Role
}

注意: 在上面的脚本中,我使用的是DeviceLocalCredential.Read.All权限。

  1. 给注册程序创建一个重定向URL

访问Azure Portal⇒Azure AD⇒App Registrations⇒ IntuneLAPSadmin(你创建的APP名)⇒Authentication⇒添加自定义重定向URL http://localhost

  1. 授予管理员批准权限

访问Azure Portal⇒Azure AD⇒App Registrations⇒IntuneLAPSadmin(你创建的APP名)⇒API Permissions⇒点击批准

查询密码

通过Powershell MgGraph获取的前提需要2个ID:

  • 应用程序的客户端 ID
  • 租户 ID

然后使用PowerShell和上面收集的信息登录到Microsoft Graph

Connect-MgGraph -Environment Global -TenantId a98642c2-0000-0000-0000-ac6273459731 -ClientId  15fe2bc7-0000-0000-0000-7d3de9fe3a97 -Scopes "Device.Read.All","DeviceLocalCredential.Read.All"

注意: 在上面的脚本中,如果你使用的是DeviceLocalCredential.ReadBasic.All权限而不是DeviceLocalCredential.Read.All则需要在此进行替换为DeviceLocalCredential.ReadBasic.All

使用方法:

若要获取设备的LAPS密码信息,需要设备ID(可在 Azure AD 门户中找到)。获得设备ID后,运行以下命令:

Get-LapsAADPassword -DeviceIds 8155b933-9cfa-4d86-ba50-dd72ca6579db

注意: 返回的信息是不包括设备密码。如果授予了DeviceLocalCredential.Read.All权限,则可以运行以下命令以包含设备的LAPS密码。

Get-LapsAADPassword -DeviceIds 8155b933-9cfa-4d86-ba50-dd72ca6579db -IncludePasswords -AsPlainText


密码轮换

Intune

在Intune门户中,单击设备,然后单击设备概述中的省略号,单击即可选择轮换本地管理员密码。

当客户端重启后其密码将会更新。

PowerShell

通过Powershell 的Reset-LapsPassword cmdlet直接在本地客户端进行密码轮换(需要使用本地管理员权限)。

手动强制策略更新

Windows LAPS 定期(每小时)处理当前处于活动状态的策略。若要避免在应用策略后等待,可以运行Invoke-LapsPolicyProcessing PowerShell cmdlet(需要使用本地管理员权限)


TroubleShooting

WINDOWS LAPS 事件日志

Windows LAPS 日志可以在 Windows事件查看器中找到:

应用程序和服务日志⇒Microsoft⇒Windows⇒LAPS

Powershell

PowerShell命令Get-LapsDiagnostics从本地计算机收集Windows LAPS日志和跟踪。此zip中包含当前设备配置和LAPS Windows事件日志的概述。


以上为Windows LAPS配置及简单实用方法, Enjoy ~~ 、:smile::smile:

欢迎访问我的个人博客: ITPro.cc