使用使用者定義的路由控制 Azure Container Apps 中的輸出流量
注意
此功能僅支援工作負載設定檔環境類型。
本文說明如何使用使用者定義的路由 (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
。 您應該不會收到回應,這表示您的防火牆已封鎖要求。