仮想ネットワークを構成するために必要なネットワーク セキュリティ グループ (NSG) は、Kubernetes で必要な設定によく似ています。
既定の NSG 規則よりも制限の厳しい規則を使用して NSG 経由でネットワークをセキュリティで保護し、サブスクリプション レベルでAzure Container Apps環境のすべての受信トラフィックと送信トラフィックを制御できます。
ワークロード プロファイル環境では、ユーザー定義ルート (UDR) と ファイアウォールを使用した送信トラフィックのセキュリティ保護 がサポートされています。 Azure Firewallを使用して送信トラフィックを制限するように Container Apps 用の UDR を設定する方法のガイドについては、「ユーザー定義ルートを使用してAzure Container Appsの送信トラフィックを制御するを参照してください。
外部ワークロード プロファイル環境を使用する場合、Container Apps への受信トラフィックは、サブネットではなく 、マネージド リソース グループ に存在するパブリック IP 経由でルーティングされます。 この制限は、外部ワークロード プロファイル環境で NSG またはファイアウォールを介して受信トラフィックをロックダウンすることはサポートされていないことを意味します。
従来の従量課金のみの環境では、Azure ExpressRouteはサポートされておらず、カスタム UDR のサポートは限られています。 従量課金専用環境で使用できる UDR サポートのレベルの詳細については、 FAQを参照してください。
NSG の許可規則
次の表では、NSG 許可規則のコレクションを構成する方法について説明します。 必要な特定のルールは、環境の 種類によって異なります。
受信
注
ワークロード プロファイルを使用する場合、受信 NSG ルールは、仮想ネットワークを通過するトラフィックにのみ適用されます。 パブリック インターネットからのトラフィックを受け入れるようにコンテナー アプリを設定した場合、受信トラフィックは仮想ネットワークではなくパブリック エンドポイントを経由します。
| プロトコル | ソース | 送信元ポート | 宛先 | 送信先ポート | 説明 |
|---|---|---|---|---|---|
| TCP | クライアント IP | * | コンテナー アプリのサブネット1 |
80、31080 |
HTTP を使用しているときに、クライアント IP が Container Apps にアクセスできるようにします。
31080 は、Container Apps 環境エッジ プロキシが HTTP トラフィックに応答するポートです。 内部ロード バランサーの背後にあります。 |
| TCP | クライアント IP | * | コンテナー アプリのサブネット1 |
443、31443 |
HTTPS を使用しているときに、クライアント IP が Container Apps にアクセスできるようにします。
31443 は、Container Apps 環境エッジ プロキシが HTTPS トラフィックに応答するポートです。 内部ロード バランサーの背後にあります。 |
| TCP | Azure Load Balancer | * | コンテナー アプリのサブネット |
30000-32767
2 |
Azure Load Balancer にバックエンド プールのプローブを許可します。 |
| TCP | クライアント IP | * | コンテナー アプリのサブネット | 公開されているポートと 30000-327672 |
この規則は TCP アプリにのみ適用されます。 HTTP アプリには必要ありません。 |
1 環境を作成するときに、このアドレスをパラメーターとして渡します。 たとえば、10.0.0.0/21 のようにします。
2 範囲内のポートが動的に割り当てられるようにコンテナー アプリを作成する場合は、完全な範囲が必要です。 コンテナー アプリを作成した後、必要なポートは 2 つの不変の静的な値になり、NSG ルールを更新できます。
送信
| プロトコル | ソース | 送信元ポート | 宛先 | 送信先ポート | 説明 |
|---|---|---|---|---|---|
| TCP | コンテナー アプリのサブネット | * | MicrosoftContainerRegistry |
443 |
このサービス タグは、システム コンテナー Microsoft Artifact Registry を表します。 |
| 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を使用してホスト名を解決できます。 Azure DNSへの DNS 通信は、 AzurePlatformDNS サービス タグを介してターゲットにされていない限り、NSG の対象になりません。 DNS トラフィックをブロックするには、 AzurePlatformDNS サービス タグへのトラフィックを拒否する送信規則を作成します。 |
| TCP | コンテナー アプリのサブネット1 | * | コンテナー レジストリ | コンテナー レジストリのポート | この規則は、コンテナー レジストリと通信するために必要です。 たとえば、Azure Container Registryを使用している場合は、宛先に AzureContainerRegistry と AzureActiveDirectoryが必要です。 プライベート エンドポイントを使用している場合を除き、ポートはコンテナー レジストリのポートです。2 |
| TCP | コンテナー アプリのサブネット | * | Storage.<Region> |
443 |
この規則は、コンテナー レジストリを使用してイメージをホストする場合にのみ必要です。 |
1 環境を作成するときに、このアドレスをパラメーターとして渡します。 たとえば、10.0.0.0/21 のようにします。
2 仮想ネットワーク上に構成された NSG で Container Registry を使用している場合は、コンテナー レジストリにプライベート エンドポイントを作成して、Container Apps が仮想ネットワーク経由でイメージをプルできるようにします。 プライベート エンドポイントで構成されている場合、コンテナー レジストリの NSG 規則を追加する必要はありません。
考慮事項
- HTTP サーバーを実行している場合は、ポート
80と443の追加が必要になる場合があります。 - 送信 NSG ルールの Azure DNS アドレス
168.63.129.16を明示的に拒否しないでください。 その場合、Container Apps 環境は機能しません。