这次来看下Firewall的另外一个应用场景,在Azure中,如果我们想在VNET中访问Azure的PaaS服务,流量不会走到internet中,而是通过微软的backbone访问,但是这样其实并不是最优的路径,流量实际上会先像访问internet一样走到网关,然后再通过网关走到paas服务,在PaaS服务中你会看到访问的源IP是VM的public ip,如果想让vm直接访问paas服务,则可以通过Azure vnet endpoint。
来看下endpoint的介绍
虚拟网络 (VNet) 服务终结点可通过直接连接将 VNet 的虚拟网络专用地址空间和标识扩展到 Azure 服务。 使用终结点可以保护关键的 Azure 服务资源,只允许在客户自己的虚拟网络中对其进行访问。 从 VNet 发往 Azure 服务的流量始终保留在 Azure 主干网络中。
服务终结点提供以下优势:
提高 Azure 服务资源的安全性:VNet 专用地址空间可能重叠,因此不能用于唯一标识源自 VNet 的流量。 通过将 VNet 标识扩展到服务,服务终结点可以将对 Azure 服务资源的访问限定到你的虚拟网络。 在虚拟网络中启用服务终结点后,可以通过将虚拟网络规则添加到资源,在虚拟网络中保护 Azure 服务资源。 这完全消除了通过公共 Internet 对资源进行访问的可能性,并仅允许来自自己虚拟网络的流量,从而提高了安全性。
-
来自虚拟网络的 Azure 服务流量的最佳路由:当前,虚拟网络中强制 Internet 流量发往本地和/或虚拟设备的任何路由(称为强制隧道)也会强制 Azure 服务流量采用与 Internet 流量相同的路由。 服务终结点为 Azure 流量提供最佳路由。
终结点始终将直接来自虚拟网络的服务流量转发到 Azure 主干网络上的服务。 将流量保留在 Azure 主干网络上可以通过强制隧道持续审核和监视来自虚拟网络的出站 Internet 流量,而不会影响服务流量。
设置简单,管理开销更少:不再需要使用虚拟网络中的保留公共 IP 地址通过 IP 防火墙保护 Azure 资源。 无需使用 NAT 或网关设备即可设置服务终结点。 只需单击一下子网,即可配置服务终结点。 不会产生与终结点维护相关的额外开销。
听起来很不错,但是endpoint实际上是个regional的服务,比如你得vnet在北一,paas服务在东一,这种场景下就算开启了endpoint也不会有效果
这时候其实可以结合Azure firewall解决,前提是azure firewall部署在东一
首先来看下没有endpoint适合的访问场景,因为默认路由指向FW,如果没有FW的网络规则允许访问Azure SQL,访问会被拒绝,即使加了Azure SQL白名单也没用
接下来,首先在FW上添加规则允许出站访问azure sql,这里可以看到,和nsg类似,firewall里也可以以service tag来添加规则,很方便
这次可以看到,提示我们没有添加到白名单,但是起码网络肯定是通了
这里把FW的IP添加进去,正常连接了
可以看到源IP就是FW的IP
接下来在firewall的subnet添加sql的endpoint
之后,在azure sql添加允许firewall所在的subnet访问
这次再试一下,已经可以看到访问的IP是firewall的内网IP了!