如何从 Azure DevOps 管道向 Azure Key Vault 写入秘密?

How to write a secret to azure key vault from Azure DevOps pipeline?

我已经使用 ARM 在 Azure DevOps 中创建了一个 Key Vault,现在我想在同一个管道中向它写入一个秘密。

我使用以下内联 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 任务将机密写入保管库的样子:

Key Vault 权限:

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

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

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

单击 Azure Subscription 字段中的 Manage link,它将导航到一个新的 blade。单击那里的 Manage Service Principal。它将带你到 Azure AD 中的应用程序页面。之后,您可以在 Managed application in local directory 字段下复制名称并使用该名称授予它 Key Vault 权限。