Azure DevOps -> Pipelines -> Library -> Access Azure Key Vault -> Key Vault 不允许从所有网络访问

Ogg*_*las 5 azure azure-keyvault azure-devops

我们已经通过服务连接(服务主体身份验证)在 Azure DevOps 和 Azure Key Vault 之间建立了连接。但是,为了使其工作,我们需要将Azure Key Vault->Networking标记为 Allow access from: All networks。鉴于我们在这里存储机密,我们希望使用该选项Private endpoint and selected networks而不是Allow trusted Microsoft services to bypass this firewall?set to Yes

像这样:

在此处输入图片说明

但是,这会导致 Azure DevOps -> Pipelines -> Library 上的错误:

指定的 Azure 服务连接需要对所选密钥保管库具有“获取、列出”机密管理权限。单击“授权”以启用 Azure Pipelines 在 Azure 门户中设置这些权限或管理机密权限。

在此处输入图片说明

如果我们All networks为 Azure Key Vault设置 Allow access from:它可以像前面提到的那样工作,但我们希望尽可能避免这种情况。

在此处输入图片说明

在管道中设置 Azure Key Vault 任务

在此处输入图片说明

或者设置一个变量组然后切换回Private endpoint and selected networks导致部署时出现类似的错误。

在此处输入图片说明

MyKey:“客户端地址未授权且调用方不是受信任的服务。\r\n客户端地址:111.222.333.44\r\n调用方:appid= ;oid=00000000-0000-0000-0000-000000000000;iss= https:/ /sts.windows.net/ /\r\nVault: My-Vault;location=northeurope。指定的 Azure 服务连接需要对选定的 Key Vault 具有获取、列出机密管理权限。要设置这些权限,请下载 ProvisionKeyVaultPermissions。 ps1 脚本从构建/发布日志并执行它,或从 Azure 门户设置它们。”

在此处输入图片说明

客户端地址是不幸的是每一个新的预期,但时间oidiss价值观是相同的。根据文档只能IPv4 address or CIDR添加到防火墙。有没有办法将 Azure 代理标记为受信任的 Microsoft 服务,或者这是一种不好的做法?看起来确实比All networks不过更安全。

小智 4

这仍然是一个悬而未决的问题 - Issue

可能有些解决方案如 URL 中提到的

  • 在管道中添加一个任务并将代理的 IP 列入白名单,然后在获得 keyvault 中的值后删除白名单。

  • 白名单 Azure DevOps IP 列表可能每周一次,但这似乎不可靠

  • @Grand建议的实际上也是解决方案之一。