You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines中使用工作负载身份联合实现全局认证的正确方式

在Azure Pipelines中使用工作负载身份联合认证的正确方式

问题根源分析

你之前的尝试出现挂起、令牌失效问题,核心原因在于:AzureCLI@2任务本身会自动处理工作负载身份的认证流程,手动执行az login会和任务内置逻辑冲突;单独bash任务未正确配置环境依赖,导致无法获取有效联合令牌。

正确实现方案

要让所有后续任务复用工作负载身份的认证上下文,需通过管道变量传递认证信息或全局配置CLI上下文两种方式实现:

方案1:跨任务传递认证信息(适用于托管/自托管代理)

通过AzureCLI@2完成初始认证,将核心认证参数导出为管道变量,供后续任务直接复用:

- task: AzureCLI@2
  displayName: '初始化工作负载身份认证'
  inputs:
    azureSubscription: 'my_workload_identity' # 选择已配置的工作负载身份服务连接
    scriptType: bash
    inlineScript: |
      # 导出访问令牌与订阅ID为管道变量
      echo "##vso[task.setvariable variable=AZURE_ACCESS_TOKEN]$(az account get-access-token --output tsv --query accessToken)"
      echo "##vso[task.setvariable variable=AZURE_SUBSCRIPTION_ID]$(az account show --output tsv --query id)"
    addSpnToEnvironment: true

# 后续任务直接复用认证变量
- bash: |
    # 配置Azure CLI使用已有认证
    export AZURE_ACCESS_TOKEN=$(AZURE_ACCESS_TOKEN)
    export AZURE_SUBSCRIPTION_ID=$(AZURE_SUBSCRIPTION_ID)
    export AZURE_TENANT_ID=$(AZURE_TENANT_ID)
    
    # 验证Key Vault访问
    az keyvault secret list --vault-name your-keyvault-name
  displayName: '验证Key Vault权限'

方案2:全局配置CLI上下文(仅适用于自托管代理)

自托管代理环境持久化,可直接登录并保存CLI上下文,后续任务自动读取:

- bash: |
    # 使用工作负载身份登录并设置默认订阅
    az login --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $(AZURE_CLIENT_ID) -t $(AZURE_TENANT_ID)
    az account set --subscription your-subscription-id
    
    # 验证登录有效性
    az account show
  displayName: '全局登录工作负载身份'
  env:
    AZURE_CLIENT_ID: $(AZURE_CLIENT_ID)
    AZURE_TENANT_ID: $(AZURE_TENANT_ID)

关键注意事项

  • 禁止在AzureCLI@2任务内手动执行az login:该任务会自动通过指定的服务连接完成认证,手动登录会触发内置逻辑冲突,导致任务挂起或令牌被清除。
  • 管道变量传递限制:addSpnToEnvironment: true仅在当前AzureCLI@2任务生效,必须通过##vso[task.setvariable]将令牌等核心信息转为全局管道变量,才能跨任务复用。
  • 权限与信任验证:确认工作负载身份已被授予Key Vault的对应权限(如Key Vault Secrets Reader),且Azure AD已配置好与Azure Pipelines的联合身份信任关系。

内容的提问来源于stack exchange,提问作者kiesel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:50:19