仮想ネットワークを構成するために必要なネットワーク セキュリティ グループ (NSG) は、Kubernetes で必要な設定によく似ています。
既定の NSG 規則より厳しい規則を備えた NSG を使ってネットワークをロックダウンし、Container Apps 環境のインバウンドとアウトバウンドのすべてのトラフィックをサブスクリプション レベルで制御できます。
ワークロード プロファイル環境では、ユーザー定義ルート (UDR) と、ファイアウォールによるアウトバウンド トラフィックのセキュリティ保護がサポートされています。
注
Azure Firewall を使用して送信トラフィックを制限するように Container Apps で UDR を設定する方法のガイドについては、 Container Apps と Azure Firewall の方法に関するページを参照してください。
外部ワークロード プロファイル環境を使用する場合、Azure Container Apps への受信トラフィックは、サブネットを経由するのではなく、 マネージド リソース グループ に存在するパブリック IP を経由してルーティングされます。 この制限は、外部ワークロード プロファイル環境で NSG またはファイアウォール経由の受信トラフィックをロックダウンすることはサポートされていないことを意味します。 詳細については、「ユーザー定義のルートを使用して送信トラフィックを制御する」を参照してください。
従来の従量課金のみの環境では、高速ルートはサポートされておらず、カスタム ユーザー定義ルート (UDR) のサポートは限られています。 従量課金専用環境で使用できる UDR サポートのレベルの詳細については、 FAQを参照してください。
NSG の許可規則
次の表では、NSG 許可規則のコレクションを構成する方法について説明します。 必要になる具体的な規則は、環境の種類によって異なります。
受信
注
ワークロード プロファイルを使用する場合、受信 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 にバックエンド プールのプローブを許可します。 |
| TCP | クライアント IP | * | コンテナー アプリのサブネット | 公開されているポートと 30000-327672 |
この規則は TCP アプリにのみ適用されます。 このルールは、HTTP アプリには必要ありません。 |
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 を使用してホスト名を解決できるようにします。 注: AzurePlatformDNS サービス タグを使用する場合を除き、Azure DNS への DNS 通信は NSG の対象になりません。 DNS トラフィックをブロックするには、 AzurePlatformDNS サービス タグへのトラフィックを拒否する送信規則を作成します。 |
| 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 ルールで
168.63.129.16Azure DNS アドレスを明示的に拒否しないでください。または、Container Apps 環境が機能しません。