共用方式為


使用使用者定義的路由控制輸出流量

注意

此功能僅支援工作負載設定檔環境類型。

本文說明如何使用使用者定義的路由 (UDR) 搭配 Azure 防火牆來鎖定從您的容器應用程式到後端 Azure 資源或其他網路資源的輸出流量。

Azure 會在建立時為您的虛擬網路建立預設路由表。 您可以實作使用者定義的路由表,控制流量在您虛擬網路內的路由方式。 在本指南中,您要在容器應用程式虛擬網路上設定 UDR,以使用 Azure 防火牆來限制輸出流量。

除了 Azure 防火牆,您也可以使用 NAT 閘道或任何其他第三方設備。

如需詳細資訊,請參閱 Azure 容器應用程式中的網路中的使用 Azure 防火牆設定 UDR

必要條件

  • 工作負載設定檔環境:與自訂虛擬網路整合的工作負載設定檔環境。 如需詳細資訊,請參閱如何在工作負載設定檔環境上建立容器應用程式環境的指南

  • curl 支援:您的容器應用程式必須具有支援 curl 命令的容器。 在此操作說明中,您會使用 curl 來驗證是否已正確部署容器應用程式。 如果您的容器應用程式並未部署 curl,您可以部署下列支援 curlmcr.microsoft.com/k8se/quickstart:latest 的容器。

建立防火牆子網路

若要將防火牆部署至整合式虛擬網路,您需要名為 AzureFirewallSubnet 的子網路。

  1. Azure 入口網站中,開啟與您應用程式整合的虛擬網路。

  2. 從左側功能表中選取 [子網路],然後選取 [+ 子網路]

  3. 輸入下列值:

    設定 動作
    名稱 輸入 AzureFirewallSubnet
    子網路位址範圍 使用預設值或指定 /26 或更大的子網路範圍
  4. 選取儲存

部署防火牆

  1. 在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [建立資源]

  2. 搜尋防火牆

  3. 選取 [防火牆]

  4. 選取 建立

  5. 在 [建立防火牆] 頁面上,使用下列設定來設定防火牆。

    設定 動作
    資源群組 輸入與整合式虛擬網路相同的資源群組。
    名稱 輸入您選擇的名稱
    區域 選取與整合式虛擬網路相同的區域。
    防火牆原則 選取 [新增] 建立新的原則。
    虛擬網路 選取整合式虛擬網路。
    公用 IP 位址 選取現有的位址,或選取 [新增] 建立位址。
  6. 選取 [檢閱 + 建立]。 驗證完成後,選取 [建立]。 驗證步驟可能需要幾分鐘的時間才能完成。

  7. 部署完成之後,請選取 [前往資源]

  8. 在防火牆的 [概觀] 頁面中,複製 [防火牆私人 IP]。 在建立虛擬網路的路由規則時,會使用此 IP 位址做為下一個躍點位址。

將所有流量路由傳送至防火牆

當您建立網路時,Azure 中的虛擬網路有預設路由表。 您可以實作使用者定義的路由表,控制流量在您虛擬網路內的路由方式。 在下列步驟中,您會建立 UDR,將所有流量路由傳送至 Azure 防火牆。

  1. 在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [建立資源]

  2. 搜尋 [路由表]

  3. 選取 [路由表]

  4. 選取 建立

  5. 輸入下列值:

    設定 動作
    區域 選取您虛擬網路的區域。
    名稱 輸入名稱。
    傳播閘道路由 選取 [否]
  6. 選取 [檢閱 + 建立]。 驗證完成後,選取 [建立]。

  7. 部署完成之後,請選取 [前往資源]

  8. 從左側功能表中選取 [路由],然後選取 [新增] 以建立新的路由表

  9. 使用下列設定來設定路由表:

    設定 動作
    位址前置詞 輸入 0.0.0.0/0
    下一個躍點類型 選取 [虛擬設備]
    下一個躍點位址 輸入您儲存在部署防火牆中的防火牆私人 IP
  10. 選取 [新增] 以建立路由。

  11. 從左側功能表中,選取 [子網路],然後選取 [關聯],以將您的路由表與容器應用程式的子網路產生關聯。

  12. 使用下列值設定 [建立子網路關聯]

    設定 動作
    虛擬網路 選取容器應用程式的虛擬網路。
    子網路 選取您用於容器應用程式的子網路。
  13. 選取 [確定]。

設定防火牆原則

注意

在 Azure 容器應用程式中搭配 Azure 防火牆使用 UDR 時,您必須將特定的 FQDN 和服務標籤加入防火牆的允許清單。 請參閱使用 Azure 防火牆設定 UDR,以判斷您需要的服務標籤。

現在,來自容器應用程式的所有輸出流量都會路由傳送至防火牆。 目前,防火牆仍允許所有輸出流量通過。 若要管理允許或拒絕的輸出流量,您必須設定防火牆原則。

  1. Azure 防火牆資源中的 [概觀] 頁面上,選取 [防火牆原則]

  2. 從防火牆原則頁面左側的功能表中,選取 [應用程式規則]

  3. 選取 [新增規則集合]

  4. 針對 [規則集合] 輸入下列值:

    設定 動作
    名稱 輸入集合名稱
    規則集合類型 選取 [應用程式]
    優先順序 輸入優先順序,例如 110
    規則集合動作 選取 [允許]
    規則集合群組 選取 DefaultApplicationRuleCollectionGroup
  5. 在 [規則] 底下,輸入下列值

    設定 動作
    名稱 輸入規則的名稱
    來源類型 選取 [IP 位址]
    來源 輸入 *
    通訊協定 輸入 http:80,https:443
    目的地類型 選取 [FQDN]
    目的地 輸入 mcr.microsoft.com*.data.mcr.microsoft.com。 如果您使用 ACR,請新增 ACR 位址*.blob.core.windows.net
    動作 選取 [允許]

    注意

    如果您使用 Docker Hub 登錄,並且要透過防火牆加以存取,則必須將下列 FQDN 新增至規則目的地清單:hub.docker.comregistry-1.docker.ioproduction.cloudflare.docker.com

  6. 選取 [新增]。

確認防火牆封鎖輸出流量

若要確認已正確設定防火牆組態,您可以從應用程式的偵錯主控台使用 curl 命令。

  1. 瀏覽至使用 Azure 防火牆設定的容器應用程式。

  2. 從左側功能表中,選取 [主控台],然後選取支援 curl 命令的容器。

  3. 在 [選擇啟動命令] 功能表中,選取 /bin/sh,然後選取 [連線]

  4. 在主控台中,執行 curl -s https://mcr.microsoft.com。 當您將 mcr.microsoft.com 新增至防火牆原則的允許清單時,應該會看到成功的回應。

  5. 針對不符合任何目的地規則的 URL (例如 example.com) 執行 curl -s https://<FQDN_ADDRESS>。 範例命令可能像 curl -s https://example.com。 您應該不會收到回應,這表示您的防火牆已封鎖要求。

下一步