如何在不使用Service Connection的情况下从Azure Pipeline连接Azure订阅
Azure Pipeline 无服务连接登录Azure订阅可行方案
核心思路为复用你本地可正常完成认证的身份凭证,无需新建服务主体即可在Pipeline非交互环境完成登录。
方案1:个人Azure AD账密认证(仅支持未开启MFA的账号)
如果你的Azure登录账号没有启用多因素认证,可直接将账密存为Pipeline秘密变量完成认证:
- 在Pipeline的变量配置页,新增两个秘密变量:
AZURE_USER(你的Azure登录邮箱)、AZURE_PWD(你的Azure登录密码),务必勾选「保密」选项,避免变量明文泄露。 - 在Pipeline任务中直接调用对应认证命令即可:
Az CLI 认证示例
az login -u $(AZURE_USER) -p $(AZURE_PWD) # 登录完成后切换到目标订阅 az account set --subscription "你的订阅ID/订阅名称"
Az PowerShell 认证示例
$securePwd = ConvertTo-SecureString $(AZURE_PWD) -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($(AZURE_USER), $securePwd) Connect-AzAccount -Credential $credential -Subscription "你的订阅ID/订阅名称"
方案2:复用本地已认证上下文(支持开启MFA的账号)
如果你的账号开启了MFA无法使用账密登录,可直接导出本地已经登录成功的Azure身份上下文,传入Pipeline使用:
操作步骤
- 在你本地可正常登录Azure的PowerShell环境,执行导出命令:
导出Az PowerShell上下文
# 确保本地已经登录目标Azure订阅后执行 Save-AzContext -Path .\AzContext.json导出Az CLI刷新令牌
# 本地执行后复制输出的刷新令牌 az account get-access-token --query "refreshToken" -o tsv - 进入Azure Pipeline配置页:
- 如果用Az PowerShell:进入「库」-「安全文件」,上传导出的
AzContext.json,开启保密属性。 - 如果用Az CLI:新增秘密变量
AZURE_REFRESH_TOKEN,粘贴刚才导出的刷新令牌,勾选保密。
- 如果用Az PowerShell:进入「库」-「安全文件」,上传导出的
- 在Pipeline中调用认证命令:
Az PowerShell 认证示例
先添加「下载安全文件」任务下载上传的AzContext.json,再执行:Import-AzContext -Path $(DownloadSecureFile.SecureFilePath) # 验证当前登录的订阅是否正确 Get-AzSubscriptionAz CLI 认证示例
az login --refresh-token $(AZURE_REFRESH_TOKEN) # 切换到目标订阅 az account set --subscription "你的订阅ID/订阅名称"
注意事项
- 所有凭证类信息(密码、刷新令牌、上下文文件)必须存储为Pipeline的秘密变量或保密安全文件,禁止直接写入YAML配置,避免身份泄露。
- 该方案使用的是你的个人身份权限,操作审计会记录为你的账号,请勿执行超出权限范围的操作。
- 刷新令牌默认有效期为90天,上下文身份也会随账号密码变更、登出操作失效,失效后重新从本地导出更新即可。
- 待负责服务主体的团队成员可用后,建议切换为官方服务连接方案,个人身份的稳定性、安全性均低于专用服务主体。
内容的提问来源于stack exchange,提问作者hitman126
相关产品推荐
相关产品推荐

