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

Azure DevOps流水线无法获取托管服务主体访问令牌求助

解决Azure DevOps流水线MSI认证ACR失败问题

排查与修复步骤

1. 确认代理的MSI配置

  • Microsoft托管代理:无需额外配置VM的MSI,但要确保服务连接使用的托管身份拥有ACR权限。
  • 自托管代理:必须给代理所在VM启用系统分配/用户分配的MSI,且该MSI需具备ACR的AcrPush权限。

2. 配置托管身份的ACR权限

进入Azure门户的ACR资源,打开「访问控制(IAM)」:

  • 添加角色分配,角色选择AcrPush(专门用于镜像推送,权限更精准)。
  • 成员选择服务连接对应的托管身份(用户分配MSI直接选;系统分配MSI找到对应资源)。

注意:流水线使用的是服务连接的MSI身份,而非你本地的个人账号权限。

3. 验证Docker任务配置

  • 确认containerRegistry参数对应的服务连接确实是采用Managed Identity认证的Docker Registry类型,未选错成Service Principal等其他类型。
  • 检查变量$(dockerRegistryServiceConnection)的拼写是否与服务连接名称完全一致。

4. 测试MSI令牌获取能力

  • 若使用自托管代理,在代理VM上执行以下命令验证:
    az login --identity
    az acr login --name 你的ACR名称
    
    若命令失败,说明VM的MSI未正确启用,或MSI无ACR访问权限。
  • 若使用托管代理,尝试重新创建服务连接,确保创建时正确选择Managed Identity并关联目标ACR。

5. 检查网络访问权限

  • 自托管代理:确保VM所在虚拟网络允许出站访问https://management.azure.com及ACR的登录地址(如xxx.azurecr.io)。
  • 托管代理:若ACR配置了私有端点,需确保托管代理能访问该端点(如通过Azure Private Link或允许代理IP范围)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:35:06