WebApp/Function访问公网锁定KeyVault所需层级及低成本配置方案
问题解答
1. Key Vault关闭公网访问时WebApp/Function的层级要求
- 仅需Web App/Function App处于基础层(B1)及以上定价层即可,你当前使用的Premium层Function App完全满足要求,无需额外升配。
- 核心要求是应用支持VNet集成功能,所有支持该功能的App Service层级都可以对接关闭公网的Key Vault。
2. 锁定Key Vault的最低成本方案
最低成本可采用Azure RBAC + VNet服务端点的组合,无额外新增成本:
- Key Vault仅需使用标准层(本身无基础费用,仅按操作量计费,免费额度可覆盖绝大多数日常场景)
- VNet服务端点本身不收取任何费用,总成本就是你当前已有的资源支出,不会产生额外账单。
- 如果你对数据隔离有更高要求,选择私有端点方案也仅会产生每月几元到十几元的小额费用,成本也极低。
3. 可以仅配置KV连接用的VNet,保留Web/Function的公网访问权限
完全支持该需求,不需要关闭应用的公网访问,你查到的教程多是全内网部署的场景,和你要实现的仅限制KV访问的需求不一致。
4. 具体实现步骤
前提准备
提前创建一个VNet,至少预留1个未被占用的子网用于App Service VNet集成。
步骤1:配置Web App/Function App的VNet集成
- 进入对应应用的「网络」设置页,找到「出站流量」分类下的「VNet集成」选项
- 点击添加,选择你提前准备的VNet和对应子网,不要开启「路由所有流量」开关:该开关关闭时,应用的公网访问完全不受影响,仅访问VNet内、或绑定了VNet服务端点的资源时才会走内网线路。
步骤2:配置Key Vault的网络访问规则
- 进入Key Vault的「网络」设置页,公网访问选择「禁用」(如果需要保留少量固定IP的访问权限也可以选「允许来自选定虚拟网络和IP地址的公共访问」)
- 在「虚拟网络」板块点击「添加现有虚拟网络」,选择你给应用做VNet集成用的VNet和子网,系统会自动开启该子网对应Key Vault的服务端点。
- 按需勾选「例外」栏目下的「允许受信任的Microsoft服务绕过此防火墙」,如果没有其他Azure官方服务需要访问KV可以不勾选。
步骤3:配置Key Vault访问权限
给Web App/Function App的系统托管标识分配Key Vault的对应权限(比如密钥、机密、证书的读取权限),确保应用本身有权限读取KV内容即可。
配置完成后,你的Web/Function依然可以正常响应公网请求,同时所有访问Key Vault的流量都会走内网线路,公网完全无法访问你的Key Vault,也不需要再维护Key Vault的IP白名单,不受Function App公网IP动态变化的影响。
内容的提问来源于stack exchange,提问作者Ryan Sangha
相关产品推荐
相关产品推荐

