整合 ILB App Service 環境與 Azure 應用程式閘道

App Service 環境 是在客戶的 Azure 虛擬網路子網中部署 Azure App 服務。 您可以使用外部或內部端點來部署應用程式存取。 使用內部端點部署App Service環境稱為內部負載平衡器 (ILB) App Service 環境 (ASE)。

Web 應用程式防火牆可藉由檢查輸入 Web 流量來封鎖 SQL 插入、跨網站腳本、惡意代碼上傳和應用程式 DDoS 和其他攻擊,協助保護您的 Web 應用程式。 您可以從 Azure Marketplace 取得 WAF 裝置,或使用 Azure 應用程式閘道

Azure 應用程式閘道 是一種虛擬設備,可提供第 7 層負載平衡、TLS/SSL 卸除和 Web 應用程式防火牆 (WAF) 保護。 它可以接聽公用IP位址,並將流量路由傳送至您的應用程式端點。 下列資訊說明如何在 ILB App Service 環境中整合 WAF 設定的應用程式閘道與應用程式。

應用程式閘道與 ILB App Service 環境的整合位於應用層級。 當您使用 ILB App Service 環境設定應用程式閘道時,您會針對 ILB App Service 環境中的特定應用程式執行此動作。 這項技術可在單一 ILB App Service 環境中裝載安全的多租用戶應用程式。

Screenshot of High level integration diagram

在本逐步解說中,您將:

  • 建立 Azure 應用程式閘道。
  • 將應用程式閘道設定為指向 ILB App Service 環境中的應用程式。
  • 編輯指向應用程式閘道的公用 DNS 主機名。

必要條件

若要整合應用程式閘道與 ILB App Service 環境,您需要:

  • ILB App Service 環境。
  • ILB App Service 環境的私人 DNS 區域。
  • 在 ILB App Service 環境中執行的應用程式。
  • 稍後用來指向應用程式閘道的公用 DNS 名稱。
  • 如果您需要對應用程式閘道使用 TLS/SSL 加密,則需要用來繫結至應用程式閘道的有效公用憑證。

ILB App Service 環境

如需如何建立 ILB App Service 環境的詳細資訊,請參閱使用 ARM 範本在 Azure 入口網站 中建立 ASE 和建立 ASE。

  • 建立 ILB ASE 之後,預設網域為 <YourAseName>.appserviceenvironment.net

    Screenshot of ILB ASE Overview

  • 內部負載平衡器已針對輸入存取布建。 您可以在 ASE 設定 下的 IP 位址中檢查輸入位址。 您稍後可以建立對應至此 IP 位址的私人 DNS 區域。

    Screenshot of getting the inbound address from ILB ASE IP addresses settings.

私人 DNS 區域

您需要 私人 DNS 區域 才能進行內部名稱解析。 使用下表所示的記錄集,使用 ASE 名稱建立它(如需指示,請參閱快速入門 - 使用 Azure 入口網站 建立 Azure 私人 DNS 區域)。

名稱 類型
* A ASE 輸入位址
@ A ASE 輸入位址
@ SOA ASE DNS 名稱
*.scm A ASE 輸入位址

ILB ASE 上的 App Service

您必須在 ILB ASE 中建立 App Service 方案和應用程式。 在入口網站中建立應用程式時,請選取您的 ILB ASE 作為 區域

應用程式閘道的公用 DNS 名稱

若要從因特網連線到應用程式閘道,您需要可路由的功能變數名稱。 在此情況下,我使用了可路由的功能變數名稱 asabuludemo.com ,並計劃使用此域名 app.asabuludemo.com聯機到 App Service。 建立應用程式閘道之後,對應至此應用程式功能變數名稱的IP位址必須設定為 應用程式閘道公用IP位址。 使用對應至應用程式閘道的公用網域,您不需要在App Service 中設定自定義網域。 您可以使用 App Service 網域購買自訂功能變數名稱

有效的公開憑證

為了增強安全性,建議系結 TLS/SSL 憑證以進行會話加密。 若要將 TLS/SSL 憑證系結至應用程式閘道,則需要具有下列資訊的有效公用憑證。 使用 App Service 憑證,您可以購買 TLS/SSL 憑證,並以 .pfx 格式導出它。

名稱 數值 Description
一般名稱 <yourappname>.<yourdomainname>,例如: app.asabuludemo.com
*.<yourdomainname>,例如: *.asabuludemo.com
應用程式閘道的標準憑證或通配符憑證
主體別名 <yourappname>.scm.<yourdomainname>,例如: app.scm.asabuludemo.com
*.scm.<yourdomainname>,例如: *.scm.asabuludemo.com
允許連線到 App Service kudu 服務的 SAN。 如果您不想將 App Service kudu 服務發佈至因特網,這是選擇性設定。

憑證檔案應具有私鑰,並以 .pfx 格式儲存,稍後會匯入至應用程式閘道。

建立應用程式閘道

如需建立基本的應用程式閘道,請參閱教學課程:使用 Azure 入口網站 建立具有 Web 應用程式防火牆 的應用程式網關。

在本教學課程中,我們將使用 Azure 入口網站 搭配 ILB App Service 環境建立應用程式閘道。

在 Azure 入口網站 中,選取 [新增>網路> 應用程式閘道 以建立應用程式閘道。

  1. 基本設定

    在 [ 階層 ] 下拉式清單中,您可以選取 [標準 V2 ] 或 [WAF V2 ] 以在應用程式閘道上啟用 WAF 功能。

  2. 前端設定

    選取 [前端 IP 位址類型] 為 [公用]、[私人] 或 [兩者]。 如果您設定為 [私人 ] 或 [兩者],則必須在應用程式閘道子網範圍中指派靜態 IP 位址。 在此情況下,我們只會將 公用端點設定為公用IP。

    • 公用 IP 位址 - 您必須建立應用程式閘道公用存取的公用 IP 位址關聯。 記錄此 IP 位址,您必須稍後在 DNS 服務中新增記錄。

      Screenshot of getting a public IP address from the application gateway frontends setting.

  3. 後端設定

    輸入後端集區名稱,然後選取 [目標類型] 中的 [應用程式服務] 或 [IP 位址] 或 [FQDN]。 在此情況下,我們會設定為 [應用程式服務 ],然後從目標下拉式清單中選取 [App Service 名稱]。

    Screenshot of adding a backend pool name in backends setting.

  4. 組態設定

    在 [ 組態 ] 設定中,您必須選取 [新增路由規則] 圖示來新增路由規則

    Screenshot of adding a routing rule in configuration setting.

    您必須在路由規則中設定接聽程式和後端目標。 您可以新增 HTTP 接聽程式以進行概念證明部署,或新增 HTTPS 接聽程式以增強安全性。

    • 若要使用 HTTP 通訊協定連線到應用程式閘道,您可以使用下列設定來建立接聽程式:

      參數 數值 Description
      規則名稱 例如:http-routingrule 路由名稱
      接聽程式名稱 例如:http-listener 接聽程式名稱
      前端 IP 公開 針對因特網存取,將 設定為 [公用]
      通訊協定 HTTP 請勿使用 TLS/SSL 加密
      連接埠 80 默認 HTTP 埠
      接聽程式類型 多網站 允許在應用程式閘道上接聽多月臺
      Host type 多重/通配符 如果接聽程式類型設定為多網站,則設定為多個或通配符網站名稱。
      主機名稱 例如:app.asabuludemo.com 設定為 App Service 的可路由功能變數名稱

      Screenshot of HTTP Listener of the application gateway Routing Rule.

    • 若要使用 TLS/SSL 加密連線到應用程式閘道,您可以使用下列設定來建立接聽程式:

      參數 數值 Description
      規則名稱 例如:https-routingrule 路由名稱
      接聽程式名稱 例如:https-listener 接聽程式名稱
      前端 IP 公開 針對因特網存取,將 設定為 [公用]
      通訊協定 HTTPS 使用 TLS/SSL 加密
      連接埠 443 默認 HTTPS 連接埠
      Https 設定 上傳憑證 上傳憑證包含 CN 和具有 .pfx 格式的私鑰。
      接聽程式類型 多網站 允許在應用程式閘道上接聽多月臺
      Host type 多重/通配符 如果接聽程式類型設定為多網站,則設定為多個或通配符網站名稱。
      主機名稱 例如:app.asabuludemo.com 設定為 App Service 的可路由功能變數名稱

      HTTPS listener of the application gateway Routing Rule.

    • 您必須在後端目標中設定後端集區和 HTTP 設定 後端集區已在先前的步驟中設定。 選取 [ 新增 連結] 以新增 HTTP 設定。

      Screenshot of adding new link to add an H T T P setting.

    • 如下所列的 HTTP 設定:

      參數 數值 Description
      HTTP 設定名稱 例如:https-setting HTTP 設定名稱
      後端通訊協定 HTTPS 使用 TLS/SSL 加密
      後端連接埠 443 默認 HTTPS 連接埠
      使用已知的 CA 憑證 Yes ILB ASE 的預設功能變數名稱是 .appserviceenvironment.net,此網域的憑證是由公用受信任根授權單位所簽發。 在 [受信任的跟證書] 設定中,您可以設定為使用 已知的 CA 信任跟證書
      以新的主機名稱覆寫 Yes 在連線到 ILB ASE 上的應用程式時,主機名標頭將會被覆寫
      主機名稱覆寫 從後端目標挑選主機名稱 將後端集區設定為 App Service 時,您可以從後端目標挑選主機
      建立自訂探查 No 使用預設健康情況探查

      Screenshot of **Add an H T T P setting** dialog.

設定應用程式閘道與 ILB ASE 整合

若要從應用程式閘道存取 ILB ASE,您需要檢查虛擬網路是否連結至私人 DNS 區域。 如果沒有虛擬網路連結至應用程式閘道的 VNet,請新增虛擬網路連結,並遵循下列步驟。

  • 若要使用私人 DNS 區域設定虛擬網路連結,請移至私人 DNS 區域設定平面。 選取[虛擬網路連結>] [新增]

Add a virtual network link to private DNS zone.

  • 輸入連結名稱,然後選取應用程式網關所在的個別訂用帳戶和虛擬網路。

Screenshot of input link name details to virtual network links setting in private DNS zone.

  • 您可以從應用程式閘道平面中的後端健康情況確認後端健康狀態

Screenshot of confirm the backend health status from backend health.

新增公用 DNS 記錄

您必須在從因特網存取應用程式閘道時設定適當的 DNS 對應。

  • 應用程式閘道的公用IP位址可以在應用程式閘道平面的前端IP組態中找到

Application gateway frontend IP address can be found in Frontend IP configuration.

  • 例如,您可以使用 Azure DNS 服務新增記錄集,將應用程式功能變數名稱對應至應用程式閘道的公用 IP 位址。

Screenshot of adding a record set to map the app domain name to the public IP address of the application gateway.

驗證連線

  • 在計算機從因特網存取時,您可以將應用程式功能變數名稱解析驗證為應用程式閘道公用IP位址。

validate the name resolution from a command prompt.

  • 在計算機從因特網存取上,測試來自瀏覽器的 Web 存取。

Screenshot of opening a browser, access to the web.