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 租户。
安装该模块后,请按照以下步骤完成每个所需任务。
检查密码过期策略
至少以用户管理员身份打开 PowerShell 提示符,并连接到 Microsoft Entra 租户。
为单个用户或所有用户运行以下命令之一:
若要查看单个用户的密码是否设置为永不过期,请运行以下 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"}}
设置密码过期
至少以用户管理员身份打开 PowerShell 提示符,并连接到 Microsoft Entra 租户。
为单个用户或所有用户运行以下命令之一:
若要将某一用户的密码设置为会过期的密码,请运行以下 cmdlet。 将
<user ID>
替换为要检查的用户的用户 ID:Update-MgUser -UserId <user ID> -PasswordPolicies None
若要对组织中所有用户的密码进行相应设置,以使其过期,请使用以下命令:
Get-MgUser -All | foreach $_ { Update-MgUser -UserId $_.Id -PasswordPolicies None }
将密码设置为永不过期
至少以用户管理员身份打开 PowerShell 提示符,并连接到 Microsoft Entra 租户。
为单个用户或所有用户运行以下命令之一:
若要将某一用户的密码设置为永不过期,请运行以下 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 问题,请参阅排查自助式密码重置问题