使用應用程式閘道上的 Web 應用程式防火牆保護 Azure 容器應用程式
當您在 Azure 容器應用程式中裝載應用程式或微服務時,您不一定會想要將其直接發佈至網際網路。 相反地,您可能想要透過反向 Proxy 公開它們。
反向 Proxy 是位於一或多個服務前面的服務,會攔截並引導傳入流量至適當的目的地。
反向 Proxy 可讓您將服務放在支援跨領域功能的應用程式前面,包括:
- 路由
- 快取功能
- 速率限制
- 負載平衡
- 安全層
- 要求篩選
本文示範如何使用 Azure 應用程式閘道上的 Web 應用程式防火牆 (WAF) 搭配內部容器應用程式環境來保護容器應用程式。
如需容器應用程式中網路功能概念的詳細資訊,請參閱 Azure 容器應用程式中的網路環境。
必要條件
具有自訂 VNet 的內部環境:具有位於內部環境的容器應用程式,並與自訂虛擬網路整合。 如需如何建立自訂虛擬網路整合式應用程式的詳細資訊,請參閱將虛擬網路提供給內部 Azure 容器應用程式環境。
安全性憑證:若您必須對應用程式閘道使用 TLS/SSL 加密,則需要用於繫結至應用程式閘道的有效公開憑證。
擷取容器應用程式的網域
使用下列步驟來擷取預設網域和靜態IP 的值,以設定您的私人 DNS 區域。
從入口網站的資源群組 [概觀] 視窗中,選取您的容器應用程式。
在容器應用程式資源的 [概觀] 視窗中,選取容器應用程式環境的連結
在容器應用程式環境資源的 [概觀] 視窗中,選取頁面右上角的 [JSON 檢視],以檢視容器應用程式環境的 JSON 表示法。
複製 defaultDomain 和 staticIp 屬性的值,並將其貼到文字編輯器中。 您將在下一節使用預設網域的這些值來建立私人 DNS 區域。
建立及設定 Azure 私人 DNS 區域
在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [建立資源]。
搜尋私人 DNS 區域,然後從搜尋結果中選取 [私人 DNS 區域]。
選取建立按鈕。
輸入下列值:
設定 動作 訂用帳戶 選取 Azure 訂閱。 資源群組 選取容器應用程式的資源群組。 名稱 輸入上一節中容器應用程式環境的 defaultDomain 屬性。 資源群組位置 保留為預設值。 因為私人 DNS 區域是全域的,因此不需要值。 選取 [檢閱 + 建立]。 驗證完成後,選取 [建立]。
建立私人 DNS 區域之後,請選取 [移至資源]。
在 [概觀] 視窗中,選取 [+記錄集],以新增記錄集。
在 [新增記錄集] 視窗中,輸入下列值:
設定 動作 名稱 輸入 *。 類型 選取 [A - 位址記錄]。 TTL 請保留預設值。 TTL 單位 請保留預設值。 IP 位址 輸入上一節中容器應用程式環境的 staticIp 屬性。 選取 [確定] 以建立記錄集。
再次選取 [+記錄集],以新增第二個記錄集。
在 [新增記錄集] 視窗中,輸入下列值:
設定 動作 名稱 輸入 @。 類型 選取 [A - 位址記錄]。 TTL 請保留預設值。 TTL 單位 請保留預設值。 IP 位址 輸入上一節中容器應用程式環境的 staticIp 屬性。 選取 [確定] 以建立記錄集。
從頁面左側的功能表中選取 [虛擬網路連結] 視窗。
選取 [+新增] 以建立具有下列值的新連結:
設定 動作 連結名稱 輸入 my-custom-vnet-pdns-link。 我知道虛擬網路的資源識別碼 將它保持取消核取狀態。 虛擬網路 選取與容器應用程式整合的虛擬網路。 啟用自動註冊 將它保持取消核取狀態。 選取 [確定] 以建立虛擬網路連結。
建立及設定 Azure 應用程式閘道
[基本] 索引標籤
在 [專案詳細資料] 區段中輸入下列值。
設定 動作 訂用帳戶 選取 Azure 訂閱。 資源群組 選取容器應用程式的資源群組。 應用程式閘道名稱 輸入 my-container-apps-agw。 區域 選取佈建容器應用程式的位置。 層 選取 [WAF V2]。 如果您不需要 WAF,則可以使用標準 V2。 啟用自動調整 保留為預設值。 針對實際執行環境,建議使用自動調整。 請參閱自動調整 Azure 應用程式閘道。 可用性區域 選取 [無]。 針對實際執行環境,建議使用可用性區域,以達到更高的可用性。 HTTP2 請保留預設值。 WAF 原則 選取 [新建],然後輸入 WAF 原則的 my-waf-policy。 選取 [確定]。 如果您選擇階層的標準 V2,請跳過此步驟。 虛擬網路 選取與容器應用程式整合的虛擬網路。 子網路 選取 [管理子網路組態]。 如果您已經有想要使用的子網路,請改用該子網路,然後跳至 Frontends 區段。 從 my-custom-vnet 的 [子網路] 視窗中,選取 [+子網路],然後 輸入下列值:
設定 動作 名稱 輸入 appgateway-subnet。 子網路位址範圍 請保留預設值。 針對其餘的設定,保留預設值。
選取 [儲存] 以建立新的子網路。
關閉 [子網路] 視窗以返回 [建立應用程式閘道] 視窗。
選取下列值:
設定 動作 子網路 選取您建立的 appgateway-subnet。 選取 [下一步:前端],以繼續進行。
[前端] 索引標籤
在 [前端] 索引標籤上,輸入下列值:
設定 動作 前端 IP 位址類型 選取 [公用]。 公用 IP 位址 選取新增。 輸入 my-frontend 以取得前端的名稱,然後選取 [確定] 注意
應用程式閘道 v2 SKU 必須要有公用前端 IP。 您可以同時擁有公用和私人前端 IP 組態,但 v2 SKU 目前不支援沒有公用 IP 的私人專用前端 IP 組態。 若要深入了解,請參閱此處。
選取 [下一步:後端]。
[後端] 索引標籤
後端集區可用來將要求路由傳送至適當的後端伺服器。 後端集區可以由下列資源的任何組合組成:
- NIC
- 公用 IP 位址
- 內部 IP 位址
- 虛擬機器擴展集
- 完整網域名稱 (FQDN)
- 多租用戶後端,例如 Azure App Service 和容器應用程式
在此範例中,您會建立以容器應用程式為目標的後端集區。
選取 [新增後端集區]。
開啟新的索引標籤,並瀏覽至您的容器應用程式。
在容器應用程式的 [概觀] 視窗中,尋找應用程式URL 並複製它。
返回 [後端] 索引標籤,然後在 [新增後端集區] 視窗中輸入下列值:
設定 動作 名稱 輸入 my-agw-backend-pool。 新增無目標的後端集區 選取 否。 目標類型 主機 IP 位址或 FQDN。 Target 輸入您複製的容器應用程式 URL,並移除 https:// 前置詞。 此位置是容器應用程式的 FQDN。 選取 [新增]。
在 [後端] 索引標籤上,選取 [下一步:設定]。
設定索引標籤
在 [設定] 索引標籤上,您會連線至您使用路由規則所建立的前端和後端集區。
選取 [新增路由規則]。 輸入下列值:
設定 動作 名稱 輸入 my-agw-routing-rule。 優先順序 輸入 1。 在 [接聽程式] 索引標籤上,輸入下列值:
設定 動作 接聽程式名稱 輸入 my-agw-listener。 前端 IP 選取 [公用]。 通訊協定 選取 [HTTPS] 。 如果您沒有要使用的憑證,則可以選取 [HTTP] 連接埠 輸入 443。 如果您選擇 HTTP 作為通訊協定,請輸入 80 並跳至預設/自訂網域區段。 選擇憑證 選取 [上傳憑證]。 如果您的憑證儲存在金鑰保存庫中,您可以選取 [從 Key Vault選擇憑證]。 憑證名稱 輸入憑證的名稱。 PFX 憑證檔案 選取有效的公開憑證。 密碼 輸入您的憑證密碼。 如果您要使用預設網域,請輸入下列值:
設定 動作 接聽程式類型 選取 [基本] 錯誤頁面 URL 保留為 [否] 或者,如果您想要使用自訂網域,請輸入下列值:
設定 動作 接聽程式類型 選取 [多網站] Host type 選取 [單一] 主機名稱 輸入您想要使用的自訂網域。 錯誤頁面 URL 保留為 [否] 選取 [後端目標] 索引標籤,然後輸入下列值:
切換至 [後端目標] 索引標籤,然後輸入下列值:
設定 動作 目標類型 選取您稍早建立的 my-agw-backend-pool。 後端設定 選取新增。 在 [新增後端設定] 視窗中,輸入下列值:
設定 動作 後端設定名稱 輸入 my-agw-backend-setting。 後端通訊協定 選取 [HTTPS] 。 後端連接埠 輸入 443。 使用已知的 CA 憑證 選取 [是]。 以新的主機名稱覆寫 選取 [是]。 主機名稱覆寫 選取 [從後端目標挑選主機名稱]。 建立自訂探查 選取 否。 選取 [新增],以新增後端設定。
在 [新增路由規則] 視窗中,再次選取 [新增]。
選取 [下一步:標記]。
選取 [下一步:檢閱 + 建立],然後選取 [建立]。
將私人連結新增至您的應用程式閘道
您可以藉由啟用私人連結,建立與僅限內部容器應用程式環境的安全連線,因為它可讓應用程式閘道透過虛擬網路與後端上的容器應用程式進行通訊。
建立應用程式閘道之後,請選取 [移至資源]。
從左側功能表中,選取 [私人連結],然後選取 [新增]。
輸入下列值:
設定 動作 名稱 輸入 my-agw-private-link。 私人連結子網路 選取您想要用來建立私人連結的子網路。 前端 IP 設定 選取應用程式閘道的前端 IP。 在 [私人 IP 位址設定] 底下,選取 [新增]。
選取視窗底部的 [新增]。
確認容器應用程式
在其 [概觀] 頁面上尋找應用程式閘道的公用 IP 位址,或者您可以搜尋位址。 若要搜尋,請選取 [所有資源],然後在搜尋方塊中輸入 my-container-apps-agw-pip。 然後,選取搜尋結果中的 IP。
瀏覽至應用程式閘道的公用 IP 位址。
您的要求會自動路由傳送至容器應用程式,以確認已成功建立應用程式閘道。
清除資源
當您不再需要您所建立的資源時,請刪除資源群組。 當您刪除資源群組時,也會移除所有相關資源。
刪除資源群組:
在 Azure 入口網站功能表中,選取 [資源群組],或搜尋並選取 [資源群組]。
在 [資源群組] 頁面上,搜尋並選取 my-container-apps。
在 [資源群組] 頁面上,選取 [刪除資源群組]。
在 [輸入資源群組名稱] 下方輸入 my-container-apps,然後選取 [刪除]