Microsoft Entra ID 中的密码策略和帐户限制

在 Microsoft Entra ID 中,有一个密码策略用于定义密码复杂性、长度或期限等设置。 还有一个策略可用于定义用户名可接受的字符和长度。

使用自助式密码重置 (SSPR) 在 Microsoft Entra ID 中更改或重置密码时,将检查密码策略。 如果密码不满足策略要求,则系统会提示用户重试。 Azure 管理员在使用 SSPR 方面具有一些不同于常规用户的限制,Microsoft Entra ID 试用版和免费版本也存在轻微例外。

本文介绍与用户帐户关联的密码策略设置和复杂性要求。 它还介绍了如何使用 PowerShell 检查或设置密码过期设置。

用户名策略

登录到 Microsoft Entra ID 的每个帐户都必须有唯一的与其帐户关联的用户主体名称 (UPN) 属性值。 在具有使用 Microsoft Entra Connect 与 Microsoft Entra ID 同步的本地 Active Directory 域服务环境的混合环境中,默认情况下 Microsoft Entra UPN 设置为本地 UPN。

下表概括了既应用于同步到 Microsoft Entra ID 的本地账户又应用于直接在 Microsoft Entra ID 中创建的仅限云的用户帐户的用户名策略:

properties UserPrincipalName 要求
允许的字符 A – Z
a - z
0 – 9
' . - _ ! # ^ ~
不允许的字符 任何不分隔用户名和域的“@”字符。
不能包含紧靠在“@”符号前面的点字符“.”
长度约束 总长度不能超过 113 个字符
在“@”符号前最多能有 64 个字符
在“@”符号后最多能有 48 个字符

Microsoft Entra 密码策略

密码策略应用于直接在 Microsoft Entra ID 中创建和管理的所有用户帐户。 尽管可以为 Microsoft Entra 密码保护或帐户锁定参数配置自定义禁止密码,但无法修改其中某些密码策略设置。

默认情况下,使用错误的密码尝试登录 10 次失败后,帐户会被锁定。 用户会被锁定一分钟。 进一步不正确的登录尝试后,锁定持续时间会增大。 智能锁定跟踪最后三个错误的密码哈希,以避免对相同密码增大锁定计数器。 如果有人多次输入同一个错误密码,将不会锁定该用户。可以定义智能锁定阈值和持续时间。

定义了以下 Microsoft Entra 密码策略选项。 除非另行说明,否则无法更改这些设置:

属性 要求
允许的字符 A – Z
a - z
0 – 9
@ # $ % ^ & * - _ ! + = [ ] { } | \ : ' , . ? / ` ~ " ( ) ; <>
空格
不允许的字符 Unicode 字符
密码限制 至少 8 个字符,最多包含 256 个字符。
需要使用以下四种字符类型中的三种:
- 小写字符
- 大写字符
- 数字 (0-9)
- 符号(请参阅前面的密码限制)
密码过期期限(最长密码期限) 默认值:“90”天。 如果租户是在 2021 年之后创建的,则它没有默认的到期值。 你可以使用 Get-MgDomain 检查当前策略。
该值可通过适用于 PowerShell 的 Microsoft Graph 模块中的 Update-MgDomain cmdlet 来进行配置。
密码过期(让密码永不过期) 默认值:"false"(指示密码有到期日期)。
单个用户帐户的该值可通过 Update-MgUser cmdlet 进行配置。
密码更改历史记录 用户更改密码时,上一个密码不能再次使用。
密码重置历史记录 用户重置忘记的密码时,上一个密码可以再次使用。

如果启用 EnforceCloudPasswordPolicyForPasswordSyncedUsers,Microsoft Entra 密码策略将适用于使用 Microsoft Entra Connect 从本地 同步的用户帐户。 此外,如果用户在本地更改密码以包含 unicode 字符,密码更改可能会在本地成功,但在 Microsoft Entra ID 中不会成功。 如果启用了 Microsoft Entra Connect 的密码哈希同步,用户仍可接收云资源的访问令牌。 但是,如果租户启用“基于用户风险的密码更改”,密码更改将报告为高风险。

系统会提示用户再次更改其密码。 但是,如果更改仍包含 unicode 字符,还启用了智能锁定,则可能会锁定这些字符。

基于风险的密码重置策略限制

如果启用 EnforceCloudPasswordPolicyForPasswordSyncedUsers,则确定高风险后,需要更改云密码。 当用户登录 Microsoft Entra ID 时,系统会提示用户更改其密码。 新密码必须符合云和本地密码策略。

如果密码更改满足本地要求但无法满足云要求,则启用密码哈希同步后密码更改会成功。 例如,如果新密码包含 Unicode 字符,则可以在本地更新密码更改,但不能在云中更新。

如果密码不符合云密码要求,则不会在云中更新密码,并且帐户风险不会降低。 用户仍会收到云资源的访问令牌,但下次访问云资源时,系统会提示用户再次更改其密码。 用户看不到任何错误或通知指出其选择的密码无法满足云要求。

管理员重置策略差异

默认情况下,将为管理员帐户启用自助式密码重置,并强制执行严格的默认双门密码重置策略。 此策略可能与为用户定义的策略不同,以及此策略无法更改。 你应始终以未被分配任何 Azure 管理员角色的用户身份测试密码重置功能。

双门策略需要两条身份验证数据(例如电子邮件地址、验证器应用或电话号码),并且禁止使用安全问题。 Microsoft Entra ID 的试用版或免费版本还禁止使用办公电话和移动语音呼叫。

SSPR 管理员策略不依赖于身份验证方法策略。 例如,如果你在身份验证方法策略中禁用了第三方软件令牌,管理员帐户仍可以注册第三方软件令牌应用程序并使用它们,但仅可将其用于 SSPR。

双门策略在以下情况下适用:

  • 以下所有 Azure 管理员角色将受到影响:

    • 应用程序管理员
    • 身份验证管理员
    • 计费管理员
    • 合规性管理员
    • 云设备管理员
    • 目录同步帐户
    • 目录编写人员
    • Dynamics 365 管理员
    • Exchange 管理员
    • 全局管理员
    • 支持管理员
    • Intune 管理员
    • 已加入 Microsoft Entra 的设备的本地管理员
    • 合作伙伴一线支持人员
    • 合作伙伴二线支持人员
    • 密码管理员
    • Power Platform 管理员
    • 特权身份验证管理员
    • 特权角色管理员
    • 安全管理员
    • 服务支持管理员
    • SharePoint 管理员
    • Skype for Business 管理员
    • Teams 管理员
    • Teams 通信管理员
    • Teams 设备管理员
    • 用户管理员
  • 如果在试用订阅中已过 30 天

    -或-

  • 为 Microsoft Entra 租户配置了自定义域,例如 contoso.com

    -或-

  • Microsoft Entra Connect 从你的本地目录同步标识

可以使用 Update-MgPolicyAuthorizationPolicy PowerShell cmdlet 为管理员帐户禁用 SSPR。 -AllowedToUseSspr:$true|$false 参数为管理员启用/禁用 SSPR。 为管理员帐户启用或禁用 SSPR 的策略更改最长可能需要 60 分钟才能生效。

异常

单门策略需要一条身份验证数据,如电子邮件地址或电话号码。 单门策略在以下情况下适用:

  • 它在试用订阅的前 30 天中

    -或-

  • 未配置自定义域(租户使用默认的 *.onmicrosoft.com,不建议将其用于生产用途),并且 Microsoft Entra Connect 未同步标识。

密码过期策略

用户管理员可使用 Microsoft Graph 将用户密码设置为不过期。

还可以使用 PowerShell cmdlet 删除永不过期配置,或者查看已将哪些用户密码设置为永不过期。

本指南适用于其他提供程序(如 Intune 和 Microsoft 365),这些提供程序也依赖于 Microsoft Entra ID 提供标识和目录服务。 密码过期是策略中唯一可更改的部分。

注意

默认情况下,只有未通过 Microsoft Entra Connect 进行同步的用户帐户的密码才能配置为不过期。 有关目录同步的详细信息,请参阅将 AD 与 Microsoft Entra ID 连接

使用 PowerShell 设置或检查密码策略

首先,下载并安装 Microsoft Graph PowerShell 模块,然后将其连接到 Microsoft Entra 租户

安装该模块后,请按照以下步骤完成每个所需任务。

检查密码过期策略

  1. 至少以用户管理员身份打开 PowerShell 提示符,并连接到 Microsoft Entra 租户

  2. 为单个用户或所有用户运行以下命令之一:

    • 若要查看单个用户的密码是否设置为永不过期,请运行以下 cmdlet。 将 <user ID> 替换为要检查的用户的用户 ID:

      Get-MgUser -UserId <user ID> | Select-Object @{N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}}
      
    • 若要查看所有用户的“密码永不过期”设置,请运行以下 cmdlet:

      Get-MgUser -All | Select-Object UserPrincipalName, @{N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}}
      

设置密码过期

  1. 至少以用户管理员身份打开 PowerShell 提示符,并连接到 Microsoft Entra 租户

  2. 为单个用户或所有用户运行以下命令之一:

    • 若要将某一用户的密码设置为会过期的密码,请运行以下 cmdlet。 将 <user ID> 替换为要检查的用户的用户 ID:

      Update-MgUser -UserId <user ID> -PasswordPolicies None
      
    • 若要对组织中所有用户的密码进行相应设置,以使其过期,请使用以下命令:

      Get-MgUser -All | foreach $_ { Update-MgUser -UserId $_.Id -PasswordPolicies None }
      

将密码设置为永不过期

  1. 至少以用户管理员身份打开 PowerShell 提示符,并连接到 Microsoft Entra 租户

  2. 为单个用户或所有用户运行以下命令之一:

    • 若要将某一用户的密码设置为永不过期,请运行以下 cmdlet。 将 <user ID> 替换为要检查的用户的用户 ID:

      Update-MgUser -UserId <user ID> -PasswordPolicies DisablePasswordExpiration
      
    • 若要将组织中所有用户的密码设置为永不过期,请运行以下 cmdlet:

      Get-MgUser -All | foreach $_ { Update-MgUser -UserId $_.Id -PasswordPolicies DisablePasswordExpiration }
      

    警告

    设置为 -PasswordPolicies DisablePasswordExpiration 的密码仍会基于 LastPasswordChangeDateTime 属性过时。 基于 LastPasswordChangeDateTime 属性,如果将过期更改为 -PasswordPolicies None,则所有 LastPasswordChangeDateTime 超过 90 天的密码将需要用户在下一次登录时更改它们。 此更改可能会影响很多用户。

后续步骤

若要开始使用 SSPR,请参阅教程:使用户能够使用 Microsoft Entra 自助式密码重置来解锁其帐户或重置密码

如果你或用户遇到 SSPR 问题,请参阅排查自助式密码重置问题