如何从Azure DevOps管道向Azure密钥库写入机密?

时间:2018-10-20 22:22:50

标签: azure powershell azure-devops azure-keyvault

我已经使用ARM在Azure DevOps中创建了一个密钥保管库,现在我想在同一管道中为其写入密钥。

我使用以下嵌入式PowerShell创建了Azure PowerShell任务:

$secretvalue = ConvertTo-SecureString $(Secret) -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $(VaultName) -Name $(SecretName) -SecretValue (ConvertTo-SecureString $(Secret) -AsPlainText -Force)

密钥库创建得很好,但是在尝试写入机密时出现以下错误:

[error]Access denied

如果我在本地计算机上运行Set-AzureKeyVaultSecret,则运行正常。

编辑

这是我所做的一些屏幕截图。在Azure DevOps中,我创建了服务连接并进行了验证:

enter image description here

这是我的Azure PowerShell任务将机密写入保管库的样子:

enter image description here

enter image description here

enter image description here

关键保管库权限:

enter image description here

enter image description here

我需要单独的服务主体还是需要创建应用注册?

2 个答案:

答案 0 :(得分:1)

检查与ARM的服务连接的权限以及保管库中的权限。检查步骤在这里:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-key-vault?view=vsts

答案 1 :(得分:1)

很确定您将权限授予了错误的实体。要找到合适的实体,请执行此操作。

单击SELECT Count(user_id) AS total_users, Count(group_id) AS total_groups FROM ( SELECT user_id, group_id FROM tblpacks WHERE Yes=No UNION SELECT user_id, Null FROM tblpacks WHERE quota_id=1 UNION SELECT Null, group_id FROM tblpacks WHERE quota_id=1 ) AS qsub; 字段中的Manage链接,它将导航您到新刀片。在此处单击Azure Subscription。它将带您到Azure AD中的应用程序页面。之后,您可以在Manage Service Principal字段下复制名称,并使用该名称向其授予Key Vault权限。