Azure Container Apps とネットワーク セキュリティ グループでのカスタム VNET のセキュリティ保護

仮想ネットワークを構成するために必要なネットワーク セキュリティ グループ (NSG) は、Kubernetes で必要な設定とよく似ています。

既定の NSG 規則より厳しい規則を備えた NSG を使ってネットワークをロックダウンし、Container Apps 環境のインバウンドとアウトバウンドのすべてのトラフィックをサブスクリプション レベルで制御できます。

ワークロード プロファイル環境では、ユーザー定義ルート (UDR) と、ファイアウォールによるアウトバウンド トラフィックのセキュリティ保護がサポートされています。 外部ワークロード プロファイル環境を使っているときは、Azure Container Apps へのインバウンド トラフィックは、サブネット経由ではなく、管理対象リソース グループに存在するパブリック IP 経由でルーティングされます。 つまり、外部ワークロード プロファイル環境での NSG またはファイアウォールによるインバウンド トラフィックのロックダウンは、サポートされていません。 詳しくは、Azure Container Apps 環境でのネットワークに関する記事をご覧ください。

従量課金のみの環境では、カスタム ユーザー定義ルート (UDR) と ExpressRoute はサポートされていません。

NSG の許可規則

次の表では、NSG 許可規則のコレクションを構成する方法について説明します。 必要になる具体的な規則は、環境の種類によって異なります。

受信

Note

ワークロード プロファイルの使用時には、インバウンド NSG 規則は仮想ネットワークを通過するトラフィックにのみ適用されます。 コンテナー アプリがパブリック インターネットからのトラフィックを受け入れるように設定されている場合、受信トラフィックは仮想ネットワークではなくパブリック エンドポイントを経由します。

プロトコル ソース 送信元ポート 宛先 送信先ポート 説明
TCP クライアント IP * コンテナー アプリのサブネット1 80, 31080 HTTP の使用時にクライアント IP が Azure Container Apps にアクセスできるようにします。 31080 は、Container Apps 環境エッジ プロキシが HTTP トラフィックに応答するポートです。 内部ロード バランサーの背後にあります。
TCP クライアント IP * コンテナー アプリのサブネット1 443, 31443 HTTPS を使用するときに、クライアント IP が Azure Container Apps にアクセスできるようにします。 31443 は、Container Apps 環境エッジ プロキシが HTTPS トラフィックに応答するポートです。 内部ロード バランサーの背後にあります。
TCP AzureLoadBalancer * コンテナー アプリのサブネット 30000-327672 Azure Load Balancer にバックエンド プールのプローブを許可します。

1 環境を作成するときにパラメーターとしてこのアドレスを渡します。 たとえば、10.0.0.0/21 のようにします。
2 範囲内のポートが動的に割り当てられるため、Azure Container Apps の作成時には完全な範囲が必要です。 作成されると、必要なポートは 2 つの不変の静的な値になり、NSG ルールを更新できます。

Outbound

プロトコル ソース 送信元ポート 宛先 送信先ポート 説明
TCP コンテナー アプリのサブネット * MicrosoftContainerRegistry 443 これは、システム コンテナーに対する Microsoft コンテナー レジストリのサービス タグです。
TCP コンテナー アプリのサブネット * AzureFrontDoor.FirstParty 443 これは、MicrosoftContainerRegistry サービス タグの依存関係です。
Any コンテナー アプリのサブネット * コンテナー アプリのサブネット * コンテナー アプリのサブネット内の IP アドレス間の通信を許可します。
TCP コンテナー アプリのサブネット * AzureActiveDirectory 443 マネージド ID を使っている場合は、これが必要です。
TCP コンテナー アプリのサブネット * AzureMonitor 443 Azure Monitor を使用する場合にのみ必要です。 Azure Monitor へのアウトバウンド呼び出しを許可します。
TCP と UDP コンテナー アプリのサブネット * 168.63.129.16 53 環境で Azure DNS を使用してホスト名を解決できるようにします。
TCP コンテナー アプリのサブネット1 * コンテナー レジストリ コンテナー レジストリのポート これは、コンテナー レジストリと通信するために必要です。 たとえば、ACR を使うときは、宛先の AzureContainerRegistryAzureActiveDirectory が必要であり、プライベート エンドポイントを使わない限り、ポートはコンテナー レジストリのポートです。2
TCP コンテナー アプリのサブネット * Storage.<Region> 443 イメージをホストするために使用 Azure Container Registry する場合にのみ必要です。

1 環境を作成するときにパラメーターとしてこのアドレスを渡します。 たとえば、10.0.0.0/21 のようにします。
2 仮想ネットワーク上に構成された NSG で Azure Container Registry (ACR) を使っている場合は、ACR にプライベート エンドポイントを作成して、Azure Container Apps が仮想ネットワーク経由でイメージをプルできるようにします。 プライベート エンドポイントで構成されている場合は、ACR のための NSG 規則を追加する必要はありません。

考慮事項

  • HTTP サーバーを実行している場合は、ポート 80443 の追加が必要になる場合があります。
  • 送信 NSG 規則で Azure DNS のアドレス 168.63.128.16 を明示的に拒否しないでください。拒否すると、Container Apps 環境が機能しなくなります。