在我的 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 DevOps 中的管道访问 Azure 资源时,建议在 Azure DevOps 中创建并使用 Azure 资源管理器服务连接(ARM 服务连接)。
要创建具有工作负载身份联合的 ARM 服务连接,您可以按照以下步骤操作:
在管道所在的 Azure DevOps 项目中,转到“项目设置”>“服务连接”以创建新的 ARM 服务连接。
选择“Azure 资源管理器”> 如果您有服务主体,则选择“工作负载身份联合(手动)”。为服务连接指定一个自定义名称以完成步骤 1。点击“下一步”打开第2步。
Microsoft Entra ID”>“应用程序注册”,找到并打开服务主体。转到“证书和机密”>“联合凭据”选项卡添加新凭据。
Other issuer
步骤2。
AzurePowerShell@5
和其他Azure相关任务上使用此ARM服务连接来连接到Azure。
有关更多详细信息,您还可以参考文档“