本文說明如何將 PaaS 資源透過私人端點公開至單一區域中的特定工作負載。 在此案例中,網路拓撲是中樞輪輻,而中樞是 Azure 虛擬 WAN 中樞。
重要
本文是虛擬 WAN 中 Azure Private Link 和 Azure DNS 系列中的一部分,並建置在案例指南中定義的網路拓撲上。 請先閱讀概觀頁面,以瞭解基底網路架構和關鍵挑戰。
案例
圖 1:具有 Private Link 和 Azure DNS 的虛擬 WAN 單一區域案例 - 挑戰
下載此架構的 Visio 檔案。 本節會定義案例,並重新定義此案例的挑戰(挑戰與 概觀頁面中的非工作範例相同)。 初始案例架構是以 概觀指南中定義的起始網路拓撲為基礎。 以下是新增和變更:
- 只有一個虛擬中樞有一個區域。
- 區域中有 Azure 儲存體 帳戶已停用公用網路存取。 此案例中的假設是只有一個工作負載存取記憶體帳戶。
- 一開始有一個虛擬網路連線到虛擬中樞。
- 虛擬網路具有包含虛擬機 (VM) 用戶端的工作負載子網。
- 虛擬網路包含私人端點子網,其中包含記憶體帳戶的私人端點。
成功結果
Azure 虛擬機器用戶端可以透過位於相同虛擬網路中的記憶體帳戶私人端點連線到 Azure 儲存體 帳戶,而所有其他記憶體帳戶的存取都會遭到封鎖。
障礙
您需要 DNS 流程中的 DNS 記錄,才能將記憶體帳戶的完整功能變數名稱 (FQDN) 解析回私人端點的私人 IP 位址。 如概觀中所識別,案例的挑戰是兩倍:
- 您無法將維護所需 DNS 記錄的私人 DNS 區域連結至虛擬中樞。
- 您可以將私人 DNS 區域連結至工作負載網路,因此您可能會認為這是可以運作的。 不幸的是,基準架構規定每個連線的虛擬網路都有設定為指向使用 Azure 防火牆 DNS Proxy 的 DNS 伺服器。
由於您無法將私人 DNS 區域連結至虛擬中樞,且虛擬網路已設定為使用 Azure 防火牆 DNS Proxy,因此 Azure DNS 伺服器沒有任何機制可將記憶體帳戶的 (FQDN) 解析至私人端點的私人 IP 位址。 結果是用戶端收到錯誤的 DNS 回應。
DNS 和 HTTP 流程
讓我們檢閱此工作負載的 DNS 和產生的 HTTP 要求流程。 檢視可協助我們可視化先前所述的障礙。
圖 2:具有 Private Link 和 Azure DNS 之虛擬 WAN 的單一區域案例 - 挑戰
DNS 流程
- 用戶端的
stgworkload00.blob.core.windows.net
DNS 查詢會傳送至已設定的 DNS 伺服器,這是在對等互連的區域中樞內 Azure 防火牆。 - Azure 防火牆 Proxy 對 Azure DNS 的要求。 因為無法將私人 DNS 區域連結至虛擬中樞,所以 Azure DNS 不知道如何將 FQDN 解析為私人端點私人 IP 位址。 它確實知道如何將 FQDN 解析為記憶體帳戶的公用 IP 位址,因此它會傳回記憶體帳戶的公用 IP 位址。
HTTP 流程
- 隨著 DNS 結果的交接,記憶體帳戶的公用 IP 位址,用戶端會向 發出 HTTP 要求
stgworkload00.blob.core.windows.net
。 - 要求會傳送至記憶體帳戶的公用IP位址。 此要求因為許多原因而失敗:
- 工作負載子網上的 NSG 可能不允許此因特網系結的流量。
- 篩選因特網系結輸出流量的 Azure 防火牆 可能沒有支援此流程的應用程式規則。
- 即使 NSG 和 Azure 防火牆 都有此要求流程的津貼,儲存體 帳戶仍設定為封鎖所有公用網路存取。 嘗試最終違反了我們只允許透過私人端點存取記憶體帳戶的目標。
解決方案 - 建立 DNS 的虛擬中樞擴充功能
挑戰的解決方案是讓企業網路小組實 作 DNS 的虛擬中樞擴充功能 。 DNS 虛擬中樞延伸模組的單一責任是啟用工作負載小組,而工作負載小組必須在此 啟動的虛擬 WAN 中樞拓撲內在其架構中使用私人 DNS 區域。
DNS 擴充功能會實作為與區域虛擬中樞對等互連的虛擬網路輪輻。 可以將私人 DNS 區域連結至此虛擬網路。 虛擬網路也包含 Azure DNS 私人解析程式,可讓此虛擬網路以外的服務,例如 Azure 防火牆,從所有連結的私人 DNS 區域查詢和接收值。 以下是一般 DNS 虛擬中樞擴充功能的元件,以及一些必要的組態變更:
- 與區域虛擬中樞對等互連的新輪輻虛擬網路。 此輪輻的設定方式就像任何其他輪輻一樣,這表示預設 DNS 伺服器和路由規則會強制在區域中樞中使用 Azure 防火牆。
- DNS 私人解析程序資源會以 輪輻虛擬網路中的輸入端點 進行部署。
- 系統會建立名為
privatelink.blob.core.windows.net
的私人 DNS 區域資源。- 此區域包含一筆
A
記錄,該記錄會從記憶體帳戶 FQDN 名稱對應至記憶體帳戶私人端點的私人 IP 位址。 - 私人 DNS 區域會連結至輪輻虛擬網路。
- 如果角色型存取控制 (RBAC) 允許,您可以使用 自動註冊 或服務管理的專案來維護這些 DNS 記錄。 如果沒有,您可以手動維護它們。
- 此區域包含一筆
- 在區域中樞中,Azure 防火牆 的 DNS 伺服器會變更為指向 DNS 私人解析程式的輸入端點。
下圖說明架構,以及 DNS 和 HTTP 流程。
圖 3:使用 Private Link 和 DNS 進行虛擬 WAN 單一區域案例的工作解決方案
建立 DNS 虛擬中樞延伸模組的 DNS 流程
來自用戶端的 DNS 查詢
stgworkload00.blob.core.windows.net
會傳送至已設定的 DNS 伺服器,這是在對等互連的區域中樞中 Azure 防火牆 - 在此案例中為 10.100.0.132。Azure 防火牆 在中樞擴充功能 - 10.200.1.4 中,將要求 Proxy 傳送至區域 Azure DNS 私人解析程式,這是 DNS 私人解析程式輸入端點的私人 IP 位址。
圖 5:Azure 防火牆 原則中的 DNS 設定
DNS 私人解析程式會將要求 Proxy 傳送至 Azure DNS。 由於私人 DNS 區域已連結至包含輸入端點的虛擬網路,因此 Azure DNS 可以使用那些連結的私人 DNS 區域中的記錄。
Azure DNS 會查閱連結的私人 DNS 區域,並將的 FQDN
stgworkload00.blob.core.windows.net
解析為 10.1.2.4,這是記憶體帳戶私人端點的 IP 位址。 此回應會提供給 Azure 防火牆 DNS,然後將記憶體帳戶的私人IP位址傳回給用戶端。
HTTP 流程
- 隨著 DNS 結果的交接,記憶體帳戶的私人 IP 位址,用戶端會向 發出 HTTP 要求
stgworkload00.blob.core.windows.net
。 - 要求會傳送至記憶體帳戶的私人IP位址 (10.1.2.4)。 此要求成功路由傳送,假設用戶端子網或私人端點子網上的本機網路安全組沒有衝突的限制。 請務必瞭解,即使 Azure 防火牆 保護私人流量,要求也不會透過 Azure 防火牆 路由傳送,因為私人端點與客戶端位於相同的虛擬網路中。 這表示此案例不需要 Azure 防火牆 津貼。
- 透過 Private Link 服務建立記憶體帳戶的私人連線。 記憶體帳戶只允許專用網存取,並接受 HTTP 要求。
DNS 考慮的虛擬中樞擴充功能
為企業實作擴充功能時,請考慮下列指引。
- 部署 DNS 擴充功能不是工作負載小組的工作。 此工作是企業網路功能,應該是與這些人員制定的實作決策。
- 在新增您想要設定私人端點 DNS 記錄的任何 PaaS 服務之前,必須先存在 DNS 延伸模組和私人 DNS 區域。
- 虛擬中樞擴充功能是區域資源,可避免跨區域流量,並建立每個區域中樞的中樞擴充功能,其中需要私人端點 DNS 解析。
輪幅虛擬網路
- 遵循單一責任原則,DNS 擴充功能的虛擬網路應該只包含 DNS 解析所需的資源,而且不應該與其他資源分享。
- DNS 延伸模組的虛擬網路應該遵循新增輪輻網路下的相同設定指導方針。
Azure DNS 私人解析器
每個區域都應該有一個具有一個 DNS 私人解析程式的虛擬中樞 DNS 擴充功能。
DNS 私人解析程式只需要輸入端點,而且此案例不需要輸出端點。 輸入端點的私人IP是 Azure 防火牆原則中自定義 DNS 服務的設定專案(請參閱圖 5)。
若要提高復原能力和增加負載處理,您可以為每個區域部署多個 DNS 私人解析程序實例,並以多個 IP 位址設定為 Proxy 解析的 Azure DNS Proxy。
DNS 私人解析程式輸入端點子網中的網路安全組應該只允許從其區域中樞到埠 53 的 UDP 流量。 您應該封鎖所有其他輸入和輸出流量。
私人 DNS 區域
由於 Azure DNS 私人解析程式會透過 Azure DNS 解析 DNS,因此 Azure DNS 能夠挑選連結至其輸入子網虛擬網路的任何私人 DNS 區域。
- 將私人 DNS 區域連結至 DNS 虛擬網路的虛擬中樞擴充功能。
- 請遵循管理私人端點私人 DNS 區域的指引。
- 如果您預期 PaaS 資源擁有者能夠管理自己的專案,請據以設定 RBAC,或實作解決方案,例如從 Private Link 和 DNS 大規模整合。
案例考慮
有了妥善管理的虛擬中樞 DNS 擴充功能,讓我們回到工作負載,並解決一些額外的點,以協助在此案例中達成 成功的結果 目標。
儲存體帳戶
- 設定公用網路存取:在 [網路連線] 下停用,以確保只能透過私人端點存取記憶體帳戶。
- 將私人端點新增至工作負載虛擬網路中的專用私人端點子網。
- 將 Azure 診斷 傳送至工作負載 Log Analytics 工作區。 您可以使用存取記錄來協助針對設定問題進行疑難解答。
私人端點安全性
此解決方案的需求是限制此記憶體帳戶的風險。 拿掉 PaaS 資源的公用因特網存取之後,您應該解決專用網安全性問題。
當 Azure 防火牆 保護虛擬 WAN 中樞輪輻拓撲中的私人流量時,Azure 防火牆 預設為拒絕輪輻對輪輻連線。 此預設設定可防止其他輪輻網路中的工作負載存取工作負載虛擬網路中的私人端點(和其他資源)。 虛擬網路內的流量不會透過 Azure 防火牆 路由傳送。 若要控制虛擬網路內的存取,並新增更細微的保護,請考慮下列網路安全組 (NSG) 建議。
- 建立應用程式安全組 (ASG) 以將具有類似輸入或輸出存取需求的資源分組。 在此案例中,針對需要存取記憶體的用戶端 VM 使用 ASG,並針對所存取的記憶體帳戶使用 ASG。 請參閱使用 私人端點設定應用程式安全組 (ASG)。
- 請確定包含工作負載 VM 的子網具有 NSG。
- 請確定包含私人端點的子網具有 NSG。
包含工作負載 VM 的子網 NSG 規則
除了工作負載所需的任何其他網路規則之外,請設定下列規則。
- 輸出規則:
- 允許計算 ASG 存取記憶體帳戶 ASG。
- 允許計算 ASG 到區域中樞 Azure 防火牆 埠 53 上的 UDP 私人 IP。
包含私人端點之子網的 NSG 規則
最佳做法是在取用虛擬網路內的小型專用子網上公開私人端點。 其中一個原因是您可以針對私人端點套用使用者定義的路由和網路安全組網路原則,以新增流量控制和安全性。
此案例可讓高度限制的網路安全組套用。
- 輸入規則:
- 允許計算 ASG 存取記憶體帳戶 ASG
- 拒絕所有其他流量
- 輸出規則:
- 拒絕所有流量
作用中的私人端點安全性
下圖說明如何遵循概述的考慮,以提供深度防禦安全性。 此圖顯示具有第二個 VM 的第二個輪輻虛擬網路。 該工作負載無法存取私人端點。
圖 11:具有 Private Link 和 DNS 之虛擬 WAN 單一區域案例的工作解決方案
DNS 流程
DNS 流程與解決方案流程中完全相同。
強調的重要事項是,FQDN 會解析為私人IP位址,而不是公用IP位址。 此解決方案表示所有輪輻一律會收到此服務的私人IP位址。 另一個案例涵蓋如何使用此方法,在多個取用工作負載之間共用 PaaS 服務。 在此單一工作負載案例中,這並不重要。
HTTP 流程
- 隨著 DNS 結果的交接,記憶體帳戶的私人 IP 位址,用戶端會向 發出 HTTP 要求
stgworkload00.blob.core.windows.net
。 - 要求會傳送至記憶體帳戶的私人IP位址。 此要求因許多原因而適當失敗:
- Azure 防火牆 已設定為保護私人流量,因此它會處理要求。 除非 Azure 防火牆 有允許流程的網路或應用程式規則,否則 Azure 防火牆 封鎖要求。
- 您不需要在中樞中使用 Azure 防火牆 來保護私人流量。 例如,如果您的 網路支援私人、跨區域流量,私人端點子網上的NSG仍設定為封鎖裝載工作負載之虛擬網路內計算 ASG 來源以外的所有流量。
摘要
本文介紹 VM 用戶端透過記憶體帳戶的私人端點連線到 Azure 儲存體 帳戶的案例。 端點位於與用戶端相同的虛擬網路中。 所有其他記憶體帳戶的存取都會遭到封鎖。 此案例需要 DNS 流程中的 DNS 記錄,才能將記憶體帳戶的完整功能變數名稱 (FQDN) 解析回私人端點的私人 IP 位址。
此 案例的起始網路拓撲 引進了兩項挑戰:
- 您無法將私人 DNS 區域與記憶體帳戶所需的 DNS 記錄連結至虛擬中樞。
- 將私人 DNS 區域連結至工作負載子網無法運作。 啟動的網路拓撲需要預設 DNS 伺服器和路由規則強制在區域中樞中使用 Azure 防火牆。
建議的解決方案是讓企業網路小組實作 DNS 的虛擬中樞擴充功能。 此擴充功能可讓企業網路小組向需要共用 DNS 服務的工作負載輪輻公開。