您好,登錄后才能下訂單哦!
今天來討論下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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。