Azure CLI 在 Azure Pipeline 中获取当前服务主体详细信息

Azure CLI Get Current Service Principal Details in Azure Pipeline

我使用 Azure CLI 任务设置了 Azure Pipeline 我正在使用服务连接。在 az cli 任务中,我想检索我用于 运行 此任务的当前服务连接详细信息(如 appId 名称 objectId 等)。

az ad sp show 需要 id 参数,这在我的情况下不起作用。我想动态知道那个id

有没有办法获取当前 SP 详细信息?

您可以通过

获取当前会话上下文
az account show 

然后简单地获取有关服务主体的一些额外详细信息

az ad sp show --id <guid>

和申请

az ad app show --id <guid>

我发现服务原理在 Azure Active Directory 中。而且我无法将它们添加到 azure devops 服务连接。我可以添加的是 Azure subscriptionazure resource group。 不确定您是如何将应用程序添加到 Azure 服务连接的。

如果您想获取连接详细信息。您可以尝试 az accout show azure 订阅 ,或 az group show --name azure 资源组

您现在可以使用复选框在 Azure CLI 脚本中公开服务主体 ID、机密和租户。

将 Adam Marczak 的解决方案与 python 结合在一个班轮中,

az ad sp show --id $(az account show| python -c 'import json,sys;print json.load(sys.stdin)["user"]["name"]')

运行 进入同样的问题,并找到了在管道中的 Azure Cli 任务中获取 SP Id 的最简单方法:

首先,在任务中定义 addSpnToEnvironment 如下:

- task: AzureCLI@2
  continueOnError: true
  inputs:
    addSpnToEnvironment: true
    scriptLocation: inlineScript

之后,您可以从 $env:servicePrincipalId 获取 SP Id 并像这样使用它:

az deployment group create ... --parameters SPId=$env:servicePrincipalId