0

我有一个 Azure DevOps 并尝试使用服务原则连接到 Azure Key Vault。

我在 Azure KeyVault 的访问策略中添加了服务原则,其 Secret 权限为“获取 & 列出”

但是当我为变量组添加一个库时,我收到了这个我已经完成的错误消息。

不确定我是否缺少任何设置。

Specified Azure service connection needs to have "Get, List" secret management permissions on the selected key vault. Set these secret permissions in Azure portal or run the following commands in powershell window.


$ErrorActionPreference="Stop";Login-AzureRmAccount -SubscriptionId XXXXXXXXXXXXXXXX;$spn=(Get-AzureRmADServicePrincipal -SPN YYYYYYYYYYYYYYYYYYYYYY);$spnObjectId=$spn.Id;Set-AzureRmKeyVaultAccessPolicy -VaultName keyvault -ObjectId $spnObjectId -PermissionsToSecrets get,list;
4

2 回答 2

0

确保在 Key Vault 的访问策略上选择的原则与在 Azure DevOps 上创建服务连接时的原则相同。确保名称和 ID 相同。

如果有两个或多个原理具有相似或几乎相同的名称,您可能会混淆它们。这可能会导致您在设置 Key Vault 的访问策略时选择了一个原则,而在 Azure DevOps 上创建服务连接时选择了另一个原则。

在 Azure 门户上,您可以导航到Azure Active Directory >应用注册,检查名称中是否有一些前缀相同但后缀不同的原则。

例如: 在此处输入图像描述

在此页面中,找到并单击您要使用的原理,复制其“ Application (client) ID”。

Application (client) ID然后进入 Key Vault 的访问策略,添加原理时,通过您复制的“ ”搜索您要使用的原理。

在 Azure DevOps 上创建服务连接时,Application (client) ID将上面复制的“”粘贴到Service Principal Id字段中。

这样可以保证原理一致。

[更新]

请尝试如下步骤:

  1. 在本地计算机的 PowerShell 上,按照文章“使用 Azure PowerShell 创建 Azure 服务主体”在门户上的指定租户中创建服务主体。

  2. 在 Azure 门户上,找到您在上面创建的服务主体,复制其Application (client) IDClient secrets(如果没有,则创建一个)。

  3. 前往设置 Key Vault 的访问策略,通过其搜索并添加您在上面创建的服务原则Application (client) ID,并确保您已授予其“获取 & 列出”权限。

  4. 在 Azure DevOps 上,创建Azure 资源管理器服务连接并选择“ Service principal (manual)”方法。确保 与您在上面创建的服务主体的Service Principal Id相同,并且存在于该服务主体上。 Application (client) IDService principal key在此处输入图像描述

于 2020-12-04T03:30:15.650 回答
0

我猜如果是缺少权限的 DevOps 服务连接。您可以从控制台检查保管库的访问策略。

您应该将您的服务连接视为一个应用程序;它需要 GET 和 LIST 权限,正如您的以下文件所述。您可以通过导航到 keyvault 下的访问策略来设置它

于 2020-12-03T14:41:58.033 回答