在 Azure 中提供了 Azure VNet Service Endpoint 與 Azure Private Endpoint 兩項服務,用來確保其他 Azure 服務僅能透過 VNet 中的流量訪問,藉此將這些 Azure 服務保護在 VNet 中以提高安全性。
Service Endpoint 與 Private Endpoint 都可以使 VNet 中的私人 IP 到達其他 Azure 服務,而不需要使用到公用 IP,而兩者也存在部分差異,本系列包含以下四篇文章,以最常用的儲存服務 Azure Storage Account 為例,簡單講解這兩項服務。
- 【Azure VNet】服務端點 vs 專用端點
架構說明
以下 Demo 架構供 VNet 中的 VM 透過 Private Endpoint 訪問 Azure Storage :
- 對停用外網訪問的 Azure Storage 建立 Private Endpoint 連線。
- VNet 中的 VM 使用私人 IP 訪問 Azure Storage。
環境建立
如上述架構圖我們總共需要四項服務,而其中的 VNet、VM 和 Storage 的設定都與前一篇介紹 Service Endpoint 時相同,可以直接參考下列連結喔!
另外一個提醒,架構中 VM 與 Private Endpoint 的 IP 如果沒有額外處理,預設建立時都會是動態分配的,如果想要完全跟著圖中的 10.1.1.4 與 10.1.1.5 設定,那就必須留意建立的順序。
調整儲存體帳戶的網路設定
以上都建立完成後我們先進入 Storage,前篇文章也有提到 Storage 在剛建立起來時,對於公網的預設存取是完全開放的,而在使用 Private Endpoint 時公用網路存取是可以完全停用的。
完全停用公用網路存取 |
建立 Private Endpoint
建立 Private Endpoint |
這邊需要注意區域必須與 VNet 是相同的,基本資訊填妥後切換到「資源」頁面。
接著我們需要設定 Private Endpoint 連接到的服務種類,因為我們是從 Storage 的頁面開始創建的,所以這邊會直接帶上資源類型 Microsoft.Storage/storageAccounts 與目標資源,而 Storage 的子資源共有六種,這些子資源的差別目前跟我們比較沒關係,可以直接選擇最基本的 blob 即可。
選擇子資源 |
「虛擬網路」這邊基本上就是設定 Private Endpoint 的 IP 所在網段,根據 Demo 的架構圖,直接選到 VM 所在的相同 VNet 與 Subnet。
選到 VM 所在的 Subnet |
在 DNS 的部分為了不要偏離本篇主題,在「與私人 DNS 區域整合」中先選擇「否」。
不要與私人 DNS 區域整合 |
再來就一直下一步點到建立就可以了,大概需要幾分鐘的時間,建立完成後進到「DNS 設定」。
私人端點資訊 |
到此我們完成了 Private Endpoint 的建立,而我們可以從「DNS設定」中看到 10.1.1.5 的 IP,他是從 Subnet 中自動分配的,記下圖中框起來的資訊,後面我們需要這些來連線到 Storage。
\etc\hosts
再來我們觀察一下,事實上在連線 Storage 時就是使用剛剛在資訊中看到的 FQDN:charlietestblob.blob.core.windows.net,而 Private Endpoint 提供了 10.1.1.5 到 Storage 間的連線,也就是說目前我們還缺少了 FQDN 轉譯到 10.1.1.5 這段,一般在生產環境中這是需要整合私人 DNS 並在上面加上一筆 A 紀錄才能達成的。但就如前面提到的,私人 DNS 並不是本篇討論的重點,因此我們先透過簡單的方式:改寫 \etc\hosts,來達到一樣的效果。
改寫 \etc\hosts |
直接修改 VM 中的 C:\Windows\System32\drivers\etc\hosts 檔案,將 10.1.1.5 charlietestblob.blob.core.windows.net 加到設定中,完成後存檔並關閉檔案。
連線測試
連線測試方式與前一篇相同,這邊就不多贅述了,直接看圖囉!
測試成功 |
留言
張貼留言