AAD认证成功后azcopy上传文件至Azure Blob报错凭证缺失
故障原因
- 本地token缓存异常:azcopy默认将认证成功后的OAuth令牌存储在
~/.azcopy/路径下,若该目录权限异常、存在历史无效缓存,或执行azcopy login和azcopy copy的不是同一个shell会话/同一用户,会导致copy命令无法读取到有效令牌 - azcopy版本过低:v10.15以下版本的azcopy存在服务主体认证后令牌不生效的已知bug
- 存储账户网络限制:存储账户配置了防火墙规则,未放通当前运行azcopy的客户端公网IP,或未放通客户端所在的虚拟网络
解决方案
- 优先确认
azcopy login和azcopy copy在同一个shell窗口中执行,中间未切换用户、未清理环境变量 - 清空本地缓存并重新认证:
rm -rf ~/.azcopy/* export AZCOPY_SPA_CLIENT_SECRET="12345678" azcopy login --service-principal --application-id abc --tenant-id=xyz
重新执行copy命令验证
- 若缓存方式持续失效,可直接在copy命令中携带认证参数,跳过本地缓存依赖:
AZCOPY_SPA_CLIENT_SECRET="12345678" azcopy copy './myfile' 'https://mystorageacc.blob.core.windows.net/mycontainer/myfile' --service-principal --application-id abc --tenant-id=xyz
- 升级azcopy到最新稳定版:执行
azcopy --version查看当前版本,若版本低于v10.18.0,可替换为最新稳定版解决已知bug - 检查存储账户网络配置:登录Azure门户进入对应存储账户的「网络」设置页,确认客户端公网IP已加入允许访问的IP列表,若客户端为Azure内资源,确认所在虚拟网络已被放通
内容的提问来源于stack exchange,提问作者toto'
相关产品推荐
相关产品推荐

