
欢迎关注我们,了解更多Azure技术资讯
我们常收到客户提问Azure Database for MySQL灵活服务器的网络防火墙配置的问题:(以下均简称Azure MySQL)
公共/专用访问,拒绝列表/允许列表,虚拟网络(VNet)集成,专用链接,以及众多设置选项,有什么含义?怎么设置?
支持切换公共/专用访问吗?怎么操作?
我的客户/公司要求生产环境进一步提升MySQL数据库的网络安全,如何做最好?
今天我们一文搞定Azure MySQL的网络配置:
横向比较 + 深度解析 + 执行操作
首先,了解下Azure MySQL的三种网络访问方式:
- 公共访问(允许的IP地址访问公共终结点)
- 专用访问(虚拟网络集成)
- 专用链接(通过专用终结点连接到VNet)
1. 公共访问(允许的IP地址访问公共终结点):
此模式Azure MySQL默认会阻止所有公共访问,除非您在防火墙规则中添加允许访问的公共IP地址或者IP范围。
配置操作指引如下图:Azure门户 > 设置 > 网络 > 防火墙规则中添加防火墙规则名称 以及 客户端IP或IP范围。
2. 专用网络(虚拟网络集成)
如果不需要公共访问,您可以将其集成到Azure虚拟网络(VNet)仅进行专用网络访问(推荐方式:通常生产数据库的安全性要求数据隔离)。

对于集成到VNet的Azure MySQL,您可以先到Azure 门户 >Azure MySQL 设置>网络>虚拟网络 中确认Azure MySQL所在的虚拟网络名称,随后Azure门户中导航至对应的虚拟网络 > 设置 > 子网 >> 点击名称为“MySQL”子网,配置"安全性",常见的网络访问控制方式,例如添加网络安全组来管理Azure MySQL的网络访问。如下图所示:
采用专用访问时有两点注意事项:
专用访问与第一种公共访问互斥,二者无法共存。
但专用访问仅有一次更改为公共访问的机会,但变更后无法逆转!(公共访问无法转为专用访问,但您可以启用专用链接兼顾专用访问和实现数据库隔离,我们在后面解决方案部分进行详解)。

集成到VNet后Azure MySQL无法移动VNet,专用DNS区域的配置也无法变更,Azure MySQL所属VNet也无法再更改占用的子网空间,请您注意提前规划网络空间!
3. 专用链接 (通过专用终结点连接到VNet)
此方式在隔离Azure MySQL的同时,还可以进行更精细的专用访问控制。同时,这种方式实际上可以结合第一种公共访问,建立临时的公共访问,用于临时连接测试等目的。

本文不再赘述相关的功能概念,我们重点通过实践解析文档中描述的实际使用效果,并提供多种业务的解决方案供客户选择。
此方案适合绝大部分业务场景:
优势1 安全性更高:专用访问完全隔离了公共访问,公共FQDN解析将被自动禁用,需通过专用DNS区域解析内网地址,可避免Azure MySQL被公共网络探测或连通,取而代之Azure会要求使用专用DNS区域,在专用网络内解析Azure MySQL的FQDN: <servername>.mysql.database.chinacloudapi.cn。
优势2 企业网络集成度更高:将Azure MySQL置于VNet,可以直接集成现有企业的VPN/ExpressRoute/VNet对等互连的连接,对齐企业VNet现有的网络访问规则并简化客户的网络管理。并且连接其他Azure服务时,网络基础设施(Azure VNet)的集成性也更加便利和安全。
由于禁用了公共访问,虽然可以DNS解析公共终结点FQDN
<servername>.mysql.database.chinacloudapi.cn,但无法公共访问。
通过专用链接提供的专用终结点IP,可以安全地访问Azure MySQL。
优势1 企业网络集成度更高:如方案1的VNet集成,也可以打通企业现有VPN/ExpressRoute/VNet对等互连的连接,同时隔离公共访问。
优势2 公共/专用访问模式灵活切换:方案1的专用访问是无法提供公共访问的,而专用链接还可以随时启动公共访问选项,并设置防火墙规则,临时开放公共访问应对测试/临时访问等需求场景。换言之,方案2,方案3,方案4可以相互切换。
在方案2的基础上,可以通过下图选项随时开启/禁用公共访问。
您可能在文档中发现了这个结合使用场景,我们来解析下 “使用专用终结点启用公共访问时,会根据适当的防火墙规则对不同形式的传入流量进行授权。”的具体含义和实际效果。

经过测试验证此模式实现的效果:
1. 公共访问 需要两道设置:勾选公共访问 + 防火墙规则添加允许访问的IP或IP范围。
2. 专用访问 可以选择走专用链接提供的专用终结点IP直连(无法通过Azure MySQL FQDN)或者(备选)在防火墙规则配置中“允许从Azure内任何Azure服务公开访问此服务器”。
如果不勾选上述选项,则其他Azure服务需要以公共访问添加到防火墙允许规则(但不推荐因为Azure PaaS使用动态IP,将Azure MySQL网络配置复杂化)。
此方案Azure MySQL默认禁用了所有访问,除非在防火墙规则中添加IP允许规则。
注意点1:如果您其他Azure服务访问此Azure MySQL,并勾选“允许来自Azure服务和Azure中资源的公共访问” 防火墙规则会允许来自Azure的所有连接,包括VNet内连接,和来自其他客户的订阅的连接。
注意点2:所有Azure PaaS服务都推荐通过FQDN,而非解析的动态IP进行连接,开放Azure MySQL的公共终结点的FQDN意味着向公共网络提供了连接的可能性(即使Azure会针对公共访问进行平台级网络防御,客户也可以通过防火墙规则 + 数据库级别身份认证/权限管理加强数据安全),因此,除了测试环境,我们不推荐客户首选涉及公共访问的数据库连接。
注意点3:使用专用链接选项可以将Azure Database for MySQL灵活服务器从专用访问(虚拟网络集成)转换为公共访问。但是此转换是无法逆转的。如果您希望进行专用访问,推荐在部署规划阶段考虑方案1或方案2。
参考文档


我们的使命
让云计算更聪明
让云服务更高效

