私人應用程式閘道部署 (預覽)
簡介
在過去,應用程式閘道 v2 SKU (和特定範圍的 v1) 都需要公用 IP 定址,才能啟用服務管理。 此需求對在網路安全性群組和路由表中使用精細控制項施加了數個限制。 具體來說,我們觀察到下列挑戰:
- 所有應用程式閘道 v2 部署都必須包含公眾對應的前端 IP 設定,才能與閘道管理員服務標籤通訊。
- 網路安全性群組關聯需要規則,以允許來自 GatewayManager 的輸入存取及對網際網路的輸出存取。
- 引入預設路由 (0.0.0.0/0) 以便在網際網路以外的任何地方轉送流量時,閘道的計量、監視及更新都會導致失敗狀態。
應用程式閘道 v2 現在可以處理這其中每一個項目,進一步排除資料外流的風險,並控制在虛擬網路內通訊的隱私權。 這些變更包括下列功能:
- 僅限私人 IP 位址的前端 IP 設定
- 不需要任何公用 IP 位址資源
- 透過網路安全性群組消除來自 GatewayManager 服務標籤的輸入流量
- 能夠定義全部拒絕輸出網路安全性群組 (NSG) 規則來限制對網際網路的輸出流量
- 能夠覆寫通往網際網路的預設路由 (0.0.0.0/0)
- 透過虛擬網路上定義的解析器進行 DNS 解析 深入了解,包括私人連結私人 DNS 區域。
這其中每個功能都可獨立設定。 例如,公用 IP 位址可用於允許輸入自網際網路的流量,而且您可以在網路安全性群組設定中定義「全部拒絕」輸出規則,以防止資料外流。
上線到公開預覽版
私人 IP 前端設定的新控制項功能、對 NSG 規則的控制,以及對路由表的控制目前均處於公開預覽狀態。 若要加入公開預覽版,您可以使用 Azure 入口網站、PowerShell、CLI 或 REST API 選擇加入體驗。
當您加入預覽版時,所有新的應用程式閘道都會佈建,並且能夠定義 NSG、路由表或私人 IP 設定功能的任何組合。 如果您想要退出新功能,並回復為應用程式閘道目前正式推出的功能,則可從預覽版取消註冊。
如需預覽功能的詳細資訊,請參閱在 Azure 訂用帳戶中設定預覽功能
註冊預覽版
使用下列步驟,透過 Azure 入口網站註冊到已增強應用程式閘道網路控制項的公開預覽版:
登入 Azure 入口網站。
在搜尋方塊中,輸入 [訂閱] 並選取 [訂用帳戶]。
選取訂用帳戶名稱的連結。
在左側功能表的 [設定] 下,選取 [預覽功能]。
您會看到可用的預覽功能清單和您目前的註冊狀態。
從 [預覽功能] 中,在篩選方塊中輸入 EnableApplicationGatewayNetworkIsolation、核取此功能,然後按一下 [註冊]。
注意
功能註冊最多可能需要 30 分鐘,才能從「正在註冊」轉換為「已註冊」狀態。
如需預覽功能的詳細資訊,請參閱在 Azure 訂用帳戶中設定預覽功能
從預覽版取消註冊
若要透過入口網站退出已增強應用程式閘道網路控制項的公開預覽版,請使用下列步驟:
登入 Azure 入口網站。
在搜尋方塊中,輸入 [訂閱] 並選取 [訂用帳戶]。
選取訂用帳戶名稱的連結。
在左側功能表的 [設定] 下,選取 [預覽功能]。
您會看到可用的預覽功能清單和您目前的註冊狀態。
從 [預覽功能] 中,在篩選方塊中輸入 EnableApplicationGatewayNetworkIsolation、核取此功能,然後按一下 [取消註冊]。
區域和可用性
私人應用程式閘道預覽版可供支援應用程式閘道 v2 SKU 的所有公用雲端區域使用。
網路控制項的設定
註冊到公開預覽版之後,即可使用任何方法來執行 NSG、路由表和私人 IP 位址前端設定的設定。 例如:REST API、ARM 範本、Bicep 部署、Terraform、PowerShell、CLI 或入口網站。 此公開預覽版並未引進任何 API 或命令變更。
資源變更
佈建閘道之後,即會自動指派資源標籤,其名稱為 EnhancedNetworkControl 且值為 True。 請參閱下列範例:
資源標籤是表面的,可用來確認閘道已佈建,且能夠設定任何僅限私人閘道功能的組合。 修改或刪除標籤或值並不會變更閘道的任何功能運作。
提示
當現有應用程式閘道已在功能啟用之前部署於訂用帳戶中,而您想要區分哪些閘道可以利用新功能時,EnhancedNetworkControl 標籤很實用。
應用程式閘道子網路
應用程式閘道子網路是虛擬網路內的子網路,將在其中部署應用程式閘道資源。 在前端私人 Ip 設定中,此子網路必須能夠私下觸達想要與公開應用程式或網站連線的資源。
輸出網際網路連線
僅包含私人前端 IP 設定 (沒有與要求路由規則相關聯的公用 IP 前端設定) 的應用程式閘道部署無法輸出目的地為網際網路的流量。 此設定會影響與可透過網際網路公開存取之後端目標的通訊。
若要啟用從應用程式閘道到網際網路對應後端目標的輸出連線,您可以使用虛擬網路 NAT,或將流量轉送至可存取網際網路的虛擬設備。
虛擬網路 NAT 供應項目可以控制應使用的 IP 位址或前置詞,以及可設定的閒置逾時。 若要設定,請使用公用 IP 位址或公用前置詞建立新的 NAT 閘道,並將其與包含應用程式閘道的子網路產生關聯。
如果網際網路輸出需要虛擬設備,請參閱本文件中的路由表控制一節。
需要公用 IP 使用方式的常見案例:
- 不使用私人端點或服務端點來與金鑰保存庫通訊
- 直接上傳至應用程式閘道的 PFX 檔案不需要輸出通訊
- 透過網際網路與後端目標的通訊
- 與網際網路對應 CRL 或 OCSP 端點的通訊
網路安全性群組控制
與應用程式閘道子網路相關聯的網路安全性群組不再需要適用於 GatewayManager 的輸入規則,而且不需要對網際網路進行輸出存取。 唯一必要的規則是允許來自 AzureLoadBalancer 的輸入,以確保健全狀態探查可以觸達閘道。
下列設定是限制最嚴格的輸入規則組範例,其拒絕 Azure 健全狀態探查以外的所有流量。 除了定義的規則之外,也會定義明確的規則來允許用戶端流量觸達閘道的接聽程式。
注意
如果 DenyAll 規則不小心限制了對健全狀態探查的存取,應用程式閘道將顯示警示,要求確定已指定允許 LoadBalanceRule。
範例案例
此範例將逐步引導您使用 Azure 入口網站搭配下列規則來建立 NSG:
- 允許輸入流量從源自網際網路的用戶端要求到連接埠 80 和 8080 到應用程式閘道
- 拒絕所有其他輸入流量
- 允許輸出流量到另一個虛擬網路中的後端目標
- 允許輸出流量到可存取網際網路的後端目標
- 拒絕所有其他輸出流量
首先,建立網路安全性群組。 此安全性群組包含您的輸入和輸出規則。
輸入規則
已在安全性群組中佈建三個輸入預設規則。 請參閱下列範例:
接下來,建立下列四個新的輸入安全性規則:
- 允許來自網際網路的輸入連接埠 80,TCP (任何)
- 允許來自網際網路的輸入連接埠 8080,TCP (任何)
- 允許來自 AzureLoadBalancer 的輸入
- 拒絕任何輸入
建立這些規則:
- 選取 [輸入安全性規則]
- 選取新增
- 在 [新增輸入安全性規則] 窗格中,針對每個規則輸入下列資訊。
- 輸入資訊後,選取 [新增] 以建立規則。
- 建立每個規則需要一些時間。
規則 # | 來源 | 來源服務標籤 | 來源連接埠範圍 | 目的地 | 服務 | 目的地連接埠範圍 | 通訊協定 | 動作 | 優先順序 | 名稱 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 任意 | * | 任意 | HTTP | 80 | TCP | 允許 | 1028 | AllowWeb | |
2 | 任意 | * | 任意 | 自訂 | 8080 | TCP | 允許 | 1029 | AllowWeb8080 | |
3 | 服務標籤 | AzureLoadBalancer | * | 任意 | 自訂 | * | 任意 | 允許 | 1045 | AllowLB |
4 | 任意 | * | 任意 | 自訂 | * | 任意 | 拒絕 | 4095 | DenyAllInbound |
佈建完成時,選取 [重新整理] 以檢閱所有規則。
輸出規則
目前已佈建優先順序為 65000、65001 和 65500 的三個預設輸出規則。
建立下列三個新的輸出安全性規則:
- 允許 TCP 443 從 10.10.4.0/24 到後端目標 203.0.113.1
- 允許 TCP 80 從來源 10.10.4.0/24 到目的地 10.13.0.4
- DenyAll 流量規則
這些規則分別獲指派優先順序 400、401 和 4096。
注意
- 10.10.4.0/24 是應用程式閘道子網路位址空間。
- 10.13.0.4 是對等互連 VNet 中的虛擬機器。
- 203.0.113.1 是後端目標 VM。
建立這些規則:
- 選取 [輸出安全性規則]
- 選取新增
- 在 [新增輸出安全性規則] 窗格中,針對每個規則輸入下列資訊。
- 輸入資訊後,選取 [新增] 以建立規則。
- 建立每個規則需要一些時間。
規則 # | 來源 | 來源 IP 位址/CIDR 範圍 | 來源連接埠範圍 | 目的地 | 目的地 IP 位址/CIDR 範圍 | 服務 | 目的地連接埠範圍 | 通訊協定 | 動作 | 優先順序 | 名稱 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | IP 位址 | 10.10.4.0/24 | * | IP 位址 | 203.0.113.1 | HTTPS | 443 | TCP | 允許 | 400 | AllowToBackendTarget |
2 | IP 位址 | 10.10.4.0/24 | * | IP 位址 | 10.13.0.4 | HTTP | 80 | TCP | 允許 | 401 | AllowToPeeredVnetVM |
3 | 任意 | * | 任意 | 自訂 | * | 任意 | 拒絕 | 4096 | DenyAll |
佈建完成時,選取 [重新整理] 以檢閱所有規則。
將 NSG 關聯至子網路
最後一個步驟是將網路安全性群組關聯至子網路,該子網路包含您的應用程式閘道。
結果:
重要
當您定義 DenyAll 規則時請小心,因為您可能會不小心拒絕了來自您想要允許存取之用戶端的輸入流量。 您可能也會不小心拒絕了對後端目標的輸出流量,因而導致後端健康情況失敗且產生 5XX 回應。
路由表控制
在目前的應用程式閘道供應項目中,不支援將路由表與定義為 0.0.0.0/0 的規則 (或規則的建立) 及作為虛擬設備的下一個躍點產生關聯,以確保可適當管理應用程式閘道。
註冊公開預覽功能之後,現在可透過定義 0.0.0.0/0 且下一個躍點為「虛擬設備」的路由表規則定義,將流量轉送至虛擬設備。
強制通道或透過 BGP 廣告學習的 0.0.0.0/0 路由不會影響應用程式閘道健康情況,且會接受來用於流量流程。 使用 VPN、ExpressRoute、路由伺服器或虛擬 WAN 時,適用此案例。
範例案例
在下列範例中,我們會建立路由表,並將它與應用程式閘道子網路產生關聯,以確保來自子網路的輸出網際網路存取將從虛擬設備輸出。 概括而言,圖 1 摘要說明下列設計:
- 應用程式閘道位於輪輻虛擬網路中
- 中樞網路中有一個網路虛擬設備 (虛擬機器)
- 具有到虛擬設備之預設路由 (0.0.0.0/0) 的路由表會關聯至應用程式閘道子網路
圖 1:透過虛擬設備存取網際網路輸出
建立路由表並關聯至應用程式閘道子網路:
- 選取 [路由],然後為 0.0.0.0/0 建立下一個躍點規則,並將目的地設定為您 VM 的 IP 位址:
- 選取 [子網路],並將路由表關聯至應用程式閘道子網路:
- 驗證流量是否會通過虛擬設備。
限制 / 已知問題
在公開預覽期間,已知有下列限制。
私人連結設定
僅限私人的閘道不支援針對透過私人端點將流量通道處理到應用程式閘道的私人連結設定支援。
WAF 速率限制
使用 AGIC 的僅限私人 IP 前端設定
AGIC v1.7 必須用來引進對僅限私人前端 IP 的支援。
透過全域 VNet 對等互連的私人端點連線
如果應用程式閘道具有對私人端點的後端目標或金鑰保存庫參考 (該端點位於可透過全域 VNet 對等互連存取的 VNet 中),流量就會遭到卸除,因而導致狀況不良狀態。
網路監看員整合
連線疑難排解和 NSG 診斷將在執行檢查和診斷測試時傳回錯誤。
在啟用已增強網路控制之前建立的 v2 應用程式閘道會並存
如果子網路會共用在啟用已增強網路控制功能之前和之後建立的應用程式閘道 v2 部署,則網路安全性群組 (NSG) 和路由表功僅限於先前的閘道部署。 在啟用新功能之前佈建的應用程式閘道必須重新佈建,或者,新建立的閘道必須使用不同的子網路來啟用已增強的網路安全性群組和路由表功能。
- 如果在啟用新功能之前已部署的閘道存在於子網路中,您可能就會在新增路由表項目時看到錯誤,例如:
For routes associated to subnet containing Application Gateway V2, please ensure '0.0.0.0/0' uses Next Hop Type as 'Internet'
。 - 將網路安全性群組規則新增至子網路時,您可能會看到:
Failed to create security rule 'DenyAnyCustomAnyOutbound'. Error: Network security group \<NSG-name\> blocks outgoing Internet traffic on subnet \<AppGWSubnetId\>, associated with Application Gateway \<AppGWResourceId\>. This isn't permitted for Application Gateways that have fast update enabled or have V2 Sku.
未知的後端健全狀態
如果後端健康情況是「未知」,則您可能會看到下列錯誤:
- 您無法擷取後端健全狀態。 當應用程式閘道子網路上的 NSG/UDR/防火牆在如果有 v1 SKU 的情況下封鎖連接埠 65503-65534 上的流量,以及在如果有 v2 SKU 的情況下封鎖連接埠 65200-65535 上的流量,或後端集區中設定的 FQDN 無法解析為 IP 位址時,就會發生這種情況。 若要深入了解,請瀏覽 - https://aka.ms/UnknownBackendHealth。
您可以忽略此錯誤,並在未來版本中加以釐清。
下一步
- 如需更多安全性最佳做法,請參閱適用於應用程式閘道的 Azure 安全性基準。