ユーザー定義のルート を使用して送信トラフィックを制御する

Note

この機能は、ワークロード プロファイル環境型でのみサポートされます。 ユーザー定義ルートは、内部の Azure Container Apps 環境でのみ機能します。

この記事では、Azure Firewall でユーザー定義ルート (UDR) を使用して、Container Apps からバックエンドの Azure リソースまたはその他のネットワーク リソースへの送信トラフィックをロック ダウンする方法について説明します。

Azure では、作成時に仮想ネットワークの既定のルート テーブルが作成されます。 ユーザー定義ルート テーブルを実装することで、仮想ネットワーク内でのトラフィックのルーティング方法を制御できます。 このガイドでは、Azure Firewall を使用して送信トラフィックを制限するために、Container Apps 仮想ネットワークに UDR を設定します。

また、Azure Firewall の代わりに、NAT ゲートウェイなどのサード パーティ製アプライアンスを使用することもできます。

詳しくは、Azure Container Apps でのネットワークに関する記事の「Azure Firewall を使用した UDR の構成」をご覧ください。

前提条件

  • ワークロード プロファイル環境: カスタム仮想ネットワークと統合されたワークロード プロファイル環境。 詳細については、「ワークロード プロファイル環境でコンテナー アプリ環境を作成する方法のガイド」を参照してください。

  • curl をサポート: コンテナー アプリには、curl コマンドをサポートするコンテナーが必要です。 このハウツーでは、 curl を使用して、コンテナー アプリが正しくデプロイされていることを確認します。 curl がデプロイされたコンテナー アプリがない場合は、 curlmcr.microsoft.com/k8se/quickstart:latest をサポートする次のコンテナーをデプロイできます。

ファイアウォール サブネットを作成する

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

  1. Azure portal で、アプリに統合されている仮想ネットワークを開きます。

  2. 左側のメニューから [サブネット] を選択してから、 [+サブネット] を選択します。

  3. 次の値を入力します。

    設定 アクション
    名前 AzureFirewallSubnet」と入力します。
    サブネットのアドレス範囲 既定値を使用するか、 サブネット範囲 /26 以上 を指定します。
  4. [保存] を選びます。

ファイアウォールをデプロイする

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

  2. ファイアウォール を検索します。

  3. [ファイアウォール] を選びます。

  4. [作成] を選択します。

  5. [ファイアウォールの作成] ページで、次の設定を使用してファイアウォールを構成します。

    設定 操作
    リソース グループ 統合仮想ネットワークと同じリソース グループを指定します。
    名前 希望の名前を入力します。
    リージョン 統合仮想ネットワークと同じリージョンを選択します。
    ファイアウォール ポリシー [新規追加] を選択して作成します。
    Virtual Network 統合仮想ネットワークを選択します。
    パブリック IP アドレス 既存のアドレスを選択するか、[新規追加] を選択して作成します。
  6. [Review + create](レビュー + 作成) を選択します。 検証が終了したら、 [作成] を選択します。 検証ステップは、完了までに数分かかる場合があります。

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

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

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

Azure の仮想ネットワークでは、ネットワークの作成時に既定のルート テーブルが配置されます。 ユーザー定義ルート テーブルを実装することで、仮想ネットワーク内でのトラフィックのルーティング方法を制御できます。 次の手順では、すべてのトラフィックを Azure Firewall にルーティングする UDR を作成します。

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

  2. ルート テーブル を検索します。

  3. ルート テーブル を選択します。

  4. [作成] を選択します。

  5. 次の値を入力します。

    設定 操作
    リージョン お使いの仮想ネットワークのリージョンを選択します。
    名前 名前を入力します。
    ゲートウェイのルートを伝達する [いいえ] を選択します
  6. [Review + create](レビュー + 作成) を選択します。 検証が終了したら、 [作成] を選択します。

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

  8. 左側のメニューから [ルート]を選択し、[追加] を選択して新しいルート テーブルを作成します

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

    設定 操作
    アドレス プレフィックス 0.0.0.0/0」と入力します
    次ホップの種類 [仮想アプライアンス] を選択します
    次ホップ アドレス [ファイアウォール のデプロイ] で保存 したファイアウォールプライベート IPを入力します。
  10. [追加] を選択して、ルートを作成します。

  11. 左側のメニューから[サブネット] を選択したあと、[関連付け] を選択して、ルート テーブルをコンテナー アプリのサブネットに関連付けます。

  12. 次の値を使用して[サブネットの関連付け] を設定します。

    設定 アクション
    仮想ネットワーク お使いのコンテナー アプリの仮想ネットワークを選択します。
    サブネット お使いのコンテナー アプリのサブネットを選択します。
  13. [OK] を選択します。

ファイアウォール ポリシーを構成する

Note

Azure Container Apps で Azure Firewall で UDR を使用する場合は、ファイアウォールの許可リストに特定の FQDN のタグ とサービス タグを追加する必要があります。 必要なサービス タグを判断するには、「Azure Firewall を使用した UDR の構成」を参照してください。

これで、コンテナー アプリからのすべての送信トラフィックがファイアウォールにルーティングされます。 現時点では、ファイアウォールは引き続きすべての送信トラフィックを許可します。 許可または拒否される送信トラフィックを管理するには、ファイアウォール ポリシーを構成する必要があります。

  1. Azure Firewall リソースの [概要] ページで、[ファイアウォール ポリシー] 選択します

  2. ファイアウォール ポリシー ページの左側にあるメニューから、[アプリケーション ルール]選択します。

  3. [規則コレクションの追加] を選択します。

  4. 規則コレクション の次の値を入力します。

    設定 アクション
    名前 [コレクション名]を入力する
    規則コレクションの種類 [アプリケーション] を選択する
    優先順位 優先度を入力します (例: 110)
    規則コレクションのアクション [許可] を選択します
    ルール コレクション グループ [DefaultApplicationRuleCollectionGroup]を選択する
  5. [規則] で、次の値を入力する

    設定 アクション
    名前 規則の名前を入力する
    ソースの種類 [IP アドレス] を選択する
    ソース *」と入力します
    プロトコル http: 80、https: 443」と入力する
    変換先の型 [FQDN] を選びます。
    宛先 mcr.microsoft.com*.data.mcr.microsoft.com」と入力します。 ACR を使用している場合は、 [ACR アドレス] と [*.blob.core.windows.net] を追加します。
    操作 [許可] を選択します

    Note

    Docker Hub レジストリ を使用していて、ファイアウォール経由でアクセスする場合は、ルールの同期先リストに次の FQDN を追加する必要があります: hub.docker.comregistry-1.docker.io、および production.cloudflare.docker.com

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

ファイアウォールで送信トラフィックがブロックされていることを確認する

ファイアウォール構成が正しく設定されていることを確認するには、アプリのデバッグ コンソールから curl コマンドを使用します。

  1. Azure Firewall で構成されているコンテナー アプリに移動します。

  2. 左側のメニューから [コンソール]を選択し、 curl コマンドをサポートするコンテナーを選択します。

  3. スタートアップ コマンドの選択 メニューで、/bin/sh を選択し、[接続]を選択します。

  4. コンソールで [curl -s https://mcr.microsoft.com] を実行します。 ファイアウォール ポリシーの許可リストに mcr.microsoft.com を追加すると、正常な応答が表示されます。

  5. example.com など、どの同期先規則にも一致しない URL に対して [curl -s https://<FQDN_ADDRESS>] を実行します。 curl -s https://example.com はコマンド例です。 応答は表示されません。これは、ファイアウォールが要求をブロックしたことを示します。

次のステップ