如何在部署脚本中使用启用MFA的用户登录Azure?
解决MFA启用后Jenkins中AZ CLI无交互登录问题
针对启用MFA后无法用用户名密码登录的问题,推荐以下几种适合Jenkins自动化场景的AZ CLI登录方式:
服务主体登录(最常用的自动化方案)
- 先创建一个服务主体并分配权限:
执行后会返回az ad sp create-for-rbac --name <你的服务主体名称> --role <所需权限角色,比如Contributor> --scopes /subscriptions/<你的订阅ID>appId、password、tenantId三个关键信息,务必妥善保存。 - 在Jenkins脚本中用服务主体登录:
注意:密码不要硬编码在脚本里,建议存在Jenkins的凭据管理系统中,通过变量引用。az login --service-principal -u <刚才的appId> -p <刚才的password> --tenant <刚才的tenantId> az account set --subscription <你的订阅ID>
- 先创建一个服务主体并分配权限:
Azure托管标识登录(最安全的无凭据方案)
如果你的Jenkins部署在Azure的VM、VMSS或者App Service上,可以用托管标识实现免密登录:- 给Jenkins所在的Azure资源启用系统分配或用户分配的托管标识
- 给这个托管标识分配对应Azure订阅或资源的权限
- 脚本里直接用标识登录,无需任何凭据:
az login --identity az account set --subscription <你的订阅ID>
设备代码登录(仅临时调试用)
这种方式需要手动交互完成MFA验证,不适合长期自动化脚本,仅用于临时测试:az login --use-device-code执行后会给出一个链接和验证码,打开链接输入验证码完成验证后,当前会话即可正常执行后续命令,但重启Jenkins后需要重新操作。
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

