チュートリアル:Azure portal を使用して Web アプリケーション ファイアウォールのあるアプリケーション ゲートウェイを作成する

このチュートリアルでは、Azure portal を使用して、Web アプリケーション ファイアウォール (WAF) のあるアプリケーション ゲートウェイを作成する方法を示します。 WAF は、OWASP ルールを使用してアプリケーションを保護します。 こうしたルールには、SQL インジェクション、クロスサイト スクリプティング攻撃、セッション ハイジャックなどの攻撃に対する保護が含まれます。 アプリケーション ゲートウェイを作成してから、それをテストして正しく動作していることを確認します。 Azure Application Gateway では、ポートにリスナーを割り当て、ルールを作成し、バックエンド プールにリソースを追加することによって、お客様のアプリケーション Web トラフィックを特定のリソースに転送します。 わかりやすくするために、このチュートリアルでは、パブリック フロントエンド IP、このアプリケーション ゲートウェイで単一サイトをホストするための基本リスナー、バックエンド プールに使用される 2 つの Linux 仮想マシン、および基本要求ルーティング規則を使用する簡単な設定を使用します。

このチュートリアルでは、以下の内容を学習します。

  • WAF 対応のアプリケーション ゲートウェイの作成
  • バックエンド サーバーとして使用される仮想マシンの作成
  • ストレージ アカウントの作成と診断の構成
  • アプリケーション ゲートウェイのテスト

Web アプリケーション ファイアウォールの例の図。

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

Azure へのサインイン

Azure Portal ( https://portal.azure.com ) にサインインします。

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

  1. Azure portal の左側のメニューにある [リソースの作成] を選択します。 [新規作成] ウィンドウが表示されます。

  2. [ネットワーク] を選択し、おすすめのリストで [Application Gateway] を選択します。

[基本] タブ

  1. [基本] タブで、次のアプリケーション ゲートウェイの設定に以下の値を入力します。

    • [リソース グループ] :リソース グループには、myResourceGroupAG を選択します。 存在しない場合は、 [新規作成] を選択して作成します。

    • [アプリケーション ゲートウェイ名] :アプリケーション ゲートウェイの名前として「myAppGateway」と入力します。

    • [レベル] : [WAF V2] を選択します。

    • [WAF ポリシー]: [新規作成] を選択し、新しいポリシーの名前を入力して [OK] を選択します。 マネージド コア ルール セット (CRS) を含む基本の WAF ポリシーが作成されます。

      [新しいアプリケーション ゲートウェイの作成] の [基本] タブのスクリーンショット。

  2. お客様が作成するリソースの間で Azure による通信が行われるには、仮想ネットワークが必要です。 新しい仮想ネットワークを作成することも、既存の仮想ネットワークを使用することもできます。 この例では、アプリケーション ゲートウェイの作成と同時に新しい仮想ネットワークを作成します。 Application Gateway インスタンスは、個別のサブネットに作成されます。 この例では 2 つのサブネットを作成します。1 つはアプリケーション ゲートウェイ用で、もう 1 つはバックエンド サーバー用です。

    [仮想ネットワークの構成] で、[新規作成] を選択して新しい仮想ネットワークを作成します。 [仮想ネットワークの作成] ウィンドウが開いたら、次の値を入力して、仮想ネットワークと 2 つのサブネットを作成します。

    • Name:仮想ネットワークの名前として「myVNet」と入力します。

    • [サブネット名] (Application Gateway サブネット): [サブネット] グリッドには、 [既定] という名前のサブネットが表示されます。 このサブネットの名前を myAGSubnet に変更します。
      アプリケーション ゲートウェイ サブネットには、アプリケーション ゲートウェイのみを含めることができます。 その他のリソースは許可されません。

    • [サブネット名] (バックエンド サーバー サブネット): [サブネット] グリッドの 2 行目で、 [サブネット名] 列に「myBackendSubnet」と入力します。

    • [アドレス範囲] (バックエンド サーバー サブネット): [サブネット] グリッドの 2 行目に、myAGSubnet のアドレス範囲と重複しないアドレス範囲を入力します。 たとえば、myAGSubnet のアドレス範囲が 10.21.0.0/24 の場合は、myBackendSubnet のアドレス範囲として「10.21.1.0/24」と入力します。

    [OK] を選択して [仮想ネットワークの作成] ウィンドウを閉じ、仮想ネットワークの設定を保存します。

    新しいアプリケーション ゲートウェイの作成: 仮想ネットワークの作成のスクリーンショット。

  3. [基本] タブで、その他の設定の既定値をそのまま使用し、 [次へ:フロントエンド] を選択します。

[フロントエンド] タブ

  1. [フロントエンド] タブで、 [フロントエンド IP アドレスの種類][パブリック] に設定されていることを確認します。
    ユース ケースに従って、フロントエンド IP を [パブリック] または [両方] に設定できます。 この例では、パブリック フロントエンド IP を選択します。

    Note

    Application Gateway v2 SKU では、[パブリック][両方] のフロントエンド IP アドレスの種類が現在サポートされています。 [プライベート] フロントエンド IP 構成のみは、現在サポートされていません。

  2. [パブリック IP アドレス] として [新規追加] を選択し、パブリック IP アドレス名として「myAGPublicIPAddress」と入力し、 [OK] を選択します。

    新しいアプリケーション ゲートウェイの作成: フロントエンドのスクリーンショット。

  3. バックエンド を選択します。

[バックエンド] タブ

バックエンド プールは、要求を処理するバックエンド サーバーに要求をルーティングするために使用されます。 バックエンド プールは、NIC、仮想マシン スケール セット、パブリック IP、内部 IP、完全修飾ドメイン名 (FQDN)、および Azure App Service などのマルチテナント バックエンドで構成できます。 この例では、アプリケーション ゲートウェイを使用して空のバックエンド プールを作成した後、バックエンド ターゲットをバックエンド プールに追加します。

  1. [バックエンド] タブで、 [バックエンド プールの追加] を選択します。

  2. 開いた [バックエンド プールの追加] ウィンドウで、次の値を入力して空のバックエンド プールを作成します。

    • Name:バックエンド プールの名前として「myBackendPool」と入力します。
    • [ターゲットを持たないバックエンド プールを追加します] : [はい] を選択して、ターゲットを持たないバックエンド プールを作成します。 アプリケーション ゲートウェイを作成した後で、バックエンド ターゲットを追加します。
  3. [バックエンド プールの追加] ウィンドウで、 [追加] を選択してバックエンド プールの構成を保存し、 [バックエンド] タブに戻ります。

    新しいアプリケーション ゲートウェイの作成: バックエンドのスクリーンショット。

  4. [バックエンド] タブで、 [次へ:構成] を選択します。

[構成] タブ

[構成] タブで、ルーティング規則を使用して作成したフロントエンドとバックエンド プールを接続します。

  1. [ルーティング規則] 列で [ルーティング規則の追加] を選択します。

  2. 開いた [ルーティング規則の追加] ウィンドウで、 [規則名] に「myRoutingRule」と入力します。

  3. [優先度] に、優先度番号を入力します。

  4. ルーティング規則にはリスナーが必要です。 [ルーティング規則の追加] ウィンドウ内の [リスナー] タブで、リスナーの次の値を入力します。

    • [リスナー名] :リスナーの名前として「myListener」と入力します。

    • [フロントエンド IP] : [パブリック] を選択して、フロントエンド用に作成したパブリック IP を選択します。

      [リスナー] タブで他の設定の既定値をそのまま使用し、 [バックエンド ターゲット] タブを選択して、ルーティング規則の残りの部分を構成します。

    [新しいアプリケーション ゲートウェイの作成] の [リスナー] を示すスクリーンショット。

  5. [バックエンド ターゲット] タブで、 [バックエンド ターゲット][myBackendPool] を選択します。

  6. [バックエンド設定] で、[新規追加] を選択して新しいバックエンド設定を作成します。 この設定によって、ルーティング規則の動作が決まります。 開いた [Add Backend setting](バックエンド設定の追加) ウィンドウで、[Backend settings name](バックエンド設定名) として「myBackendSetting」と入力します。 ウィンドウの他の設定については既定値をそのまま使用し、[追加] を選択して [ルーティング規則の追加] ウィンドウに戻ります。

    [新しいアプリケーション ゲートウェイの作成] の [バックエンド] 設定のスクリーンショット。

  7. [ルーティング規則の追加] ウィンドウで [追加] を選択してルーティング規則を保存し、 [構成] タブに戻ります。

    [新しいアプリケーション ゲートウェイの作成] の [ルーティング規則] を示すスクリーンショット。

  8. タグ次へ:確認と作成 をクリックします。

[確認と作成] タブ

[確認と作成 ] タブの設定を確認し、 [作成] を選択して、仮想ネットワーク、パブリック IP アドレス、およびアプリケーションゲートウェイを作成します。 Azure によるアプリケーション ゲートウェイの作成には数分かかる場合があります。

次のセクションに進む前に、デプロイが正常に完了するまで待機します。

バックエンド ターゲットの追加

この例では、ターゲットのバックエンドとして仮想マシンを使用します。 既存の仮想マシンを使用することも、新しい仮想マシンを作成することもできます。 Azure がアプリケーション ゲートウェイのバックエンド サーバーとして使用する 2 つの仮想マシンを作成します。

これを行うには、次を実行します。

  1. バックエンド サーバーとして使用される 2 つの新しい Linux VM (myVMmyVM2) を作成します。
  2. NGINX を仮想マシンにインストールして、アプリケーション ゲートウェイが正常に作成されたことを確認します。
  3. バックエンド サーバーをバックエンド プールに追加します。

仮想マシンの作成

  1. Azure portal で、 [リソースの作成] を選択します。 [リソースの作成] ウィンドウが表示されます。

  2. [仮想マシン] で、[作成] を選択します。

  3. [基本] タブで、次の仮想マシンの設定に以下の値を入力します。

    • [リソース グループ] :リソース グループ名には、myResourceGroupAG を選択します。
    • [仮想マシン名] : 仮想マシンの名前として「myVM」と入力します。
    • [イメージ]: Ubuntu Server 20.04 LTS - Gen2。
    • [認証の種類]: パスワード
    • [ユーザー名]: 管理者ユーザーの名前を入力します。
    • [パスワード] : 管理者のパスワードを入力します。
    • [パブリック受信ポート] : [なし] を選択します。
  4. 他の既定値をそのまま使用し、 [Next: ディスク] を選択します。

  5. [ディスク] タブの既定値をそのまま使用し、 [Next: Networking](次へ : ネットワーク) を選択します。

  6. [ネットワーク] タブで、 [仮想ネットワーク]myVNet が選択されていること、および [サブネット]myBackendSubnet に設定されていることを確認します。

  7. [パブリック IP] で、 [なし] を選択します。

  8. 他の既定値をそのまま使用し、 [Next: 管理] を選択します。

  9. [次へ: 監視] を選択し、[起動の診断][無効] に設定します。 他の既定値をそのまま使用し、 [確認および作成] を選択します。

  10. [確認および作成] タブで、設定を確認し、検証エラーを修正してから、 [作成] を選択します。

  11. 仮想マシンの作成が完了するのを待って先に進みます。

テスト用に NGINX をインストールする

この例では、Azure がアプリケーション ゲートウェイを正常に作成したことを確認するためにのみ、仮想マシンに NGINX をインストールします。

  1. Bash Cloud Shell を開きます。 そのためには、Azure portal の上部のナビゲーション バーで [Cloud Shell] アイコンを選択して、ドロップダウン リストで [Bash] を選択します。

    Bash Cloud Shell を示しているスクリーンショット。

  2. 次のコマンドを実行して、NGINX を仮想マシンにインストールします。

     az vm extension set \
     --publisher Microsoft.Azure.Extensions \
     --version 2.0 \
     --name CustomScript \
     --resource-group myResourceGroupAG \
     --vm-name myVM \
     --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
    
  3. 2 つ目の仮想マシンを作成し、先ほど完了した手順を使用して NGINX をインストールします。 仮想マシン名とコマンドレットの --vm-name 設定に myVM2 を使用します。

バックエンド プールヘのバックエンド サーバーの追加

  1. [すべてのリソース] を選択し、myAppGateway を選択します。

  2. 左側のメニューで [バックエンド プール] を選択します。

  3. [myBackendPool] を選択します。

  4. [ターゲットの種類] の下のドロップダウン リストで [仮想マシン] を選択します。

  5. [ターゲット] で、myVM に関連付けられているネットワーク インターフェイスをドロップダウン リストから選択します。

  6. myVM2 についても同じ手順を繰り返します。

    バックエンド サーバーの追加

  7. [保存] を選択します。

  8. デプロイが完了するまで待ってから次の手順に進んでください。

アプリケーション ゲートウェイのテスト

NGINX はアプリケーション ゲートウェイを作成するのには不要ですが、Azure によってアプリケーション ゲートウェイが正常に作成されたかどうかを確認するためにインストールしました。 Web サービスを使用して、アプリケーション ゲートウェイをテストします。

  1. [概要] ページで、アプリケーション ゲートウェイのパブリック IP アドレスを見つけます。 [概要] ページ上のアプリケーション ゲートウェイのパブリック IP アドレスのスクリーンショット。

    または、[すべてのリソース] を選択し、検索ボックスに「myAGPublicIPAddress」と入力してから、検索結果でそれを選択できます。 Azure によって、 [概要] ページにパブリック IP アドレスが表示されます。

  2. そのパブリック IP アドレスをコピーし、ブラウザーのアドレス バーに貼り付けます。

  3. 応答を確認します。 応答が有効であれば、アプリケーション ゲートウェイが正常に作成され、バックエンドと正常に接続できることが保証されます。

    アプリケーション ゲートウェイのテストのスクリーンショット。

リソースをクリーンアップする

アプリケーション ゲートウェイと共に作成したリソースが不要になったら、リソース グループを削除します。 リソース グループを削除することで、アプリケーション ゲートウェイとそのすべての関連リソースも削除します。

リソース グループを削除するには:

  1. Azure portal の左側のメニューにある [リソース グループ] を選択します。
  2. [リソース グループ] ページで、リストの myResourceGroupAG を探して選択します。
  3. [リソース グループ] ページで、 [リソース グループの削除] を選択します。
  4. [TYPE THE RESOURCE GROUP NAME](リソース グループ名を入力してください) に「myResourceGroupAG」と入力し、 [削除] を選択します。

次のステップ