【问题标题】:Retrieve client id for pipeline service principal in Azure Pipeline在 Azure Pipeline 中检索管道服务主体的客户端 ID
【发布时间】:2020-10-05 16:13:14
【问题描述】:

在我的 Azure 管道 (YAML) 中,我正在部署一个 ARM 模板来创建密钥库(以及其他资源),然后运行 ​​PowerShell 脚本来生成证书并将其存储在密钥库中。这给了我一个Forbidden 错误。在Use secrets from Azure Key Vault in Azure Pipelines 中,Microsoft 建议我需要在密钥保管库上为管道服务主体创建访问策略。当我这样做时,脚本会成功。

图片来自cache404

我现在想以编程方式创建此访问策略作为 ARM 模板的一部分,但我不知道如何以编程方式在管道中检索管道服务主体的对象 ID。有人可以帮忙吗?

【问题讨论】:

    标签: azure azure-devops azure-yaml-pipelines


    【解决方案1】:

    虽然 Hugh Lin 的回答是有效的,但我发现将 Nick Graham's answer 作为 PowerShell 脚本本身的一部分授予对管道服务主体的密钥保管库访问权限更简单:

    $Context = Get-AzContext
    Set-AzKeyVaultAccessPolicy -VaultName $vaultName -ServicePrincipalName $Context.Account.Id -PermissionsToCertificates Get,List,Create
    

    【讨论】:

    • 感谢您在这里分享您的解决方案,请您接受您的解决方案as the answer?因此,对于遇到相同问题的其他成员轻松找到解决方案将很有帮助。祝你有美好的一天:)
    • 感谢@HughLin-MSFT;你也一样!
    【解决方案2】:

    我现在想以编程方式创建此访问策略作为一部分 的 ARM 模板,但我不知道如何检索对象 id 对于管道服务主体以编程方式在 管道。

    如果要在ARM模板中自动获取服务主体对象ID,恐怕这是不可能的。

    您可以尝试创建一个脚本(Get-AzADServicePrincipal)来获取服务主体并将其传递给 arm 模板。

    这里有类似问题的ticket,你可以参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      相关资源
      最近更新 更多