You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure MySQL(预览版):如何限制仅允许Azure App Services访问?

如何让Azure App Services安全访问Azure MySQL(预览版)

针对你遇到的Azure App Services访问Azure MySQL时的IP限制难题,这里有几个安全且可靠的解决方案,完全避开开放大范围IP段的风险:

1. 优先推荐:虚拟网络(VNet)集成

这是最安全的方案,让你的App Service和MySQL通过私有网络直接通信,完全不需要依赖公网IP:

  • 先在Azure MySQL的连接安全性设置中,启用「允许虚拟网络访问」,然后添加你的App Service所属虚拟网络的子网(需要提前为MySQL配置VNet规则,确保子网无冲突)
  • 回到你的App Service,在网络选项卡中配置「VNet集成」,将App Service加入到同一个VNet的子网中。配置完成后,App Service的所有出站流量都会通过这个VNet访问MySQL,既不需要开放任何公网IP,也不用担心微软变更IP段的问题,稳定性和安全性拉满。

2. 轻量替代:服务端点(Service Endpoints)

如果VNet集成的配置对你来说有点复杂,服务端点是更轻量的选择,同样基于私有网络:

  • 找到App Service所在的VNet子网,启用「Microsoft.Sql」服务端点,这样该子网的流量访问Azure SQL服务(包括Azure MySQL)时会通过私有通道传输
  • 在Azure MySQL的连接安全性里,添加这个子网的VNet规则。这样只有来自这个子网的流量(也就是你的App Service)能访问MySQL,同样避开了公网IP的动态问题。

3. 身份层面加固:托管标识+权限控制

除了网络层面的限制,你还可以结合托管标识从身份层面进一步锁定访问:

  • 为你的App Service启用系统分配的托管标识(在App Service的「标识」选项卡中开启)
  • 登录Azure MySQL数据库,创建关联该托管标识的SQL用户:
    CREATE USER [你的App Service名称] FROM EXTERNAL PROVIDER;
    
  • 为这个用户分配必要的数据库权限,比如只读或读写:
    GRANT SELECT, INSERT, UPDATE ON `你的数据库名`.* TO [你的App Service名称];
    
  • 配合前面的VNet/服务端点方案,就算有人拿到了IP权限,没有对应的托管标识也无法访问数据库,双重保障。

为什么开放整个23.102.x.x段不可行?

你说得很对,这个IP段是Azure App Service的出站IP池,包含大量其他租户的服务,开放整个段等于把数据库暴露给所有使用这个IP池的Azure用户,完全没有安全性可言。而且微软随时可能调整这个IP段,到时候你的应用会突然无法访问,运维风险极高。另外App Service的公网IP是入站IP(外部访问你的App用的IP),而App访问数据库用的是出站IP,所以把公网IP加到MySQL的防火墙规则里根本没用。

内容的提问来源于stack exchange,提问作者Kevin Kidson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:22:17