本文介绍:

Azure database for MySQL的链接安全性中关于 拒绝/允许公网访问和IP防火墙

实战内容:

1. Deny public network access 设置为 Yes,验证从Internet 和 Azure 均无法连接数据库服务器;

2. Deny public network access 设置为 No,

         对于Internet 连接:

                                        验证本地IP不在白名单时无法访问数据库服务器;

                                        验证将本地IP添加白名单后可以访问数据库服务器;

         对于Azure 连接:

                                       验证将Allow access to Azure services 设置为Yes,Azure VM可以访问数据库服务器;

                                       验证将Allow access to Azure services 设置为No,Azure VM无法访问数据库服务器;

                                       验证将Allow access to Azure services 设置为No,将Azure VM公网Ip添加到白名单后,可以访问数据库服务器;

 

 


 

视频介绍:

 

 


       

 

图文介绍:

对于Azure paas 层的MySQL的访问链接来自于两部分,一部分是 Azure 内部的访问,另一部分是Azure 外部的互联网访问,对于Paas的mysql,这两部分( Internet 和 Azure) 的连接必须首先通过防火墙,才能访问 Azure Database for MySQL 数据库。

 

 

对于如下图的界面:

  1.  Deny public network access 设置为 "Yes",则不管是否设定了防火墙白名单IP,Internet 和 Azure的链接都会被拦截。

 

2. Deny public network access 设置为“No”, 则此时来自于Internet 和 Azure的IP如果在防火墙白名单中,则可以通行。

    对于防火墙白名单,有几个特别需要注意的事项:

     a). 0.0.0.0-255.255.255.255,表示放行所有公网IP的连接

 

 

 

   b) 针对Azure的资源特定设置:

           i. Allow access to Azure services 设置为Yes ,允许来自Azure的连接:本选项允许来自Azure 云中的任意公网IP访问,包括其他人的订阅下的资源,但不包括国家云(例如 世纪互联运营的Azure),这样确实可能存在安全风险,其他人的虚拟机也能访问你的数据库,只剩下mysql的用户名和密码作为最后的屏障。

           ii. 如果Allow access to Azure services 设置为 No,则需要对每个尝试使用数据库的ip手动添加到白名单中,这种方式,需要注意的是,比如你通过虚拟机访问数据库,你的虚拟机公网IP有可能是动态的,在重启后可能IP发生变更导致无法链接到数据库,这类情况下,需要将IP设置为静态;

可以看到下图Ip为 dyamic 类型,需要将其设定为 static 才能在虚拟机重启后保留ip地址不变:

 

关于虚拟机静态公共IP地址的配置,请参照官网《https://docs.microsoft.com/zh-cn/azure/virtual-network/virtual-network-deploy-static-pip-arm-portal

 

比如你使用的是 APP Service或者Functions,这类服务的出站IP通常包含多个IP,需要将所有的IP都加入防火墙白名单,如下图所示:

 

在App service 进行 sacle up 时,IP地址可能发生变更,此时需要注意将变更后的ip添加到白名单中:

 

关于App service 出站IP变更的详细内容,可参照官网《https://docs.microsoft.com/zh-cn/azure/app-service/overview-inbound-outbound-ips#when-outbound-ips-change》