分享方式:


使用應用程式閘道上的 Web 應用程式防火牆保護 Azure 容器應用程式

當您在 Azure 容器應用程式中裝載應用程式或微服務時,您不一定會想要將其直接發佈至網際網路。 相反地,您可能想要透過反向 Proxy 公開它們。

反向 Proxy 是位於一或多個服務前面的服務,會攔截並引導傳入流量至適當的目的地。

反向 Proxy 可讓您將服務放在支援跨領域功能的應用程式前面,包括:

  • 路由
  • 快取功能
  • 速率限制
  • 負載平衡
  • 安全層
  • 要求篩選

本文示範如何使用 Azure 應用程式閘道上的 Web 應用程式防火牆 (WAF) 搭配內部容器應用程式環境來保護容器應用程式。

如需容器應用程式中網路功能概念的詳細資訊,請參閱 Azure 容器應用程式中的網路環境

必要條件

  • 具有自訂 VNet 的內部環境:具有位於內部環境的容器應用程式,並與自訂虛擬網路整合。 如需如何建立自訂虛擬網路整合式應用程式的詳細資訊,請參閱將虛擬網路提供給內部 Azure 容器應用程式環境

  • 安全性憑證:若您必須對應用程式閘道使用 TLS/SSL 加密,則需要用於繫結至應用程式閘道的有效公開憑證。

擷取容器應用程式的網域

使用下列步驟來擷取預設網域靜態IP 的值,以設定您的私人 DNS 區域。

  1. 從入口網站的資源群組 [概觀] 視窗中,選取您的容器應用程式。

  2. 在容器應用程式資源的 [概觀] 視窗中,選取容器應用程式環境的連結

  3. 在容器應用程式環境資源的 [概觀] 視窗中,選取頁面右上角的 [JSON 檢視],以檢視容器應用程式環境的 JSON 表示法。

  4. 複製 defaultDomainstaticIp 屬性的值,並將其貼到文字編輯器中。 您將在下一節使用預設網域的這些值來建立私人 DNS 區域。

建立及設定 Azure 私人 DNS 區域

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

  2. 搜尋私人 DNS 區域,然後從搜尋結果中選取 [私人 DNS 區域]

  3. 選取建立按鈕。

  4. 輸入下列值:

    設定 動作
    訂用帳戶 選取 Azure 訂閱。
    資源群組 選取容器應用程式的資源群組。
    名稱 輸入上一節中容器應用程式環境的 defaultDomain 屬性。
    資源群組位置 保留為預設值。 因為私人 DNS 區域是全域的,因此不需要值。
  5. 選取 [檢閱 + 建立]。 驗證完成後,選取 [建立]。

  6. 建立私人 DNS 區域之後,請選取 [移至資源]

  7. 在 [概觀] 視窗中,選取 [+記錄集],以新增記錄集。

  8. 在 [新增記錄集] 視窗中,輸入下列值:

    設定 動作
    名稱 輸入 *
    類型 選取 [A - 位址記錄]
    TTL 請保留預設值。
    TTL 單位 請保留預設值。
    IP 位址 輸入上一節中容器應用程式環境的 staticIp 屬性。
  9. 選取 [確定] 以建立記錄集。

  10. 再次選取 [+記錄集],以新增第二個記錄集。

  11. 在 [新增記錄集] 視窗中,輸入下列值:

    設定 動作
    名稱 輸入 @
    類型 選取 [A - 位址記錄]
    TTL 請保留預設值。
    TTL 單位 請保留預設值。
    IP 位址 輸入上一節中容器應用程式環境的 staticIp 屬性。
  12. 選取 [確定] 以建立記錄集。

  13. 從頁面左側的功能表中選取 [虛擬網路連結] 視窗。

  14. 選取 [+新增] 以建立具有下列值的新連結:

    設定 動作
    連結名稱 輸入 my-custom-vnet-pdns-link
    我知道虛擬網路的資源識別碼 將它保持取消核取狀態。
    虛擬網路 選取與容器應用程式整合的虛擬網路。
    啟用自動註冊 將它保持取消核取狀態。
  15. 選取 [確定] 以建立虛擬網路連結。

建立及設定 Azure 應用程式閘道

[基本] 索引標籤

  1. 在 [專案詳細資料] 區段中輸入下列值。

    設定 動作
    訂用帳戶 選取 Azure 訂閱。
    資源群組 選取容器應用程式的資源群組。
    應用程式閘道名稱 輸入 my-container-apps-agw
    區域 選取佈建容器應用程式的位置。
    選取 [WAF V2]。 如果您不需要 WAF,則可以使用標準 V2
    啟用自動調整 保留為預設值。 針對實際執行環境,建議使用自動調整。 請參閱自動調整 Azure 應用程式閘道
    可用性區域 選取 [無]。 針對實際執行環境,建議使用可用性區域,以達到更高的可用性。
    HTTP2 請保留預設值。
    WAF 原則 選取 [新建],然後輸入 WAF 原則的 my-waf-policy。 選取 [確定]。 如果您選擇階層的標準 V2,請跳過此步驟。
    虛擬網路 選取與容器應用程式整合的虛擬網路。
    子網路 選取 [管理子網路組態]。 如果您已經有想要使用的子網路,請改用該子網路,然後跳至 Frontends 區段
  2. my-custom-vnet 的 [子網路] 視窗中,選取 [+子網路],然後 輸入下列值:

    設定 動作
    名稱 輸入 appgateway-subnet
    子網路位址範圍 請保留預設值。
  3. 針對其餘的設定,保留預設值。

  4. 選取 [儲存] 以建立新的子網路。

  5. 關閉 [子網路] 視窗以返回 [建立應用程式閘道] 視窗。

  6. 選取下列值:

    設定 動作
    子網路 選取您建立的 appgateway-subnet
  7. 選取 [下一步:前端],以繼續進行。

[前端] 索引標籤

  1. 在 [前端] 索引標籤上,輸入下列值:

    設定 動作
    前端 IP 位址類型 選取 [公用]
    公用 IP 位址 選取新增。 輸入 my-frontend 以取得前端的名稱,然後選取 [確定]

    注意

    應用程式閘道 v2 SKU 必須要有公用前端 IP。 您可以同時擁有公用和私人前端 IP 組態,但 v2 SKU 目前不支援沒有公用 IP 的私人專用前端 IP 組態。 若要深入了解,請參閱此處

  2. 選取 [下一步:後端]

[後端] 索引標籤

後端集區可用來將要求路由傳送至適當的後端伺服器。 後端集區可以由下列資源的任何組合組成:

  • NIC
  • 公用 IP 位址
  • 內部 IP 位址
  • 虛擬機器擴展集
  • 完整網域名稱 (FQDN)
  • 多租用戶後端,例如 Azure App Service 和容器應用程式

在此範例中,您會建立以容器應用程式為目標的後端集區。

  1. 選取 [新增後端集區]

  2. 開啟新的索引標籤,並瀏覽至您的容器應用程式。

  3. 在容器應用程式的 [概觀] 視窗中,尋找應用程式URL 並複製它。

  4. 返回 [後端] 索引標籤,然後在 [新增後端集區] 視窗中輸入下列值:

    設定 動作
    名稱 輸入 my-agw-backend-pool
    新增無目標的後端集區 選取
    目標類型 主機 IP 位址或 FQDN
    Target 輸入您複製的容器應用程式 URL,並移除 https:// 前置詞。 此位置是容器應用程式的 FQDN。
  5. 選取 [新增]。

  6. 在 [後端] 索引標籤上,選取 [下一步:設定]

設定索引標籤

在 [設定] 索引標籤上,您會連線至您使用路由規則所建立的前端和後端集區。

  1. 選取 [新增路由規則]。 輸入下列值:

    設定 動作
    名稱 輸入 my-agw-routing-rule
    優先順序 輸入 1
  2. 在 [接聽程式] 索引標籤上,輸入下列值:

    設定 動作
    接聽程式名稱 輸入 my-agw-listener
    前端 IP 選取 [公用]
    通訊協定 選取 [HTTPS] 。 如果您沒有要使用的憑證,則可以選取 [HTTP]
    連接埠 輸入 443。 如果您選擇 HTTP 作為通訊協定,請輸入 80 並跳至預設/自訂網域區段。
    選擇憑證 選取 [上傳憑證]。 如果您的憑證儲存在金鑰保存庫中,您可以選取 [從 Key Vault選擇憑證]
    憑證名稱 輸入憑證的名稱。
    PFX 憑證檔案 選取有效的公開憑證。
    密碼 輸入您的憑證密碼。

    如果您要使用預設網域,請輸入下列值:

    設定 動作
    接聽程式類型 選取 [基本]
    錯誤頁面 URL 保留為 [否]

    或者,如果您想要使用自訂網域,請輸入下列值:

    設定 動作
    接聽程式類型 選取 [多網站]
    Host type 選取 [單一]
    主機名稱 輸入您想要使用的自訂網域。
    錯誤頁面 URL 保留為 [否]
  3. 選取 [後端目標] 索引標籤,然後輸入下列值:

  4. 切換至 [後端目標] 索引標籤,然後輸入下列值:

    設定 動作
    目標類型 選取您稍早建立的 my-agw-backend-pool
    後端設定 選取新增
  5. 在 [新增後端設定] 視窗中,輸入下列值:

    設定 動作
    後端設定名稱 輸入 my-agw-backend-setting
    後端通訊協定 選取 [HTTPS]
    後端連接埠 輸入 443
    使用已知的 CA 憑證 選取 [是]
    以新的主機名稱覆寫 選取 [是]
    主機名稱覆寫 選取 [從後端目標挑選主機名稱]
    建立自訂探查 選取
  6. 選取 [新增],以新增後端設定。

  7. 在 [新增路由規則] 視窗中,再次選取 [新增]

  8. 選取 [下一步:標記]

  9. 選取 [下一步:檢閱 + 建立],然後選取 [建立]

您可以利用私人連結,建立與僅限內部容器應用程式環境的安全連線,因為它可讓您的 應用程式閘道 透過虛擬網路與後端上的容器應用程式通訊。

  1. 建立應用程式閘道之後,請選取 [移至資源]

  2. 從左側功能表中,選取 [私人連結],然後選取 [新增]

  3. 輸入下列值:

    設定 動作
    名稱 輸入 my-agw-private-link
    私人連結子網路 選取您想要用來建立私人連結的子網路。
    前端 IP 設定 選取應用程式閘道的前端 IP。
  4. 在 [私人 IP 位址設定] 底下,選取 [新增]

  5. 選取視窗底部的 [新增]

確認容器應用程式

  1. 在其 [概觀] 頁面上尋找應用程式閘道的公用 IP 位址,或者您可以搜尋位址。 若要搜尋,請選取 [所有資源],然後在搜尋方塊中輸入 my-container-apps-agw-pip。 然後,選取搜尋結果中的 IP。

  2. 瀏覽至應用程式閘道的公用 IP 位址。

  3. 您的要求會自動路由傳送至容器應用程式,以確認已成功建立應用程式閘道。

清除資源

當您不再需要您所建立的資源時,請刪除資源群組。 當您刪除資源群組時,也會移除所有相關資源。

刪除資源群組:

  1. 在 Azure 入口網站功能表中,選取 [資源群組],或搜尋並選取 [資源群組]

  2. 在 [資源群組] 頁面上,搜尋並選取 my-container-apps

  3. 在 [資源群組] 頁面上,選取 [刪除資源群組]

  4. 在 [輸入資源群組名稱] 下方輸入 my-container-apps,然後選取 [刪除]

下一步