您好,登录后才能下订单哦!
今天来讨论下Azure虚拟网络中的endpoint功能,虚拟网络是什么相信已经有很多博客有过一些介绍了,对于云比较了解的同学应该不需要再介绍了,各家云厂商对于虚拟网络的叫法虽然不一样,但是本质上都是一个东西,AWS和Ali叫VPC,Azure则叫Virtual Network
Azure 虚拟网络允许许多类型的 Azure 资源(例如 Azure 虚拟机 (VM))以安全方式彼此通信、与 Internet 通信,以及与本地网络通信。一个虚拟网络局限于一个区域;但是,可以使用虚拟网络对等互连将不同区域的多个虚拟网络连接起来。
Azure 资源可以采用下述某种方式安全地相互通信:
通过虚拟网络:可以将 VM 和多个其他类型的 Azure 资源部署到虚拟网络,如 Azure 应用服务环境、Azure Kubernetes 服务 (AKS) 和 Azure 虚拟机规模集。
通过虚拟网络服务终结点:通过直接连接将虚拟网络专用地址空间和虚拟网络的标识扩展到 Azure 服务资源,例如 Azure 存储帐户和 Azure SQL 数据库。 使用服务终结点可以保护关键的 Azure 服务资源,只允许在客户自己的虚拟网络中对其进行访问
可组合使用以下任何选项将本地计算机和网络连接到虚拟网络:
点到站点虚拟专用网络: 在网络中的虚拟网络和单台计算机之间建立连接。要与虚拟网络建立连接的每台计算机必须配置其连接。 这种连接类型适用于刚开始使用 Azure 的人员或开发人员,因为该连接类型仅需对现有网络作出极少更改或不做任何更改。计算机与虚拟网络之间的通信经 Internet 通过加密的通道来发送。
站点到站点: 在本地设备和虚拟网络中部署的 Azure网关之间建立连接。 此连接类型可使授权的任何本地资源访问虚拟网络。本地设备和 Azure 网关之间的通信经 Internet 通过加密的通道来发送。
Azure Express Route: 通过 Express Route 合作伙伴在网络和 Azure 之间建立连接。 此连接是专用连接。流量不经过 Internet。
以上是关于Azure虚拟网络的一些基本介绍,注意到在Azure资源之间通信的方法中,有一种是通过一个叫做endpoint的东西,那么什么是这个endpoint,今天来介绍一下
首先来看下endpoint的一些介绍
虚拟网络 (VNet) 服务终结点可通过直接连接将 VNet 的虚拟网络专用地址空间和标识扩展到 Azure 服务。 使用终结点可以保护关键的 Azure 服务资源,只允许在客户自己的虚拟网络中对其进行访问。 从 VNet 发往 Azure 服务的流量始终保留在 Microsoft Azure 主干网络中
目前支持endpoint的服务主要有以下这些
Azure 存储:在所有 Azure 区域正式发布。
Azure SQL 数据库:在所有 Azure 区域正式发布。
Azure SQL 数据仓库:在所有 Azure 区域正式发布。
Azure Database for PostgreSQL 服务器:在可以使用数据库服务的 Azure 区域中通常可用。
Azure Database for MySQL 服务器:在可以使用数据库服务的 Azure 区域中通常可用。
Azure Cosmos DB:在所有 Azure 公有云区域正式发布。
Azure Key Vault:在所有 Azure 公有云区域正式发布。
Azure 服务总线:在所有 Azure 公有云区域正式发布。
Azure 事件中心:在所有 Azure 公有云区域正式发布。
那么Endpoint有什么优势呢?
主要有以下几点:
提高了 Azure 服务资源的安全性:VNet 专用地址空间可能重叠,因此不能用于唯一标识源自 VNet 的流量。通过将 VNet 标识扩展到服务,服务终结点可以将对 Azure 服务资源的访问限定到你的虚拟网络。在虚拟网络中启用服务终结点后,可以通过将虚拟网络规则添加到资源,在虚拟网络中保护 Azure 服务资源。 这完全消除了通过公共 Internet 对资源进行访问的可能性,并仅允许来自自己虚拟网络的流量,从而提高了安全性。
因为虚拟网络的IP地址很多时候并不一定是唯一的,所以通过IP地址的形式控制网络的进出站流量,很多时候会造成一些误解,并且因为PaaS服务的IP地址经常会发生变化,也没有办法通过IP地址形式控制出入站,所以endpoint是一种很方便的方法,可以通过endpoint直接开启/关闭对于某些PaaS服务的出入站流量。这是一种很有效的补充
来自虚拟网络的 Azure 服务流量的最佳路由:当前,虚拟网络中强制 Internet 流量通过本地和/或虚拟设备(称为强制隧道)的任何路由也会强制 Azure 服务流量采用与 Internet 流量相同的路由。 服务终结点为 Azure 流量提供最佳路由。
终结点始终将直接来自虚拟网络的服务流量转发到 Microsoft Azure 主干网络上的服务。将流量保留在 Azure 主干网络上可以通过强制隧道持续审核和监视来自虚拟网络的出站 Internet 流量,而不会影响服务流量。
默认情况下,对于从Azure VM访问某些PaaS服务,比如Azure SQL,路由其实是先出站到Internet,然后再访问到PaaS服务的公网IP,这个流量看上去像是在公网走了一圈,其实这些访问还是发生在Azure数据中心内部的,但是确实是先出站到Internet,才会访问PaaS服务的,那么开启endpoint之后会如何呢?开启endpiint之后,会单独添加一条到PaaS服务的路由,访问PaaS服务时会直接跳到PaaS服务,而不会先出站到Internet
实际举例来说,比如从Azure VM访问Azure SQL
不开Endpoint:在Azure SQL中看到的client IP会是一个公网IP
开启Endpoint: 在Azure SQL中看到的client IP会是一个私网 IP
设置简单,管理开销更少:不再需要使用虚拟网络中的保留公共 IP 地址通过 IP 防火墙保护 Azure 资源。 无需使用 NAT 或网关设备即可设置服务终结点。 只需单击一下子网,即可配置服务终结点。 不会产生与终结点维护相关的额外开销。
和第一点比较类似,开启endpoint对于控制安全来讲,会方便很多
当然了,endpoint本身也存在一些限制,比如:
该功能仅适用于使用 Azure 资源管理器部署模型部署的虚拟网络。
终结点在 Azure 虚拟网络中配置的子网上启用。 终结点不可用于从本地发往 Azure 服务的流量。
对于 Azure SQL,服务终结点仅适用于虚拟网络区域中的 Azure 服务流量。对于 Azure 存储,为了支持 RA-GRS 和 GRS 流量,终结点还进行扩展以包括虚拟网络所部署到的配对区域。
就 ADLS Gen 1 来说,VNet 集成功能仅适用于同一区域中的虚拟网络。
光这么说可能对于endpoint的理解,还是比较模糊
下边来举个实际的例子,比如现在有这么一个需求,希望禁止所有VM出站到internet的流量,仅保留到Azure SQL或者Azure database for MySQL的这种流量
这种规则当然是要靠NSG实现的,那么规则如何设置呢?
首先来看下基本环境的搭建,实验基本包含以下Azure组件
l Azure VM * 1: EndpointVM
l Azure SQL * 1: EndpointSQL
首先,第一步创建VM
第二步:创建Azure SQL
这里需要注意,Azure SQL中有项设置叫allow access to Azure services
这个是什么意思呢?我们可以通过一个实验了解
以下是一个在我本地的服务器,通过连接工具访问Azure SQL时可以看到会被提示IP不在白名单中
但在Azure VM通过SSMS进行连接测试,发现可以访问
关闭允许访问Azure服务选项后再次测试
再次在Azure VM中访问
此时会发现已经没办法访问了
因此实际上允许访问Azure服务这个选项开启后,Azure VM不需要添加白名单即可访问Azure SQL服务
再次测试开启允许访问Azure服务,同时在安全组直接限制所有出站
开启允许访问Azure服务选项,但是限制所有的出站,再次测试访问情况,访问失败提示超时
也就是说:开启允许访问Azure服务选项时,只是不需要单独开IP的白名单,当时不是直接走内网,实际走的也是公网,只不过在检测时因为是Azure的IP,所以直接放行了,这和开启endpoint是不一样的
关闭允许访问Azure服务选项
之后添加Endpoint
可以看到endPoint已经添加成功
之后添加虚拟网络规则
再次测试,仍然无法访问
添加到Azure SQL的允许出站的规则
再次测试
可以连接
所以,总结来说,通过endpoint,可以非常方便控制IaaS VM对于PaaS服务的访问情况
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。