本文探讨多重身份验证(MFA)如何影响使用 Microsoft Entra 用户标识的自动化任务,并提供有关不间断自动化替代方法的指导。
重要
如果您使用 Microsoft Entra 用户身份进行自动化,则需要采取行动。
MFA 要求可防止在自动化方案中使用 Microsoft Entra 用户标识进行身份验证。 组织必须切换到专为自动化设计的身份验证方法,例如托管标识或服务主体,这些主体支持非交互式自动化用例。
自动化中使用 MFA 的用户身份限制
注释
可能会遇到错误消息:在自动化中使用用户标识时,需要 交互式身份验证。
交互式身份验证:使用 Microsoft Entra 用户标识时,在交互式登录期间触发 MFA。 对于依赖于用户标识的自动化脚本,MFA 会中断该过程,因为它需要额外的验证步骤。 例如,无法自动完成的验证器应用、电话呼叫等。 除非以非交互方式(例如使用托管标识或服务主体)处理身份验证,否则此验证可防止自动化运行。
脚本化登录失败:在自动化方案中(例如无人参与运行 Azure PowerShell 脚本)中,启用了 MFA 的用户标识会导致脚本在尝试进行身份验证时失败。 由于 MFA 需要用户交互,因此它与非交互式脚本不兼容。 这意味着您必须切换到托管标识或服务主体,这两者都使用非交互式的身份验证方式。
安全注意事项:虽然 MFA 增加了额外的安全层,但它可以限制自动化灵活性,尤其是在必须运行自动化且无需手动干预的生产环境中。 转移到托管标识、服务主体或联合标识(专为自动化目的设计且不需要 MFA)在此类环境中更为实用和安全。
需要更新的方案
以下列表提供了客户可以使用 Microsoft Entra 用户标识通过 Azure PowerShell 实现自动化的示例方案。 此列表并非所有方案都详尽无遗。
警告
使用 Microsoft Entra 用户标识的任何自动化方案都需要更新。
个性化或专门权限:需要用户特定权限的自动化任务,例如与个人角色或特定 Microsoft Entra ID 属性相关的操作任务。
OAuth 2.0 ROPC 流:OAuth 2.0 资源所有者密码凭证(ROPC)令牌授予流程与 MFA 不兼容。 当需要 MFA 时,使用 ROPC 进行身份验证的自动化方案会失败,因为 MFA 无法在非交互式流中完成。
访问 Azure 外部资源:需要访问 Microsoft 365 资源的自动化方案。 例如,与单个用户的Microsoft帐户绑定的 SharePoint、Exchange 或其他云服务。
从 Active Directory 同步到 Microsoft Entra ID 的服务帐户:使用从 Active Directory (AD) 同步到 Microsoft Entra ID 的服务帐户的组织。 请务必注意,这些帐户也受 MFA 要求的约束,并触发与其他用户标识相同的问题。
用于审核或合规的用户上下文:出于合规性原因,需要对单个用户级别的操作进行审核的情况。
小型或低风险自动化的简单配置:适用于小规模或低风险自动化任务。 例如,用于管理一些资源的脚本。
非生产环境中的用户驱动自动化:如果自动化适用于负责任务的个人或非生产环境。
用户自己的 Azure 订阅中的自动化:如果用户需要在用户拥有足够权限的自己的 Azure 订阅中自动执行任务。
鉴于 Microsoft Entra 用户身份已强制实施 MFA,在自动化场景中需要切换到托管身份或服务主体。
如何开始
若要通过将 Connect-AzAccount
与 Microsoft Entra ID 真人用户帐户和密码配合使用来迁移 Azure PowerShell 脚本,请执行以下步骤:
确定哪个工作负荷标识最适合你。
- 服务主体
- 托管标识
- 联合标识
获取创建新工作负荷标识所需的权限,或联系 Azure 管理员以获取帮助。
创建工作负荷标识。
将角色分配给新身份。 有关 Azure 角色分配的详细信息,请参阅 分配 Azure 角色的步骤。 若要使用 Azure PowerShell 分配角色,请参阅 使用 Azure PowerShell分配 Azure 角色。
更新 Azure PowerShell 脚本以使用服务主体或托管标识登录。
服务主体关键概念
- 可以访问多个 Azure 资源的非人标识。 服务主体由许多 Azure 资源使用,不绑定到单个 Azure 资源。
- 可以根据需要更改服务主体的属性和凭据。
- 非常适合需要跨不同订阅访问多个 Azure 资源的应用程序。
- 认为比托管标识更灵活,但安全性更低。
- 通常称为 Azure 租户中的“应用程序对象”或 Microsoft Entra ID 目录中的对象。
若要了解有关服务主体的详细信息,请参阅:
若要了解如何使用 Azure PowerShell 和服务主体登录到 Azure,请参阅使用 Azure PowerShell 通过服务主体登录到 Azure
托管标识关键概念
- 绑定到特定的 Azure 资源,允许单个资源访问其他 Azure 应用程序。
- 你无法访问凭据。 Azure 处理机密、凭据、证书和密钥。
- 非常适合需要在单个订阅中访问其他 Azure 资源的 Azure 资源。
- 被认为灵活性较低,但比服务主体更安全。
- 托管标识分为两种类型:
- 系统分配:此类型是两个 Azure 资源之间的 1:1(一对一)访问链接。
- 用户分配:此类型具有 1:M(一对多)关系,其中托管标识可以访问多个 Azure 资源。
若要了解托管标识的详细信息,请参阅 Azure 资源托管标识。
若要了解如何使用 Azure PowerShell 和托管标识登录到 Azure,请参阅 使用 Azure PowerShell 托管标识登录到 Azure
联合标识密钥概念
- 联合标识允许服务主体(应用注册)和用户分配的托管标识信任来自外部标识提供者(IdP)(例如 GitHub 或 Google)的令牌。
- 创建信任关系后,外部软件工作负载将从外部 IdP 交换可信令牌,以获取来自 Microsoft 身份平台的访问令牌。
- 然后,软件工作负荷将使用该访问令牌来访问自身已获得访问权限的受 Microsoft Entra 保护的资源。
- 联合标识通常是以下方案的最佳解决方案:
- 在任何 Kubernetes 群集上运行的工作负荷
- GitHub 操作
- 使用应用程序标识在 Azure 计算平台上运行的工作负荷
- Google Cloud
- Amazon Web Services (AWS)
- 在 Azure 外部的计算平台中运行的工作负荷
若要了解有关联合标识的详细信息,请参阅:
故障排除
ROPC 错误:由于管理员所做的配置更改
使用密码登录到 Azure 时,可以使用资源所有者密码凭据 (ROPC) 流。 此身份验证方法不支持 MFA。 下面是一个示例:
Connect-AzAccount -Credential $Credential
如果用户帐户需要 MFA,该命令将失败并出现以下错误:
Connect-AzAccount : UsernamePasswordCredential authentication failed: Response status code does not indicate success: 400 (BadRequest).
See the troubleshooting guide for more information
https://aka.ms/azsdk/net/identity/usernamepasswordcredential/troubleshoot
解决方案: 使用与 MFA 兼容的身份验证方法。
跨租户警告:对特定租户的身份验证失败
如果有权访问多个租户,其中一个租户需要 MFA,Azure PowerShell 可能会显示以下警告:
WARNING: Unable to acquire token for tenant '00000000-0000-0000-0000-000000000000' with error 'Authentication failed against tenant 00000000-0000-0000-0000-000000000000. User interaction is required. This may be due to the conditional access policy settings such as multi-factor authentication (MFA). If you need to access subscriptions in that tenant, please rerun 'Connect-AzAccount' with additional parameter '-TenantId 00000000-0000-0000-0000-000000000000.'
Azure PowerShell 尝试使用在登录期间找到的第一个租户登录。 如果该租户强制实施 MFA,身份验证可能会失败。 若要避免此问题,请使用 TenantId 参数显式指定目标租户:
Connect-AzAccount -TenantId 00000000-0000-0000-0000-000000000000
这可确保针对正确的租户尝试身份验证,从而减少与 MFA 相关的失败的可能性。
详细了解多重身份验证
Microsoft Entra ID 文档网站提供有关 MFA 的更多详细信息。
- 规划强制Microsoft Entra 多重身份验证(MFA)
- 如何使用 MFA 服务器迁移实用工具迁移到 Microsoft Entra 多重身份验证
- Microsoft Entra 多重身份验证的部署注意事项
- 从 MFA 服务器迁移到 Microsoft Entra 多重身份验证