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

如何在Azure DevOps Pipeline中对PythonScript任务进行身份验证

Azure DevOps流水线Python脚本DefaultAzureCredential认证配置方案

1. 环境变量方式安全传递认证参数

Azure DevOps的机密变量出于安全考虑,默认不会自动注入到任务的运行环境中,需要你手动在任务的env字段做显式映射,操作步骤如下:

  • 先把客户端ID、租户ID、客户端密钥3个参数存入流水线变量或者变量组,其中客户端密钥需设置为机密变量
  • 在PythonScript任务的env字段,将3个变量映射为DefaultAzureCredential预设读取的环境变量名,YAML示例如下:
- task: PythonScript@0
  inputs:
    scriptPath: './get_azure_resources.py' # 替换为你的脚本路径
  env:
    # 变量名必须严格对应DefaultAzureCredential识别的环境变量名
    AZURE_CLIENT_ID: $(az_client_id) # 替换为你存客户端ID的变量名
    AZURE_TENANT_ID: $(az_tenant_id) # 替换为你存租户ID的变量名
    AZURE_CLIENT_SECRET: $(az_client_secret) # 替换为你存客户端密钥的机密变量名

配置完成后,DefaultAzureCredential运行时会自动读取这三个环境变量完成身份验证,机密变量的内容不会输出到流水线日志。

2. 托管身份方式指定目标身份

根据你使用的托管身份类型和代理类型,有两种常见配置方案:

2.1 使用自托管代理绑定的托管身份

如果你的流水线运行在部署于Azure的自托管代理(如VM、VMSS、ACI)上,已经给代理所在的Azure资源分配了托管身份:

  • 如果是系统分配托管身份:无需额外配置,DefaultAzureCredential会自动调用Azure实例元数据服务获取身份凭证完成认证
  • 如果是用户分配托管身份:在初始化DefaultAzureCredential时传入对应托管身份的客户端ID参数即可,Python代码示例:
from azure.identity import DefaultAzureCredential
from azure.mgmt.managementgroups import ManagementGroupsAPI
from azure.mgmt.resource import SubscriptionClient

# 传入用户分配托管身份的客户端ID即可指定使用的身份
cred = DefaultAzureCredential(managed_identity_client_id="你的用户分配托管身份客户端ID")

# 后续正常调用Azure API即可
subscription_client = SubscriptionClient(cred)
sub_list = subscription_client.subscriptions.list()

2.2 使用服务连接绑定的托管身份

如果你使用微软托管代理,可以先创建绑定了托管身份的Azure资源管理器服务连接,运行Python脚本前先调用Azure CLI任务获取访问令牌,或者直接将托管身份的客户端ID存入流水线变量,按上述用户分配托管身份的方式传入代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:54:08