【问题标题】:Azure CLI Get Current Service Principal Details in Azure PipelineAzure CLI 在 Azure Pipeline 中获取当前服务主体详细信息
【发布时间】:2020-01-21 16:52:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: azure azure-devops azure-pipelines azure-cli


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以使用

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

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

      az ad sp show --id <guid>
      

      和应用

      az ad app show --id <guid>
      

      【讨论】:

      • 我想知道动态运行管道任务的 sp id。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        遇到了同样的问题,并找到了在管道中的 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
        

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 您可以使用 --query 更轻松地完成第二部分;)az account show --query "user.name" -o tsv
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-11
          相关资源
          最近更新 更多