如何在Azure DevOps Pipeline中使用服务主体运行Azure PowerShell任务
Azure DevOps Pipeline使用服务主体认证方案说明
你提到的Azure PowerShell任务订阅选择界面如下:
两种你提到的认证方式都可行,具体实现方法如下:
方案1(官方推荐):通过服务主体创建Service Connection使用
这是最安全、易用的实现方式,无需手动编写登录代码,敏感信息不会暴露在脚本中:
- 进入Azure DevOps对应项目的「项目设置」-「服务连接」,点击「新建服务连接」
- 选择连接类型为「Azure Resource Manager」,认证方式选择「服务主体(手动)」
- 按提示填入你预先准备的Application ID、Tenant ID、App Secret、Subscription ID,完成验证后保存服务连接
- 后续使用Azure PowerShell任务时,直接在下拉菜单选中该服务连接即可,任务会自动完成Azure资源的访问认证
方案2:在PowerShell任务中手动执行认证操作
如果不想创建服务连接,也可以直接通过代码完成登录,注意所有敏感值必须存入Pipeline的保密变量,禁止明文书写:
使用Az PowerShell模块认证代码:
$secret = ConvertTo-SecureString $env:APP_SECRET -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($env:APP_ID, $secret) Connect-AzAccount -ServicePrincipal -Credential $credential -Tenant $env:TENANT_ID -Subscription $env:SUBSCRIPTION_ID
使用Azure CLI az login认证代码:
az login --service-principal -u $env:APP_ID -p $env:APP_SECRET --tenant $env:TENANT_ID az account set --subscription $env:SUBSCRIPTION_ID
注意事项
- 优先选择方案1,Azure DevOps会自动管理服务主体的认证生命周期,无需手动处理令牌过期、敏感信息泄露风险
- 使用方案2时,必须将Application ID、Tenant ID、App Secret、Subscription ID都存入Pipeline变量,且App Secret必须勾选「保密」选项,避免敏感信息泄露
内容的提问来源于stack exchange,提问作者Ajay Meda
相关产品推荐
相关产品推荐

