Azure devops Azure DevOps管道变量组无法列出密钥库

Azure devops Azure DevOps管道变量组无法列出密钥库,azure-devops,azure-pipelines,azure-keyvault,Azure Devops,Azure Pipelines,Azure Keyvault,我有Azure DevOps管道变量组,它不能列出密钥库。然而,管道可以设置秘密。有什么不对劲吗 根本找不到密钥库: - Create Variable Group in Library of Azure DevOps - Select Service Principal as Subscription - No Key vault instance is listed in drop down 密钥保险库访问策略 - Application: Service Principal - Key

我有Azure DevOps管道变量组,它不能列出密钥库。然而,管道可以设置秘密。有什么不对劲吗

根本找不到密钥库:

- Create Variable Group in Library of Azure DevOps
- Select Service Principal as Subscription
- No Key vault instance is listed in drop down
密钥保险库访问策略

- Application: Service Principal
- Key Permission: List
- Secret Permission: Get, List, Set
管道中的工作代码:

$ConnectionString = az storage account show-connection-string -g $(resource-group) -n sa$(project- 
name)$(environment) -o "tsv"
$CurrentConnectionString = az keyvault secret show --name StorageAccountConnectionString --vault-name 
$(key-vault-name) --query value -o "tsv"
          if (!($ConnectionString -eq $CurrentConnectionString)) {
            az keyvault secret set -n StorageAccountConnectionString --vault-name $(key-vault-name) --value $ConnectionString -o none
          }
          else {
            write-host("Secret already in key vault!")
          }

据我所知,如果您为服务主体设置了
秘密权限:Get,List
,则它可以访问Azure Devops中的Azure密钥库

由于在下拉列表中看不到密钥库名称,因此可以尝试检查Azure服务连接

如果您正在使用
服务主体(手动)
创建服务连接,则需要确保服务主体位于正确的
Azure订阅下

另一方面,您可以使用以下Azure Powershell脚本创建新的服务主体

az account set --subscription <Azure-SubscriptionId>

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/SUBSCRIPTION_ID"

az账户集--subscription

我在答案中分享了一些疑难解答方法,你可以参考一下。如果不起作用,您可以检查UI页面上是否有任何错误消息,并共享
服务连接
连接方法(自动/手动)。我已将测试密钥库创建到同一资源组,并且我可以看到列出的此密钥库。我没有向服务主体添加任何访问策略。然后,我将测试密钥库创建到我的实际密钥库所在的不同资源组。我没有向服务主体添加任何访问策略。这一个没有被列出。我的用户对资源组的权限有问题吗?所有密钥保险库都位于同一个子系统中。您好@Kenny_I。您能帮助我们确定Azure Devops服务连接方法(自动或手动)吗?如果该方法是自动的,则它只能显示单个资源组的azure keyvault。另一方面,您可以尝试在azure订阅->访问控制(IAM)->角色分配中检查服务主体的角色。您可以将
读取器角色
授予服务主体。根据我的测试,在这种情况下,服务主体可以看到所有azure密钥保险库(手动服务连接)。您可以参考此文档:服务负责人需要对密钥Vault实例进行贡献访问