Azure Pipelines:使用工作负载身份联合登录

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

在我的 CI 管道中,我需要登录到 azure key Vault 以检查处理密钥的代码是否正常工作。

我创建了一个名为

my_workload_identity
的工作负载身份,并为其授予
reader
- 对密钥保管库的访问权限。但我不知道如何使用它。

我尝试过的事情:

我找到了一种可能的方法这里

az login --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID

这似乎得到了一个令牌,但是当在

AzureCLI@2

中使用时
- task: AzureCLI@2
  displayName: 'az login'
  inputs:
    azureSubscription: 'my_workload_identity'
    scriptType: bash
    scriptLocation: 'inlineScript'
    inlineScript: |
      az login --debug --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID
    addSpnToEnvironment: true

它永远挂着。后来我发现它无论如何都会通过运行

az account clear
来删除令牌。

然后我尝试在

bash
-任务中运行它:

- bash: |
      az login --debug --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID

这也永远挂起,甚至似乎没有拿回令牌。

在 Azure Pipelines 中使用工作负载身份联合进行身份验证的正确方法是什么?

azure-pipelines workload-identity
1个回答
0
投票

尝试从 Azure DevOps 中的管道访问 Azure 资源时,建议在 Azure DevOps 中创建并使用 Azure 资源管理器服务连接(ARM 服务连接)。

要创建具有工作负载身份联合的 ARM 服务连接,您可以按照以下步骤操作:

  1. 在管道所在的 Azure DevOps 项目中,转到“项目设置”>“服务连接”以创建新的 ARM 服务连接。

  2. 选择“Azure 资源管理器”> 如果您有服务主体,则选择“工作负载身份联合(手动)”。为服务连接指定一个自定义名称以完成步骤 1。点击“下一步”打开第2步

  3. 在浏览器的新选项卡/窗口中打开 Azure 门户。转到“

    Microsoft Entra ID”>“应用程序注册”,找到并打开服务主体。转到“证书和机密”>“联合凭据”选项卡添加新凭据。

  4. 填写新凭证上所需的信息。

    • 联合凭证场景: Other issuer
    • 发行人:从新服务连接窗口上的步骤2复制。
    • 主题标识符:从新服务连接窗口上的步骤 2复制。
    • 名称:新凭证的自定义名称。

  5. 返回新服务连接窗口完成

    步骤2

完成上述步骤后,在管道中,您可以在

AzureCLI@2

AzurePowerShell@5
和其他Azure相关任务上使用此ARM服务连接来连接到Azure。

有关更多详细信息,您还可以参考文档“

使用 Azure 资源管理器服务连接连接到 Azure”。


© www.soinside.com 2019 - 2024. All rights reserved.