次の方法で共有


Azure Firewall を使用して送信トラフィックを制御する

この記事では、Azure Firewall を使用して、App Service アプリからバックエンドの Azure リソースまたはその他のネットワーク リソースへの送信トラフィックをロック ダウンする方法について説明します。 この構成は、データ流出や悪意のあるプログラム実装のリスクを防ぐのに役立ちます。

既定では、App Service アプリはパブリック インターネットへの送信要求を行うことができます (たとえば、NPM.org から必要な Node.js パッケージをインストールする場合など)。 アプリが Azure 仮想ネットワークと統合されている場合は、ネットワーク セキュリティ グループを使用して、ターゲット IP アドレス、ポート、プロトコルなどの限られた範囲に送信トラフィックを制御できます。 Azure Firewall を使用すると、より詳細なレベルで送信トラフィックを制御し、Microsoft サイバー セキュリティからのリアルタイムの脅威インテリジェンスに基づいてトラフィックをフィルター処理できます。 アプリケーションとネットワークの接続ポリシーを、サブスクリプションと仮想ネットワークをまたいで一元的に作成、適用、記録することができます (Azure Firewall 機能に関するページを参照)。

App Service におけるネットワークの概念とセキュリティの強化については、ネットワーク機能に関するページと「App Service を使用した大変革: パート 6: Web アプリをセキュリティで保護する」を参照してください。

必須コンポーネント

1. 必要なファイアウォール サブネットを作成する

統合仮想ネットワークにファイアウォールをデプロイするには、AzureFirewallSubnet という名前のサブネットが必要です。

  1. Azure portal で、アプリに統合されている仮想ネットワークに移動します。
  2. 左側のナビゲーションから [サブネット]>[サブネット] を選択します。
  3. [名前] に「AzureFirewallSubnet」と入力します。
  4. [サブネットのアドレス範囲] で、既定値をそのまま使用するか、または少なくとも /26 のサイズの範囲を指定します。
  5. [保存] を選択します。

2. ファイアウォールをデプロイして IP を取得する

  1. Azure portal のメニューまたは [ホーム] ページで [リソースの作成] を選択します。

  2. 検索ボックスに「ファイアウォール」と入力し、Enter キーを押します。

  3. [ファイアウォール] を選択し、 [作成] を選択します。

  4. [ファイアウォールの作成] ページで、次の表に示すようにファイアウォールを構成します。

    設定
    リソース グループ 統合仮想ネットワークと同じリソース グループ。
    名前 任意の名前
    リージョン 統合仮想ネットワークと同じリージョン。
    ファイアウォール ポリシー [新規追加] を選択して作成します。
    Virtual Network 統合仮想ネットワークを選択します。
    パブリック IP アドレス 既存のアドレスを選択するか、[新規追加] を選択して作成します。

    Azure portal での Azure Firewall の作成のスクリーンショット。

  5. [Review + create](レビュー + 作成) をクリックします。

  6. [作成] をもう一度選択します。

    デプロイが完了するまでに数分かかります。

  7. デプロイが完了したら、自分のリソース グループに移動し、ファイアウォールを選択します。

  8. ファイアウォールの [概要] ページで、プライベート IP アドレスをコピーします。 プライベート IP アドレスは、仮想ネットワークのルーティング規則で次ホップ アドレスとして使用されます。

    Azure Firewall のプライベート IP アドレスの取得のスクリーンショット。

3. すべてのトラフィックをファイアウォールにルーティングする

仮想ネットワークを作成する場合、Azure では、そのサブネットごとに既定のルート テーブルが自動的に作成され、既定のシステム ルートがテーブルに追加されます。 この手順では、すべてのトラフィックをファイアウォールにルーティングするユーザー定義ルート テーブルを作成し、統合仮想ネットワーク内の App Service サブネットに関連付けます。

  1. Azure portal メニューで [すべてのサービス] を選択するか、または任意のページから [すべてのサービス] を検索して選択します。

  2. [ネットワーク] で、 [ルート テーブル] を選択します。

  3. [追加] を選択します。

  4. 次の例のように、ルート テーブルを構成します。

    Azure portal でのルーティング ルート テーブル作成のスクリーンショット。

    作成したファイアウォールと同じリージョンを選択していることを確認します。

  5. [Review + create](レビュー + 作成) を選択します。

  6. [作成] を選択します

  7. デプロイが完了したら、[リソースに移動] を選択します。

  8. 左側のナビゲーションから [ルート]>[追加] を選択します。

  9. 次の表に示すように、新しいルートを構成します。

    設定
    アドレス プレフィックス 0.0.0.0/0
    次ホップの種類 仮想アプライアンス
    次ホップ アドレス 2 でコピーしたファイアウォールのプライベート IP アドレス。ファイアウォールをデプロイし、その IP を取得します
  10. 左側のナビゲーションから [サブネット]>[関連付け] を選択します。

  11. [仮想ネットワーク] で、統合仮想ネットワークを選択します。

  12. [サブネット] で、App Service サブネットを選択します。

    ルート テーブルの App Service サブネットへの関連付けのスクリーンショット。

  13. [OK] を選択します。

4. Azure Firewall ポリシーを構成する

アプリからの送信トラフィックは、統合仮想ネットワークを介してファイアウォールにルーティングされるようになりました。 App Service の送信トラフィックを制御するには、ファイアウォール ポリシーにアプリケーション ルールを追加します。

  1. ファイアウォールの [概要] ページに移動し、そのファイアウォール ポリシーを選択します。

  2. [ファイアウォール ポリシー] ページの左側のナビゲーションで、[アプリケーション規則]>[規則コレクションの追加] を選択します。

  3. [ルール] で、ソース アドレスとして App Service サブネットを含むネットワーク ルールを追加し、FQDN の宛先を指定します。 次のスクリーンショットでは、FQDN の宛先が contoso.com に設定されています。

    Azure Firewall ポリシー ルール構成のスクリーンショット。

    注意

    ソース アドレスとして App Service サブネットを指定する代わりに、サブネット内のアプリのプライベート IP アドレスを直接使用することもできます。 WEBSITE_PRIVATE_IP 環境変数を使用して、サブネット内のアプリのプライベート IP アドレスを見つけることができます。

  4. [追加] を選択します。

5. 送信トラフィックを確認する

構成を確認する簡単な方法は、アプリの SCM デバッグ コンソールから curl コマンドを使用して、送信接続を確認することです。

  1. ブラウザーで、https://<app-name>.scm.azurewebsites.net/DebugConsole に移動します。

  2. コンソールで、構成したアプリケーション ルールに一致する URL を使用して curl -s <protocol>://<fqdn-address> を実行します。 次のスクリーンショットは、API からの正常な応答を示す Web サイトの例であり、IP アドレスを示しています。

    SCM デバッグ コンソールでの curl コマンドを使用した成功した送信トラフィックの確認のスクリーンショット。

  3. 構成したアプリケーション ルールに一致しない URL を使用して、curl -s <protocol>://<fqdn-address> をもう一度実行します。 次のスクリーンショットでは、応答が返されません。これは、ファイアウォールによってアプリからの送信要求がブロックされたことを示しています。

    SCM デバッグ コンソールでの curl コマンドを使用した送信トラフィックの送信のスクリーンショット。

ヒント

これらの送信要求はファイアウォールを通過するため、ファイアウォールの診断ログを有効にすることによって、ファイアウォールのログに取り込むことができます (AzureFirewallApplicationRule を有効にします)。

診断ログが有効になっている curl コマンドを実行すると、ファイアウォールのログでコマンドを見つけることができます。

  1. Azure Portal で、お使いのファイアウォールに移動します。

  2. 左側のナビゲーションから、[ログ] を選択します。

  3. [X] を選択して、ウェルカム メッセージを閉じます。

  4. [すべてのクエリ] から、[ファイアウォール ログ]>[アプリケーション ルールのログ データ] を選択します。

  5. [実行] をクリックします。 これらの 2 つのアクセス ログは、クエリ結果に表示されます。

    SCM デバッグ コンソールでの curl コマンドを使用した失敗した送信トラフィックの確認のスクリーンショット。

その他のリソース

Azure Firewall のログとメトリックを監視する