在 Azure Pipeline 中检索管道服务主体的客户端 ID
Retrieve client id for pipeline service principal in Azure Pipeline
在我的 Azure Pipeline (YAML) 中,我正在部署一个 ARM 模板来创建密钥保管库(以及其他资源),然后 运行 一个 PowerShell 脚本来生成证书并将其存储在密钥保管库中.这给了我一个 Forbidden
错误。在 Use secrets from Azure Key Vault in Azure Pipelines 中,Microsoft 建议我需要为管道服务主体在密钥保管库上创建访问策略。当我这样做时,脚本成功。
图片来自cache404
我现在想以编程方式创建此访问策略作为 ARM 模板的一部分,但我不知道如何以编程方式在管道内检索管道服务主体的对象 ID。有人可以帮忙吗?
I would now like to create this access policy programmatically as part
of the ARM template, but I don't know how to retrieve the object id
for the pipeline service principal programmatically within the
pipeline.
如果要在ARM模板中自动获取服务主体对象ID,恐怕这是不可能的。
您可以尝试创建一个脚本(Get-AzADServicePrincipal
)来获取服务主体并将其传递给arm模板。
这里是有类似问题的可以参考
虽然 Hugh Lin 的回答是有效的,但我发现更简单地改编 Nick Graham's answer 作为 PowerShell 脚本本身的一部分授予对管道服务主体的密钥保管库访问权限:
$Context = Get-AzContext
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -ServicePrincipalName $Context.Account.Id -PermissionsToCertificates Get,List,Create
在我的 Azure Pipeline (YAML) 中,我正在部署一个 ARM 模板来创建密钥保管库(以及其他资源),然后 运行 一个 PowerShell 脚本来生成证书并将其存储在密钥保管库中.这给了我一个 Forbidden
错误。在 Use secrets from Azure Key Vault in Azure Pipelines 中,Microsoft 建议我需要为管道服务主体在密钥保管库上创建访问策略。当我这样做时,脚本成功。
我现在想以编程方式创建此访问策略作为 ARM 模板的一部分,但我不知道如何以编程方式在管道内检索管道服务主体的对象 ID。有人可以帮忙吗?
I would now like to create this access policy programmatically as part of the ARM template, but I don't know how to retrieve the object id for the pipeline service principal programmatically within the pipeline.
如果要在ARM模板中自动获取服务主体对象ID,恐怕这是不可能的。
您可以尝试创建一个脚本(Get-AzADServicePrincipal
)来获取服务主体并将其传递给arm模板。
这里是
虽然 Hugh Lin 的回答是有效的,但我发现更简单地改编 Nick Graham's answer 作为 PowerShell 脚本本身的一部分授予对管道服务主体的密钥保管库访问权限:
$Context = Get-AzContext
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -ServicePrincipalName $Context.Account.Id -PermissionsToCertificates Get,List,Create