使用工作负载身份联合连接 Azure 存储帐户

问题描述 投票:0回答:1

从 Azure DevOps 管道中,我需要登录到 AZCOPY,然后将一些文件从 DevOps 工作目录复制到 Azure 存储帐户。

创建服务连接(自动、工作负载身份联合)。作为服务连接的一部分创建的应用程序注册,在存储帐户中赋予了存储 Blob 数据贡献者角色。

使用以下代码执行 AZCOPY 登录,但失败并出现错误,

trigger:
  batch: false
  branches:
    include:
      - dev

pool:
  vmImage: ubuntu-latest

steps:
  - task: AzureCLI@2
    inputs:
      addSpnToEnvironment: true
      azureSubscription: 'DevOps_connect'
      scriptType: bash
      scriptLocation: inlineScript
      inlineScript: |
        # Inherit Azure CLI service connection
        export ARM_CLIENT_ID=$servicePrincipalId
        export ARM_OIDC_TOKEN=$idToken
        export ARM_TENANT_ID=$tenantId

        echo "ARM_CLIENT_ID: $ARM_CLIENT_ID"
        echo "ARM_OIDC_TOKEN: $ARM_OIDC_TOKEN"
        echo "ARM_TENANT_ID: $ARM_TENANT_ID"
     
        azcopy login --identity

执行登录命令失败: ManagedIdentityCredential:无法验证系统分配的身份。端点响应 {"error":"invalid_request","error_description":"找不到身份"}

为什么失败,我缺少任何设置或环境变量吗?我在 DevOps 中使用管道代理。

azure-devops azure-pipelines azure-managed-identity azure-storage-account workload-identity
1个回答
0
投票

考虑使用

AZCOPY_AUTO_LOGIN_TYPE
环境变量,它提供了在不使用
azcopy login
命令的情况下进行授权的能力:

steps:
  - task: AzureCLI@2
    inputs:
      addSpnToEnvironment: true
      azureSubscription: 'DevOps_connect'
      scriptType: bash
      scriptLocation: inlineScript
      inlineScript: |
        # ...
    env:
      AZCOPY_AUTO_LOGIN_TYPE: AZCLI
      # other environment variables

参见:

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.