如何在脚本中无需显式输入密码登录Azure?
无需显式凭证登录Azure容器注册表(ACR)的方法
以下几种方式可以避免在脚本中明文存储密码,实现安全登录ACR并推送镜像:
1. 使用Azure CLI的az acr login命令
前提是你已通过Azure CLI完成身份验证(本地执行过az login,或在Azure托管环境中自动完成认证),执行该命令会自动配置Docker的认证信息,无需输入密码:
az acr login --name <你的ACR名称>
完成后即可正常推送镜像:
docker tag local-image:tag your-acr-name.azurecr.io/local-image:tag docker push your-acr-name.azurecr.io/local-image:tag
2. 利用托管标识(Managed Identity)
如果脚本运行在Azure托管资源(VM、Azure Functions、App Service等)上,可通过托管标识实现无凭证登录:
- 给目标资源启用系统分配/用户分配的托管标识
- 在ACR的IAM权限管理中,给该托管标识分配
AcrPush角色 - 执行登录命令:
az login --identity az acr login --name <你的ACR名称>
全程无需输入任何凭证,即可完成镜像推送。
3. 使用Azure AD令牌登录Docker
通过Azure CLI获取ACR的临时访问令牌,用令牌作为密码登录Docker,避免明文密码:
# 获取ACR访问令牌 TOKEN=$(az acr login --name <你的ACR名称> --expose-token --output tsv --query accessToken) # 用令牌登录Docker,用户名固定为占位符 docker login your-acr-name.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password $TOKEN
令牌有效期为1小时,到期后重新获取即可。
4. AKS集群与ACR直接关联
若在AKS集群中推送/拉取镜像,可将AKS与ACR直接关联,集群会自动获得ACR访问权限:
az aks update -n <AKS集群名> -g <资源组名> --attach-acr <你的ACR名称>
关联后,集群内的操作无需手动登录ACR,直接推送镜像即可。
内容的提问来源于stack exchange,提问作者Oleksandr Novik
相关产品推荐
相关产品推荐

