Azure DevOps -> Pipelines -> Library -> 访问 Azure Key Vault -> Key Vault 不允许从所有网络访问
Posted
技术标签:
【中文标题】Azure DevOps -> Pipelines -> Library -> 访问 Azure Key Vault -> Key Vault 不允许从所有网络访问【英文标题】:Azure DevOps -> Pipelines -> Library -> Access Azure Key Vault -> Key Vault not allowing access from all networks 【发布时间】:2020-08-08 05:17:18 【问题描述】:我们已通过服务连接(服务主体身份验证)在 Azure DevOps 和 Azure Key Vault 之间建立连接。然而,为了让它工作,我们需要将Azure Key Vault
-> Networking
标记为允许访问:All networks
。鉴于我们在此处存储机密信息,我们希望使用选项Private endpoint and selected networks
而不是将Allow trusted Microsoft services to bypass this firewall?
设置为Yes
。
像这样:
但是这会导致 Azure DevOps -> Pipelines -> Library 出现错误:
指定的Azure服务连接需要有“Get, List” 选定密钥保管库的秘密管理权限。点击 “授权”以启用 Azure Pipelines 设置这些权限或 在 Azure 门户中管理机密权限。
如果我们为 Azure Key Vault 设置 Allow access from: All networks
,它的工作原理如前所述,但我们希望尽可能避免这种情况。
在管道中设置 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\n保险柜: 我的避难所;位置=northeurope。指定的 Azure 服务连接 需要对选中的有Get、List秘密管理权限 密钥库。要设置这些权限,请下载 来自构建/发布日志的 ProvisionKeyVaultPermissions.ps1 脚本和 执行它,或从 Azure 门户设置它们。”
不幸的是,客户端地址每次都是新的,但 oid
和 iss
值是相同的。根据文档,只有IPv4 address or CIDR
可以添加到防火墙。有没有办法将 Azure 代理标记为受信任的 Microsoft 服务,或者这是一种不好的做法?不过,它看起来确实比 All networks
更安全。
【问题讨论】:
【参考方案1】:这仍然是一个悬而未决的问题 - Issue
可能一些解决方案如网址中提到的那样
在您的管道中添加一个任务并将您的代理的 IP 列入白名单,然后在您从 keyvault 中获得值后删除白名单。
WhiteList Azure DevOps IP 列表可能每周一次,但这似乎不可靠
@Grand 建议的实际上也是解决方案之一。
【讨论】:
【参考方案2】:(作者评论后更新)
您使用的是 Microsoft 托管代理吗?它们是动态的,也许您可以在 Azure 的虚拟机上托管代理。您将知道机器的 IP 并在 KV 设置中允许它。
查看Self-Hosted Agents 在 Microsoft 文档中。
【讨论】:
我们正在使用service principal authentication
,在原始问题中澄清了这一点。但是,我们确实需要从未知的 IP 地址访问 Azure Key Vault,据我所知,这是我们面临的问题。服务主体有权访问,但不允许使用它的 IP。
您使用的是 Microsoft 托管代理吗?也许您可以改为在 Azure 中的虚拟机上托管代理。您将知道机器的 IP 并在 KV 设置中允许它。在微软文档中查看Self-hosted agents
。以上是关于Azure DevOps -> Pipelines -> Library -> 访问 Azure Key Vault -> Key Vault 不允许从所有网络访问的主要内容,如果未能解决你的问题,请参考以下文章
azure devops cloud 和 azure devops server 2019 之间的区别
如何从 Azure Devops 服务器迁移到 Azure Devops 服务中的现有组织
Tfs / Azure DevOps 客户端库合并 Azure DevOps 分支上的冲突解决
如何将 TFVC 项目从 Azure DevOps 服务器迁移到新的 Azure DevOps 帐户作为 Git 存储库