Azure Container Apps とネットワーク セキュリティ グループでのカスタム VNET のセキュリティ保護
仮想ネットワークを構成するために必要なネットワーク セキュリティ グループ (NSG) は、Kubernetes で必要な設定とよく似ています。
既定の NSG 規則より厳しい規則を備えた NSG を使ってネットワークをロックダウンし、Container Apps 環境のインバウンドとアウトバウンドのすべてのトラフィックをサブスクリプション レベルで制御できます。
ワークロード プロファイル環境では、ユーザー定義ルート (UDR) と、ファイアウォールによるアウトバウンド トラフィックのセキュリティ保護がサポートされています。 外部ワークロード プロファイル環境を使っているときは、Azure Container Apps へのインバウンド トラフィックは、サブネット経由ではなく、管理対象リソース グループに存在するパブリック IP 経由でルーティングされます。 つまり、外部ワークロード プロファイル環境での NSG またはファイアウォールによるインバウンド トラフィックのロックダウンは、サポートされていません。 詳しくは、Azure Container Apps 環境でのネットワークに関する記事をご覧ください。
従量課金のみの環境では、カスタム ユーザー定義ルート (UDR)。 従量課金のみの環境では、高速ルートはサポートされず、カスタム ユーザー定義ルート (UDR) のサポートは制限されています。 従量課金のみの環境で使用できる UDR サポートのレベルの詳細については、 FAQを参照してください。
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-32767 2 |
Azure Load Balancer にバックエンド プールのプローブを許可します。 |
1 環境を作成するときにパラメーターとしてこのアドレスを渡します。 たとえば、10.0.0.0/21
のようにします。
2 範囲内のポートが動的に割り当てられるため、Azure Container Apps の作成時には完全な範囲が必要です。 作成されると、必要なポートは 2 つの不変の静的な値になり、NSG ルールを更新できます。
発信
プロトコル | ソース | 送信元ポート | 宛先 | 送信先ポート | 説明 |
---|---|---|---|---|---|
TCP | コンテナー アプリのサブネット | * | MicrosoftContainerRegistry |
443 |
これは、システム コンテナーに対する Microsoft コンテナー レジストリのサービス タグです。 |
TCP | コンテナー アプリのサブネット | * | AzureFrontDoor.FirstParty |
443 |
これは、MicrosoftContainerRegistry サービス タグの依存関係です。 |
[任意] | コンテナー アプリのサブネット | * | コンテナー アプリのサブネット | * | コンテナー アプリのサブネット内の IP アドレス間の通信を許可します。 |
TCP | コンテナー アプリのサブネット | * | AzureActiveDirectory |
443 |
マネージド ID を使っている場合は、これが必要です。 |
TCP | コンテナー アプリのサブネット | * | AzureMonitor |
443 |
Azure Monitor を使用する場合にのみ必要です。 Azure Monitor へのアウトバウンド呼び出しを許可します。 |
TCP と UDP | コンテナー アプリのサブネット | * | 168.63.129.16 |
53 |
環境で Azure DNS を使用してホスト名を解決できるようにします。 |
TCP | コンテナー アプリのサブネット1 | * | コンテナー レジストリ | コンテナー レジストリのポート | これは、コンテナー レジストリと通信するために必要です。 たとえば、ACR を使うときは、宛先の AzureContainerRegistry と AzureActiveDirectory が必要であり、プライベート エンドポイントを使わない限り、ポートはコンテナー レジストリのポートです。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 サーバーを実行している場合は、ポート
80
と443
の追加が必要になる場合があります。 - 送信 NSG 規則で Azure DNS のアドレス
168.63.129.16
を明示的に拒否しないでください。拒否すると、Container Apps 環境が機能しなくなります。