如何将Azure App Service连接至托管MariaDB的Azure VM且避免数据库公网暴露?
当然可以实现!而且这正是Azure推荐的安全架构——完全不需要把你的MariaDB暴露到公网。Azure提供了好几种原生方案来搭建App Service和VM托管数据库之间的私有内网连接,下面给你详细说两种最常用的:
方案一:App Service 虚拟网络集成(VNet Integration)
这是最直接的方案,让你的App Service直接接入到VM所在的虚拟网络(VNet)中,两者通过Azure内网通信:
- 首先确认你的MariaDB所在VM已经部署在某个Azure虚拟网络里,并且给VM配置的网络安全组(NSG)只允许该VNet内部的流量访问3306端口(MariaDB默认端口),同时MariaDB配置文件里绑定的是VM的内网IP(不要绑定
0.0.0.0,避免意外对外暴露) - 进入你的App Service配置页面,找到网络选项卡,开启VNet集成功能,选择和VM同一个VNet的专用子网(注意这个子网不能和VM所在子网重叠,建议单独创建一个用于App Service集成的子网)
- 配置完成后,App Service就可以直接通过VM的内网IP或者VNet内的私有DNS名称访问MariaDB了,所有流量都走Azure内部网络,完全不会经过公网
方案二:使用私有端点(Private Endpoint)
如果你的VM所在的VNet有严格的子网隔离需求,或者你不想让App Service完全接入VNet,也可以给VM的网络接口创建私有端点:
- 为VM的网络接口创建一个私有端点,指定到VM所在的VNet和子网
- 给App Service配置私有DNS区域,将VM的主机名映射到私有端点的内网IP
- 同时调整VM的NSG入站规则,只允许来自私有端点的流量访问3306端口
- 这样App Service就能通过私有端点的内网IP访问MariaDB,同样全程走Azure内网,公网无法触及数据库
额外注意事项
- 无论用哪种方案,都要确保MariaDB的连接字符串里使用的是内网IP或私有DNS名称,不要用公网IP或公共域名
- 可以在VM上启用Azure Monitor或者网络流量日志,验证只有来自App Service的内网流量访问了MariaDB端口
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

