AzureEndpoint解析教程

Windows Windows 2个月前 (08-15) 3次浏览 未收录 0个评论 扫描二维码

今天来讨论下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

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

第二步:创建Azure SQL

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

这里需要注意,Azure SQL中有项设置叫allow access to Azure services

 

AzureEndpoint解析教程

 

这个是什么意思呢?我们可以通过一个实验了解

以下是一个在我本地的服务器,通过连接工具访问Azure SQL时可以看到会被提示IP不在白名单中

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

但在Azure VM通过SSMS进行连接测试,发现可以访问

 

AzureEndpoint解析教程

 

关闭允许访问Azure服务选项后再次测试

 

AzureEndpoint解析教程

 

再次在Azure VM中访问

 

AzureEndpoint解析教程

 

此时会发现已经没办法访问了

 

AzureEndpoint解析教程

 

因此实际上允许访问Azure服务这个选项开启后,Azure VM不需要添加白名单即可访问Azure SQL服务

再次测试开启允许访问Azure服务,同时在安全组直接限制所有出站

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

开启允许访问Azure服务选项,但是限制所有的出站,再次测试访问情况,访问失败提示超时

也就是说:开启允许访问Azure服务选项时,只是不需要单独开IP的白名单,当时不是直接走内网,实际走的也是公网,只不过在检测时因为是Azure的IP,所以直接放行了,这和开启endpoint是不一样的

关闭允许访问Azure服务选项

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

之后添加Endpoint

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

可以看到endPoint已经添加成功

 

AzureEndpoint解析教程

 

之后添加虚拟网络规则

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

再次测试,仍然无法访问

 

AzureEndpoint解析教程

 

添加到Azure SQL的允许出站的规则

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

 

AzureEndpoint解析教程

 

再次测试

 

AzureEndpoint解析教程

 

可以连接

 

AzureEndpoint解析教程

 

所以,总结来说,通过endpoint,可以非常方便控制IaaS VM对于PaaS服务的访问情况

    喜欢 (0)
    []
    分享 (0)
    关于作者:
    发表我的评论
    取消评论
    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址