Microsoft 365 如何开启 MFA:安全默认值、条件访问,以及找出还没注册的用户
用安全默认值或条件访问给全员开启 Microsoft 365 MFA,分阶段推行,并用 PowerShell 导出还没注册 MFA 的用户。
简短回答: 给 Microsoft 365 全员强制 MFA,有两种官方支持的做法。安全默认值(Security defaults)是一个没有选项的开关,适合没有 Microsoft Entra ID P1 的租户;条件访问(Conditional Access)可以自己选覆盖谁、排除谁,微软说明 Microsoft 365 Business Premium 的客户也可以使用。两者选一个,不要同时开,然后导出还没注册的用户名单逐个跟进。
本文写给负责公司 Microsoft 365 租户的管理员。读完你可以做到:MFA 已强制开启、有一份分阶段推行计划、如果租户有 Entra ID P1 或 P2(Microsoft 365 Business Premium 含 P1),还能得到一份所有没有注册 MFA 方法的账号清单。步骤已于 2026 年 10 月 28 日对照 Microsoft Learn 核对。
先选方法
安全默认值
- 作用: 要求所有用户注册 MFA,要求管理员使用 MFA,必要时由微软决定提示其他用户,阻止旧式身份验证协议,阻止设备代码流,并保护 Azure 管理工具的访问。
- 可定制性: 没有,只有开和关。
- 授权: 除 Microsoft 365 订阅本身外不需要额外授权。
- 适合: 没有条件访问策略、也没有 Entra ID P1 授权的租户。
条件访问
- 作用: 按你建立的策略执行,例如“全体用户需要 MFA”,并可排除应急账号和服务账号。
- 可定制性: 完全可定制,可选用户、应用、条件和授予控制。
- 授权: Microsoft Entra ID P1,或 Microsoft 365 Business Premium。
- 适合: 有授权的任何租户。微软表示,有 P1 或 P2 授权的组织通常不适合只用安全默认值。
两者是互相替代的关系。微软的说明是:要改用条件访问策略,先关闭安全默认值。
做法 A:开启安全默认值
至少需要 Conditional Access Administrator(条件访问管理员)角色。
- 登录 Microsoft Entra 管理中心(entra.microsoft.com)。
- 进入 Entra ID > Overview > Properties。
- 选择 Manage security defaults。
- 把 Security defaults 设为 Enabled。
- 选择 Save。
保存之前,先确认没有管理员或应用还在用旧式身份验证,因为安全默认值会把它阻止。开启后请所有管理员马上登录一次,以便注册验证方法。微软还建议用 Revoke-MgUserSignInSession 撤销现有登录令牌,让已经登录的用户被迫走一遍注册流程。
用户到 https://myprofile.microsoft.com 选择 Security Info 注册。安全默认值下,注册方式是带通知的 Microsoft Authenticator 应用;用户也可以使用 Authenticator 或任何 OATH TOTP 应用生成的验证码。
安全默认值开启期间,不要在组织层面停用验证方法。微软警告这可能把你锁在租户之外。
做法 B:用条件访问强制 MFA
先建两个应急访问账号。微软建议:仅云端账号、使用 onmicrosoft.com 域名、永久分配 Global Administrator 角色,登录方式用通行密钥(passkey,FIDO2)。把它们放进一个组,例如 EmergencyAccess,之后每条策略只要排除这一个组。
然后建策略,至少需要 Conditional Access Administrator 角色。
- 登录 Microsoft Entra 管理中心。
- 进入 Entra ID > Conditional Access > Policies,选择 New policy。
- 起一个清楚的名字,例如“CA001 Require MFA all users”。
- 在 Assignments > Users or workload identities 下,暂时只包括试点组(见“分阶段推行”),到第 4 周结束时再改为 All users。
- 在 Exclude 下加入应急访问组。如果使用 Microsoft Entra Connect 或 Cloud Sync,还要排除目录角色 Directory Synchronization Accounts。
- 在 Target resources > Resources 下,包括 All resources (formerly 'All cloud apps')。
- 在 Access controls > Grant 下,选择 Grant access,再选 Require authentication strength,然后选内置的 Multifactor authentication 强度。
- 把 Enable policy 设为 Report-only,选择 Create。
- 看完报告结果后(见“如何确认生效”),把 Enable policy 改为 On,先对试点组启用,上一批稳定后再加下一批,最后一批再切换为 All users。
如果租户正在使用安全默认值,要先关闭:Entra ID > Overview > Properties > Manage security defaults > Disabled (not recommended) > Save。
微软也可能已经在你的租户里建好了自己的条件访问策略,例如“Multifactor authentication for all users”。打开策略列表,找 Created by 一栏写着 Microsoft 的行。这些策略以仅报告(Report-only)状态创建,如果你不处理,微软会在引入后不少于 30 天启用,并提前约两周通知。请决定用微软的还是自己的,不要留下两条重叠又没有记录的策略。
分阶段推行
- 第 0 周: 建好应急账号并测试能登录,写好服务台话术和用户说明。
- 第 1 周: 只做管理员。另建一条策略,对象选 Directory roles 而不是 All users,排除项相同(CA002 的步骤见条件访问基础策略),并确认每位管理员都已注册。
- 第 2 周: 试点组,10 到 20 人,来自不同部门,配合注册提醒。仅报告模式不会提示任何人注册,注册要靠提醒或正式启用。
- 第 3、4 周: 其余员工按部门分批,每批第一天早上服务台要有人守着。
- 最后: 访客和服务账号。凡是用用户账号充当服务账号的,尽量换成工作负载标识(workload identity)。
- 切换之后: 每周检查一次未注册名单,直到清零。
提前告诉用户屏幕上会出现什么:系统会要求他们设置 Microsoft Authenticator,并在登录时输入屏幕上显示的数字来批准。
导出还没注册的用户
这里用的是 Microsoft Graph PowerShell,不是已停用的 MSOnline 或 AzureAD 模块。登录账号需要能读取该报告的角色,例如 Reports Reader、Security Reader 或 Global Reader。这个导出需要 Microsoft Entra ID P1 或 P2(Microsoft 365 Business Premium 含 P1),因为微软说明身份验证方法活动数据需要 P1 或 P2 授权。如果你只使用安全默认值,就没有全租户的名单可用。安全默认值本来就要求每位用户在登录时注册,所以请各部门负责人确认员工已到 https://myprofile.microsoft.com 完成注册,并在头几周留意服务台的工单。
Install-Module Microsoft.Graph.Reports -Scope CurrentUser
Connect-MgGraph -Scopes "AuditLog.Read.All"
Get-MgReportAuthenticationMethodUserRegistrationDetail -All `
-Filter "isMfaRegistered eq false" |
Select-Object UserPrincipalName, UserDisplayName, UserType, IsAdmin,
IsMfaRegistered, IsMfaCapable, MethodsRegistered |
Export-Csv .\mfa-not-registered.csv -NoTypeInformation
第一次运行 Connect-MgGraph 时会要求同意 AuditLog.Read.All 权限,需要有权授予同意的人批准。
要找出注册了、但所用方法不被你的身份验证方法策略允许的用户,把筛选条件改成 isMfaCapable eq false。想先看管理员,在 Select-Object 前面加 | Where-Object IsAdmin。
同样的数据也在管理中心:Entra ID > Authentication methods > Activity > Registration。微软提示该报告最多可能滞后 36 小时,并且已删除和已停用的用户不会列出。
常见错误
- 同时开安全默认值和条件访问。 先关掉安全默认值。
- 没有应急账号。 一条写错的策略就能把所有管理员锁在外面。建两个账号,并从会阻止或限制登录的策略中排除。
- 再额外开启按用户的 MFA(per-user MFA)。 微软已不推荐 per-user MFA。在安全默认值或条件访问下,用户状态显示 Disabled 是正常的。
- 忘了旧式身份验证。 使用 IMAP、POP3 或 SMTP 基本身份验证的旧邮件客户端和扫描仪无法做 MFA,切换前先在登录日志里找出来。
- 跳过仅报告模式。 不看报告结果,就不知道谁会受影响。
- 以为第一次登录成功就结束。 没注册的用户迟早变成工单。每周处理未注册名单。
如何确认生效
- 打开 Entra ID > Monitoring & health > Sign-in logs,点开试点用户的一次交互式登录。
- 看 Conditional Access 标签页(策略仍在仅报告时看 Report-only 标签页),确认套用了哪条策略、结果是否成功。
- 用测试用户在隐私窗口登录,应当被要求注册或批准。
- 如果租户有 P1 或 P2,每周重新跑一次 PowerShell 导出,CSV 应逐周缩小直至为空。
- 用应急账号登录一次,证明它仍然可用,并记录日期。
- 打开 Microsoft Secure Score(security.microsoft.com/securescore)。微软说明,开启安全默认值后,“所有用户 MFA”“管理员角色 MFA”“阻止旧式身份验证”这几项建议操作会得到满分。
FAQ
如何在 Outlook 里为邮箱开启双重验证?
不是在 Outlook 里开。MFA 作用于 Microsoft 365 账号,所以只要开启安全默认值或条件访问策略,Outlook 登录时就会要求第二步验证。使用基本身份验证的旧客户端会失效,需要更换。
Microsoft 365 的 MFA 是怎么运作的?
用户输入密码后,微软会要求第二重证明,例如在 Microsoft Authenticator 里批准通知。在安全默认值下,何时提示由微软根据位置、设备、角色和任务等因素决定。
Microsoft Authenticator 怎么用?
到 https://myprofile.microsoft.com,选择 Security Info,添加 Authenticator 应用。登录时应用会显示一个批准请求,其中有一个数字,用户在应用里输入这个数字即可。用户也可以使用应用里的验证码。
如何给 Microsoft 365 全体用户强制 MFA?
用安全默认值(Entra ID > Overview > Properties > Manage security defaults),或建一条包含 All users 并要求多重身份验证的条件访问策略。然后用 PowerShell 导出未注册用户,持续跟进到名单为空。
MFA 登录失败或用户无法完成验证怎么办?
在登录日志里打开失败的那次登录,看失败原因和 Conditional Access 标签页。如果所有管理员都被锁在外面,就用应急访问账号,这也是它必须从策略中排除的原因。
下一步
如果想让人独立检查你们租户里 MFA、条件访问和其他设置是否到位,请看 Microsoft 365 安全审计,也可以读 Microsoft 365 安全检查清单和香港会计师事务所的 MFA 推行。
如果想在动手前先了解完整审计的价格,Microsoft 365 安全审计要花多少钱一文列出了按人数分档的固定价格。
分享:
📬 亚太IT月报
中国合规动态、网络安全预警及亚太IT实践指南,每月一期。
不发垃圾邮件,随时可取消订阅。