我已经使用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中,我创建了服务连接并进行了验证:
这是我的Azure PowerShell任务将机密写入保管库的样子:
关键保管库权限:
我需要单独的服务主体还是需要创建应用注册?
答案 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权限。