ILB App Service Environment を Azure Application Gateway と統合する

App Service Environment は、ユーザーの Azure 仮想ネットワークのサブネットに Azure App Service をデプロイしたものです。 アプリへのアクセスには、外部エンドポイントまたは内部エンドポイントを使用してデプロイできます。 内部エンドポイントを使用した App Service 環境のデプロイは、内部ロード バランサー (ILB) App Service 環境 (ASE) と呼ばれます。

Web アプリケーション ファイアウォール は、着信する Web トラフィックを検査して、SQL インジェクション、クロスサイト スクリプティング、マルウェアのアップロード、アプリケーション DDoS、およびその他の攻撃をブロックすることにより、Web アプリケーションのセキュリティを確保するのに役立ちます。 Azure Marketplace から WAF デバイスを取得することも、Azure Application Gateway を使用することもできます。

Azure Application Gateway は、レイヤー 7 負荷分散、TLS/SSL オフロード、および Web アプリケーション ファイアウォール (WAF) 保護を提供する仮想アプライアンスです。 これは、パブリック IP アドレスでリッスンし、トラフィックをアプリケーション エンドポイントにルーティングします。 以下では、WAF で構成されたアプリケーション ゲートウェイを ILB App Service 環境のアプリと統合する方法について説明します。

アプリケーション ゲートウェイと ILB App Service 環境の統合は、アプリ レベルで行われます。 アプリケーション ゲートウェイを ILB App Service 環境で構成する場合、ILB App Service 環境の特定のアプリに対して行うことになります。 この手法を使うと、単一の ILB App Service 環境で、セキュリティ保護されたマルチテナント アプリケーションをホストできます。

Screenshot of High level integration diagram

このチュートリアルでは次を行います。

  • Azure Application Gateway を作成します。
  • ILB App Service 環境上のアプリを指すように Application Gateway を構成します。
  • アプリケーション ゲートウェイを指すパブリック DNS ホスト名を編集します。

前提条件

Application Gateway を ILB App Service 環境と統合するには、次のものが必要です。

  • ILB App Service 環境。
  • ILB App Service 環境のプライベート DNS ゾーン。
  • ILB App Service 環境で実行するアプリ。
  • 後でアプリケーション ゲートウェイを指すために使われるパブリック DNS 名。
  • アプリケーション ゲートウェイに TLS/SSL 暗号化を使用する必要がある場合は、アプリケーション ゲートウェイにバインドするために使用される有効な公開証明書が必要です。

ILB App Service 環境

ILB App Service 環境を作成する方法の詳細については、「Azure portal で ASE を作成する」および「ARM テンプレートを使用して 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 portal を使用して Azure プライベート DNS ゾーンを作成する」を参照してください)。

Name Type
* 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 形式でエクスポートできます。

名前 説明
共通名 <yourappname>.<yourdomainname> (例: app.asabuludemo.com)
または *.<yourdomainname>、例: *.asabuludemo.com
アプリケーション ゲートウェイの標準証明書またはワイルドカード証明書
サブジェクトの別名 <yourappname>.scm.<yourdomainname> (例: app.scm.asabuludemo.com)
または *.scm.<yourdomainname>、例: *.scm.asabuludemo.com
App Service kudu Service に接続することを許可する SAN。 App Service kudu サービスをインターネットに発行しない場合は、省略可能な設定です。

証明書ファイルには秘密キーがあり、.pfx 形式で保存する必要があります。後でアプリケーション ゲートウェイにインポートされます。

アプリケーション ゲートウェイの作成

基本的なアプリケーション ゲートウェイの作成については、「チュートリアル: Azure portal を使用して Web アプリケーション ファイアウォールのあるアプリケーション ゲートウェイを作成する」を参照してください。

このチュートリアルでは、Azure portal を使用して、ILB App Service 環境でアプリケーションゲートウェイを作成します。

Azure portal で、 [新規]>[ネットワーク]>[アプリケーション ゲートウェイ] を選択してアプリケーション ゲートウェイを作成します。

  1. 基本設定

    [レベル] ドロップダウン リストで、[Standard 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. バックエンド設定

    バックエンド プール名を入力し、 [ターゲットの種類][App Services] または [IP アドレスまたは FQDN] を選択します。 この場合、 [App Services] に設定し、ターゲット ドロップダウン リストから App Service 名を選択します。

    Screenshot of adding a backend pool name in backends setting.

  4. 構成設定

    [構成] 設定で、[ルーティング規則の追加] アイコンを選択して、ルーティング規則を追加する必要があります。

    Screenshot of adding a routing rule in configuration setting.

    ルーティング規則で、リスナーバックエンド ターゲットを構成する必要があります。 HTTPS リスナーは、概念実証デプロイやセキュリティ強化のために追加できます。

    • HTTP プロトコルを使用してアプリケーション ゲートウェイに接続するには、次の設定を使用してリスナーを作成します。

      パラメーター 価値 説明
      規則の名前 例: http-routingrule ルーティング名
      リスナー名 例: http-listener リスナー名
      フロントエンド IP パブリック インターネット アクセスの場合は、[パブリック] に設定します
      Protocol HTTP TLS/SSL 暗号化を使用しない
      Port 80 既定の HTTP ポート
      リスナーの種類 マルチ サイト アプリケーション ゲートウェイでマルチサイトのリッスンを許可する
      ホストの種類 複数またはワイルドカード リスナーの種類がマルチサイトに設定されている場合は、複数、またはワイルドカード Web サイト名に設定します。
      ホスト名 例: app.asabuludemo.com App Service のルーティング可能なドメイン名に設定します。

      Screenshot of HTTP Listener of the application gateway Routing Rule.

    • TLS/SSL 暗号化を使用してアプリケーション ゲートウェイに接続するには、次の設定を使用してリスナーを作成します。

      パラメーター 価値 説明
      規則の名前 例: https-routingrule ルーティング名
      リスナー名 例: https-listener リスナー名
      フロントエンド IP パブリック インターネット アクセスの場合は、[パブリック] に設定します
      Protocol HTTPS TLS/SSL 暗号化を使用する
      Port 443 既定の HTTPS ポート
      HTTPS 設定 証明書のアップロード CN と、.pfx 形式の秘密キーが含まれている証明書をアップロードします。
      リスナーの種類 マルチ サイト アプリケーション ゲートウェイでマルチサイトのリッスンを許可する
      ホストの種類 複数またはワイルドカード リスナーの種類がマルチサイトに設定されている場合は、複数、またはワイルドカード Web サイト名に設定します。
      ホスト名 例: 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 設定が表示されます。

      パラメーター 価値 説明
      HTTP 設定名 例: https-setting HTTP 設定名
      バックエンド プロトコル HTTPS TLS/SSL 暗号化を使用する
      バックエンド ポート 443 既定の HTTPS ポート
      既知の CA 証明書を使用する Yes ILB ASE の既定のドメイン名は .appserviceenvironment.net です。このドメインの証明書は、信頼された公開ルート機関によって発行されます。 [信頼されたルート証明書] 設定では、既知の CA の信頼されたルート証明書を使用するように設定できます。
      新しいホスト名でオーバーライドする はい ILB ASE 上のアプリに接続すると、ホスト名ヘッダーが上書きされます。
      [ホスト名の上書き] バックエンド ターゲットからホスト名を選択する バックエンド プールを App Service に設定する場合は、バックエンド ターゲットからホストを選択できます。
      カスタム プローブを作成する いいえ 既定の正常性プローブを使用する

      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.