You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中如何处理azcli登录的MFA验证问题

Azure Pipeline中AZ CLI适配MFA的推荐方案

针对你遇到的ERROR: AADSTS50076错误(因管理员配置或位置变动需MFA认证),自动化Pipeline场景下无法通过交互式MFA完成AZ CLI登录,以下是几种实用的解决方案:

1. 使用服务主体(Service Principal)

服务主体是非交互式身份标识,专为自动化场景设计,可结合条件访问策略适配MFA要求:

  • 创建服务主体:
    az ad sp create-for-rbac --name "Pipeline专用服务主体" --role <所需权限角色> --scopes <目标资源/订阅范围>
    
  • 在Pipeline中通过服务主体登录:
    az login --service-principal -u <服务主体APP ID> -p <客户端密钥/证书路径> --tenant <租户ID>
    
  • 注意:若租户强制所有身份需MFA,需在Azure AD条件访问策略中配置:允许该服务主体从Azure DevOps的可信IP范围访问时跳过MFA,或直接排除该服务主体的MFA要求(需根据安全需求权衡)。

2. 直接使用Azure DevOps服务连接(推荐)

这是最省心的自动化方案,无需手动处理AZ CLI登录流程:

  • 在Azure DevOps项目中创建Azure资源管理器服务连接,可选择自动生成服务主体,或手动关联已有的服务主体;
  • 在Pipeline的Azure CLI任务中,直接选择该服务连接,任务会自动完成身份认证,无需编写az login命令;
  • 优势:Azure DevOps自动管理认证生命周期,权限可通过服务主体精细控制,且天然适配Azure生态的安全策略。

3. 使用用户分配托管标识

适合长期运行的Pipeline,无需管理密钥类凭证:

  • 为Azure DevOps代理池分配用户托管标识;
  • 在Pipeline中通过托管标识登录AZ CLI:
    az login --identity --username <托管标识客户端ID>
    
  • 优势:身份由Azure自动管理,无密钥泄露风险,可直接为托管标识赋予对应Azure资源的权限。

关于令牌使用的说明

可以通过az account get-access-token获取访问令牌,但该方式需要先完成交互式MFA登录,无法在自动化Pipeline中执行,因此不推荐。令牌有有效期限制,手动维护轮换成本极高,远不如上述三种方案可靠。

内容的提问来源于stack exchange,提问作者Éric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:34:56