Azure DevOps 管道变量组无法列出 Key Vault

Azure DevOps pipeline variable group cannot list Key Vault

我有 Azure DevOps 管道变量组,它无法列出 Key Vault。但是管道可以设置秘密。有什么问题吗?

根本找不到密钥保管库:

- 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!")
          }

据我所知,如果您为服务主体设置了 Secret Permission: Get, List,它就可以访问 Azure Devops 中的 Azure Key Vault。

由于您在下拉列表中看不到 Key Vault 名称,您可以尝试检查 Azure 服务连接。

如果您使用Service principal (manual)创建服务连接,您需要确保服务主体在正确的Azure Subscription下。

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

az account set --subscription <Azure-SubscriptionId>

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

然后您可以为新的服务主体设置 Key vault 权限,并在 Azure Devops 服务连接中使用它。

您也可以尝试使用 Service principal (automatic) Azure Devops 服务连接并检查它是否可以看到密钥库。