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

如何在Azure Pipeline中认证Azure Blob Storage以读写Blob

在Azure DevOps Pipeline中实现DefaultAzureCredential认证

核心思路

DefaultAzureCredential会自动按顺序尝试多种认证方式,在DevOps Pipeline环境中,最适配的是托管标识或通过服务连接传递服务主体凭据两种方案,无需修改原有Python测试代码,以下是具体实现步骤:

方案一:使用Pipeline托管标识(推荐)

  1. 启用代理池系统托管标识
    • 前往Azure门户,找到Pipeline代理对应的虚拟机/虚拟机规模集,在「标识」选项卡开启系统分配标识
    • 为该托管标识分配Blob存储的对应权限(如Storage Blob Data Contributor),权限范围与本地测试使用的安全组保持一致
  2. 配置Pipeline运行测试
    • 无需额外添加凭据配置,DefaultAzureCredential会自动触发ManagedIdentityCredential完成认证,直接执行测试即可
    • 示例YAML片段:
      steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.10'
      - script: |
          pip install -r requirements.txt
          pytest tests/
        displayName: '运行Python测试'
      

方案二:通过服务连接传递服务主体凭据

  1. 创建Azure资源管理器服务连接
    • 在Azure DevOps项目的「项目设置」→「服务连接」中,新建「Azure资源管理器」类型连接,选择「服务主体(自动)」模式完成创建
  2. 在Pipeline中注入凭据环境变量
    • 使用AzureCLI任务并开启「允许脚本访问OAuth令牌」,DefaultAzureCredential会自动读取任务注入的AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_TENANT_ID环境变量完成认证
    • 示例YAML片段:
      steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.10'
      - task: AzureCLI@2
        inputs:
          azureSubscription: '你的服务连接名称'
          scriptType: 'bash'
          scriptLocation: 'inlineScript'
          inlineScript: |
            pip install -r requirements.txt
            pytest tests/
          addSpnToEnvironment: true # 关键:将服务主体凭据注入环境变量
      
  3. 为服务主体分配Blob存储的对应权限,权限范围与本地测试一致

注意事项

  • 两种方案均无需修改原有Python代码中的DefaultAzureCredential逻辑,它会自动适配运行环境
  • 务必确保托管标识/服务主体的权限与本地测试使用的安全组权限匹配,避免出现权限不足的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:23:20