使用使用者定義的路由控制輸出流量
注意
此功能僅支援工作負載設定檔環境類型。
本文說明如何使用使用者定義的路由 (UDR) 搭配 Azure 防火牆來鎖定從您的容器應用程式到後端 Azure 資源或其他網路資源的輸出流量。
Azure 會在建立時為您的虛擬網路建立預設路由表。 您可以實作使用者定義的路由表,控制流量在您虛擬網路內的路由方式。 在本指南中,您要在容器應用程式虛擬網路上設定 UDR,以使用 Azure 防火牆來限制輸出流量。
除了 Azure 防火牆,您也可以使用 NAT 閘道或任何其他第三方設備。
如需詳細資訊,請參閱 Azure 容器應用程式中的網路中的使用 Azure 防火牆設定 UDR。
必要條件
工作負載設定檔環境:與自訂虛擬網路整合的工作負載設定檔環境。 如需詳細資訊,請參閱如何在工作負載設定檔環境上建立容器應用程式環境的指南。
curl
支援:您的容器應用程式必須具有支援curl
命令的容器。 在此操作說明中,您會使用curl
來驗證是否已正確部署容器應用程式。 如果您的容器應用程式並未部署curl
,您可以部署下列支援curl
、mcr.microsoft.com/k8se/quickstart:latest
的容器。
建立防火牆子網路
若要將防火牆部署至整合式虛擬網路,您需要名為 AzureFirewallSubnet 的子網路。
在 Azure 入口網站中,開啟與您應用程式整合的虛擬網路。
從左側功能表中選取 [子網路],然後選取 [+ 子網路]。
輸入下列值:
設定 動作 名稱 輸入 AzureFirewallSubnet。 子網路位址範圍 使用預設值或指定 /26 或更大的子網路範圍。 選取儲存
部署防火牆
在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [建立資源]。
搜尋防火牆。
選取 [防火牆]。
選取 建立。
在 [建立防火牆] 頁面上,使用下列設定來設定防火牆。
設定 動作 資源群組 輸入與整合式虛擬網路相同的資源群組。 名稱 輸入您選擇的名稱 區域 選取與整合式虛擬網路相同的區域。 防火牆原則 選取 [新增] 建立新的原則。 虛擬網路 選取整合式虛擬網路。 公用 IP 位址 選取現有的位址,或選取 [新增] 建立位址。 選取 [檢閱 + 建立]。 驗證完成後,選取 [建立]。 驗證步驟可能需要幾分鐘的時間才能完成。
部署完成之後,請選取 [前往資源]。
在防火牆的 [概觀] 頁面中,複製 [防火牆私人 IP]。 在建立虛擬網路的路由規則時,會使用此 IP 位址做為下一個躍點位址。
將所有流量路由傳送至防火牆
當您建立網路時,Azure 中的虛擬網路有預設路由表。 您可以實作使用者定義的路由表,控制流量在您虛擬網路內的路由方式。 在下列步驟中,您會建立 UDR,將所有流量路由傳送至 Azure 防火牆。
在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [建立資源]。
搜尋 [路由表]。
選取 [路由表]。
選取 建立。
輸入下列值:
設定 動作 區域 選取您虛擬網路的區域。 名稱 輸入名稱。 傳播閘道路由 選取 [否] 選取 [檢閱 + 建立]。 驗證完成後,選取 [建立]。
部署完成之後,請選取 [前往資源]。
從左側功能表中選取 [路由],然後選取 [新增] 以建立新的路由表
使用下列設定來設定路由表:
設定 動作 位址前置詞 輸入 0.0.0.0/0 下一個躍點類型 選取 [虛擬設備] 下一個躍點位址 輸入您儲存在部署防火牆中的防火牆私人 IP。 選取 [新增] 以建立路由。
從左側功能表中,選取 [子網路],然後選取 [關聯],以將您的路由表與容器應用程式的子網路產生關聯。
使用下列值設定 [建立子網路關聯]:
設定 動作 虛擬網路 選取容器應用程式的虛擬網路。 子網路 選取您用於容器應用程式的子網路。 選取 [確定]。
設定防火牆原則
注意
在 Azure 容器應用程式中搭配 Azure 防火牆使用 UDR 時,您必須將特定的 FQDN 和服務標籤加入防火牆的允許清單。 請參閱使用 Azure 防火牆設定 UDR,以判斷您需要的服務標籤。
現在,來自容器應用程式的所有輸出流量都會路由傳送至防火牆。 目前,防火牆仍允許所有輸出流量通過。 若要管理允許或拒絕的輸出流量,您必須設定防火牆原則。
在 Azure 防火牆資源中的 [概觀] 頁面上,選取 [防火牆原則]
從防火牆原則頁面左側的功能表中,選取 [應用程式規則]。
選取 [新增規則集合]。
針對 [規則集合] 輸入下列值:
設定 動作 名稱 輸入集合名稱 規則集合類型 選取 [應用程式] 優先順序 輸入優先順序,例如 110 規則集合動作 選取 [允許] 規則集合群組 選取 DefaultApplicationRuleCollectionGroup 在 [規則] 底下,輸入下列值
設定 動作 名稱 輸入規則的名稱 來源類型 選取 [IP 位址] 來源 輸入 * 通訊協定 輸入 http:80,https:443 目的地類型 選取 [FQDN]。 目的地 輸入 mcr.microsoft.com
、*.data.mcr.microsoft.com
。 如果您使用 ACR,請新增 ACR 位址和*.blob.core.windows.net
。動作 選取 [允許] 注意
如果您使用 Docker Hub 登錄,並且要透過防火牆加以存取,則必須將下列 FQDN 新增至規則目的地清單:hub.docker.com、registry-1.docker.io 和 production.cloudflare.docker.com。
選取 [新增]。
確認防火牆封鎖輸出流量
若要確認已正確設定防火牆組態,您可以從應用程式的偵錯主控台使用 curl
命令。
瀏覽至使用 Azure 防火牆設定的容器應用程式。
從左側功能表中,選取 [主控台],然後選取支援
curl
命令的容器。在 [選擇啟動命令] 功能表中,選取 /bin/sh,然後選取 [連線]。
在主控台中,執行
curl -s https://mcr.microsoft.com
。 當您將mcr.microsoft.com
新增至防火牆原則的允許清單時,應該會看到成功的回應。針對不符合任何目的地規則的 URL (例如
example.com
) 執行curl -s https://<FQDN_ADDRESS>
。 範例命令可能像curl -s https://example.com
。 您應該不會收到回應,這表示您的防火牆已封鎖要求。