过渡到无密码部署

认知度和用户教育

在最后一个步骤中,你将包括适合无密码部署的目标工作角色的剩余用户。 在执行此步骤之前,需要投资开展宣传活动。

宣传活动向用户介绍对其设备进行身份验证的新方法,例如使用Windows Hello 企业版。 该活动的想法是提前积极促进对用户的更改。 说明价值以及公司发生更改的原因。 活动应提供日期,并鼓励提出问题和反馈。 此市场活动可以与用户教育一致,你可以在其中向用户显示更改,并在环境允许的情况下让用户试用体验。

提示

为了方便用户通信并确保成功部署Windows Hello 企业版,可以在Microsoft Entra模板中找到可自定义 (电子邮件模板、海报、培训等 ) 材料。

包括适合工作角色的剩余用户

你为目标用户实施了认知活动。 这些用户已获通知,并准备过渡到无密码。 将与目标工作角色匹配的剩余用户添加到部署。

验证工作角色的用户是否不需要密码

你已成功将目标工作角色的所有用户转换为无密码。 监视工作角色中的用户,以确保他们在无密码环境中工作时不会遇到任何问题。

跟踪所有报告的问题。 为每个报告的问题设置优先级和严重性,并让团队适当地对问题进行会审。 在对问题进行会审时,请考虑以下问题:

问题
🔲 报告用户是否在工作角色之外执行任务?
🔲 报告的问题是否影响整个工作角色,还是仅影响特定用户?
🔲 中断是否是配置错误的结果?
🔲 中断是否是步骤 2 中忽略的差距?

每个组织的优先级和严重性各不相同。 但是,大多数组织认为停工相当严重。 你的团队应预定义优先级和严重性级别。 对于每个级别, (SLA) 每种严重性和优先级的组合创建服务级别协议,并让每个人都对这些协议负责。 反应式规划使用户能够将更多时间花在问题和解决问题上,并减少在流程上的时间。

根据服务级别协议解决问题。 严重性较高的项目可能需要返回用户的部分或全部密码图面。 显然,此结果不是最终目标,但不要让它减慢你走向无密码的势头。 请参阅在步骤 2 中如何减少用户的密码图面,以及如何前进到解决方案、部署该解决方案并对其进行验证。

提示

监视域控制器的密码身份验证事件。 这有助于主动识别仍在使用密码的用户,并与他们联系。

配置用户帐户以阻止密码身份验证

你已将目标工作角色的所有用户转换为无密码环境,并验证了其所有工作流。 完成无密码转换的最后一步是删除用户对密码的了解。

密码乱码

虽然无法从用户帐户中完全删除密码,但可以阻止用户使用密码进行身份验证。 最简单和最有效的方法是将密码设置为随机值。 此方法可防止用户知道密码并使用它进行身份验证,但允许用户在需要时重置密码。

提示

(SSPR) 启用Microsoft Entra自助式密码重置,以允许用户重置其密码。 实现后,用户可以使用 Windows Hello 企业版 或 FIDO2 安全密钥登录到其 Windows 设备,并从 重置其密码https://aka.ms/sspr。 将其与密码写回结合使用,将密码重置同步到本地 Active Directory。

以下示例 PowerShell 脚本生成 64 个字符的随机密码,并为变量名称中指定的用户设置密码$userId针对 Microsoft Entra ID。 修改脚本的 userId 变量以匹配第一行) (环境,然后在 PowerShell 会话中运行它。 当系统提示向Microsoft Entra ID进行身份验证时,请使用具有能够重置密码的角色的帐户的凭据。

$userId = "<UPN of the user>"

function Generate-RandomPassword{
    [CmdletBinding()]
    param (
      [int]$Length = 64
    )
  $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{};:,.<>/?\|`~"
  $random = New-Object System.Random
  $password = ""
  for ($i = 0; $i -lt $Length; $i++) {
    $index = $random.Next(0, $chars.Length)
    $password += $chars[$index]
  }
  return $password
}

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Install-Module Microsoft.Graph -Scope CurrentUser
Import-Module Microsoft.Graph.Users.Actions
Connect-MgGraph -Scopes "UserAuthenticationMethod.ReadWrite.All" -NoWelcome

$passwordParams = @{
 UserId = $userId
 AuthenticationMethodId = "28c10230-6103-485e-b985-444c60001490"
 NewPassword = Generate-RandomPassword
}

Reset-MgUserAuthenticationMethodPassword @passwordParams

类似的脚本可用于针对 Active Directory 重置密码。 修改脚本的 samAccountName 变量以匹配第一行) (环境,然后在 PowerShell 会话中运行它。

$samAccountName = <sAMAccountName of the user>

function Generate-RandomPassword{
    [CmdletBinding()]
    param (
      [int]$Length = 64
    )
  $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{};:,.<>/?\|`~"
  $random = New-Object System.Random
  $password = ""
  for ($i = 0; $i -lt $Length; $i++) {
    $index = $random.Next(0, $chars.Length)
    $password += $chars[$index]
  }
  return $password
}

$NewPassword = ConvertTo-SecureString -String (Generate-RandomPassword) -AsPlainText -Force

Set-ADAccountPassword -identity $userId -NewPassword $NewPassword -Reset

如果组织策略允许,则可以将随机密码配置为永不过期,或使用较长的过期期。 此配置可防止系统提示用户更改其密码。

注意

仅从安全且受信任的环境中执行脚本,并确保未记录该脚本。 将执行脚本的主机视为特权主机,其安全级别与域控制器相同。

密码期限和密码轮换

如果你的组织没有密码轮换要求,建议禁用密码期限。

如果组织有密码轮换策略,请考虑实现自动化以定期轮换用户的密码。 此方法可确保用户的密码始终是随机的,并防止用户知道密码。

有关更多与密码相关的指南,请参阅白皮书 密码指南

后续步骤

Microsoft 正在努力使无密码旅程更轻松。 我们正在努力开发新的特性和功能,以帮助你过渡到无密码环境,并实现真正无密码环境的长期安全承诺。 请经常回来查看,了解新增功能。