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

Linux环境Azure DevOps Pipeline用托管身份通过AzCopy访问Azure文件共享

解决Azure Pipeline中AzCopy自动登录到文件共享的认证错误

错误原因分析

你遇到的AADSTS700016错误,本质是AzCopy在自动登录时尝试了错误的租户(common),而非Azure CLI已登录的指定租户;同时目标文件共享的URL格式、服务主体权限配置也可能触发验证失败。

具体解决步骤

1. 强制AzCopy使用指定租户ID

在脚本中添加AZCOPY_TENANT_ID环境变量,让AzCopy与Azure CLI共用同一租户上下文,避免它去默认租户查找服务主体:

export AZCOPY_TENANT_ID="xxxxx-xxxx-xxxx-xxxx-xxxxxxxx"

这里的租户ID就是你日志中Azure CLI登录时--tenant参数对应的取值。

2. 给服务主体分配文件共享权限

为Azure服务连接对应的服务主体,在目标存储账户或文件共享上分配存储文件数据参与者角色:

  • 登录Azure门户,定位到目标存储账户
  • 进入「访问控制(IAM)」→「添加角色分配」
  • 选择「存储文件数据参与者」角色,将服务主体设为受让人

3. 修正AzCopy目标URL格式

原URL仅指定到存储账户层级,需补充具体文件共享名称,否则AzCopy无法定位目标资源:

azcopy sync directory/MyFilesToCopy https://mystorageaccount.file.core.windows.net/your-file-share --recursive --put-md5

4. 验证Azure CLI登录上下文(可选调试)

在脚本中加入az account show,确认当前登录的租户、订阅信息是否正确,确保AzCopy能继承该上下文:

az account show

修改后的完整YAML示例

- task: AzureCLI@2
  inputs:
    azureSubscription: your-azure-service-connection-name
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |                    
      export AZCOPY_TENANT_ID="xxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
      export AZCOPY_AUTO_LOGIN_TYPE=AZCLI
      # 验证当前登录上下文
      az account show
      azcopy sync directory/MyFilesToCopy https://mystorageaccount.file.core.windows.net/your-file-share --recursive --put-md5
    addSpnToEnvironment: true
    failOnStandardError: true

额外注意事项

  • 确认Azure Pipeline中预安装的AzCopy版本≥v10.14,该版本开始支持AZCLI自动登录模式
  • 如果仍有问题,可尝试在脚本中手动获取存储账户访问令牌并传递给AzCopy,但上述步骤基本能覆盖绝大多数场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:43:25