Azure Endpoint 解析

今天來討論下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

clip_image002

clip_image004

clip_image006

clip_image008



第二步:創建Azure SQL

clip_image002[4]

clip_image004[4]

clip_image006[4]

這裏需要注意,Azure SQL中有項設置叫allow access to Azure services

clip_image008[4]


這個是什麼意思呢?我們可以通過一個實驗瞭解

以下是一個在我本地的服務器,通過連接工具訪問Azure SQL時可以看到會被提示IP不在白名單中

clip_image010

clip_image012


但在Azure VM通過SSMS進行連接測試,發現可以訪問

clip_image014


關閉允許訪問Azure服務選項後再次測試

clip_image016


再次在Azure VM中訪問

clip_image018


此時會發現已經沒辦法訪問了

clip_image020


因此實際上允許訪問Azure服務這個選項開啓後,Azure VM不需要添加白名單即可訪問Azure SQL服務

再次測試開啓允許訪問Azure服務,同時在安全組直接限制所有出站

clip_image022

clip_image024


開啓允許訪問Azure服務選項,但是限制所有的出站,再次測試訪問情況,訪問失敗提示超時

也就是說:開啓允許訪問Azure服務選項時,只是不需要單獨開IP的白名單,當時不是直接走內網,實際走的也是公網,只不過在檢測時因爲是Azure的IP,所以直接放行了,這和開啓endpoint是不一樣的

關閉允許訪問Azure服務選項

clip_image026

clip_image028


之後添加Endpoint

clip_image030

clip_image032

clip_image034

clip_image036


可以看到endPoint已經添加成功

clip_image038


之後添加虛擬網絡規則

clip_image040

clip_image042


再次測試,仍然無法訪問

clip_image044


添加到Azure SQL的允許出站的規則

clip_image046

clip_image048

clip_image050


再次測試

clip_image052


可以連接

clip_image054

所以,總結來說,通過endpoint,可以非常方便控制IaaS VM對於PaaS服務的訪問情況

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章