ネットワーク分離 Azure Kubernetes Service (AKS) クラスター (プレビュー)
通常、組織には、データ流出のリスクを排除するために、クラスターからのエグレス (送信) ネットワーク トラフィックを規制するための厳密なセキュリティとコンプライアンスの要件があります。 既定では、Azure Kubernetes Service (AKS) クラスターは、送信インターネット アクセスが無制限です。 このレベルのネットワーク アクセスでは、実行しているノードやサービスから必要に応じて外部リソースにアクセスできます。 エグレス トラフィックを制限する場合は、正常なクラスター メンテナンス タスクを維持するために、アクセスできるポートとアドレスの数を制限する必要があります。 AKS クラスター用のアウトバウンド ネットワークと FQDN 規則に関する概念ドキュメントでは、AKS クラスターに必要なエンドポイントおよびそのオプションのアドオンと機能の一覧が示されています。
クラスターからのアウトバウンド トラフィックを制限する解決策の 1 つは、ファイアウォール デバイスを使い、ドメイン名に基づいてトラフィックを制限することです。 必要なエグレス規則と FQDN を使用してファイアウォールを手動で構成することは、面倒で複雑なプロセスです。
もう 1 つのソリューションであるネットワーク分離 AKS クラスター (プレビュー) を使用すると、クラスターの送信制限をすぐに設定できます。 その後、クラスター オペレーターは、有効にするシナリオごとに、許可するアウトバウンド トラフィックを設定に追加していくことができます。 したがって、ネットワーク分離 AKS クラスターにより、データ流出のリスクが減ります。
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
ネットワーク分離クラスターの仕組み
次の図は、ネットワーク分離 AKS クラスターの依存関係間のネットワーク通信を示しています。
AKS クラスターは、クラスターとその機能またはアドオンに必要なイメージを、Microsoft アーティファクト レジストリ (MAR) からプルします。 このイメージ プルを使って、AKS は、新しいバージョンのクラスター コンポーネントを提供でき、重大なセキュリティの脆弱性にも対処できます。 ネットワーク分離クラスターは、MAR からのプルの代わりに、クラスターに接続されたプライベート Azure Container Registry (ACR) インスタンスからそれらのイメージをプルしようとします。 イメージが存在しない場合は、プライベート ACR は MAR からイメージをプルし、プライベート エンドポイント経由で提供するため、クラスターからパブリック MAR エンドポイントへのエグレスを有効にする必要はありません。
ネットワーク分離クラスターを使用するプライベート ACR では、次のオプションがサポートされています。
AKS マネージド ACR - このオプションでは、AKS が ACR リソースを作成、管理、調整します。 アクセス許可を割り当てたり、ACR を管理したりする必要はありません。 AKS は、ネットワーク分離クラスターで使用されるキャッシュ規則、プライベート リンク、およびプライベート エンドポイントを管理します。 AKS マネージド ACR は、インフラストラクチャ リソース グループ内の他のリソース (ルート テーブル、Azure Virtual Machine Scale Sets など) と同じ動作に従います。 クラスター コンポーネントまたは新しいノードのブートストラップが失敗するリスクを回避するには、ACR、そのキャッシュ規則、またはそのシステム イメージを更新または削除しないでください。. AKS マネージド ACR は、クラスター コンポーネントと新しいノードが想定どおりに動作するように継続的に調整されます。
Note
AKS ネットワーク分離クラスターを削除すると、AKS マネージド ACR、プライベート リンク、プライベート エンドポイントなどの関連リソースが自動的に削除されます。
Bring Your Own (BYO) ACR - BYO ACR オプションでは、ACR リソースと AKS クラスター間のプライベート リンクを持つ ACR を作成する必要があります。 レジストリのプライベート エンドポイントを構成する方法については、「Azure Private Link を使用して Azure Container Registry にプライベートで接続する」を参照してください。
Note
AKS クラスターを削除しても、BYO ACR、プライベート リンク、プライベート エンドポイントは自動的に削除されません。 カスタマイズされたイメージとキャッシュ規則を BYO ACR に追加すると、クラスターの調整後、機能を無効にした後、または AKS クラスターを削除した後も保持されます。
ネットワーク分離 AKS クラスターを作成するときは、次のいずれかのプライベート クラスター モードを選択できます。
- プライベート リンクベースの AKS クラスター - コントロール プレーンまたは API サーバーは AKS マネージドの Azure リソース グループ内にあり、ノード プールはリソース グループ内にあります。 サーバーとノード プールは、API サーバー仮想ネットワーク内の Azure Private Link サービスと、AKS クラスターのサブネットで公開されているプライベート エンドポイントを介して相互に通信できます。
- API サーバー VNet 統合 (プレビュー) - API サーバー VNet 統合が構成されたクラスターは、API サーバー エンドポイントを、AKS がデプロイされている仮想ネットワーク内の委任されたサブネットに直接投影します。 API サーバー VNet 統合により、プライベート リンクやトンネルなしで、API サーバーとクラスター ノード間のネットワーク通信が可能になります。
制限事項
- ネットワーク分離クラスターは、Kubernetes バージョン 1.30 以上を使用する AKS クラスターでサポートされます。
- ネットワーク分離クラスターでは、ノード OS イメージの自動アップグレードの
NodeImage
チャネルのみがサポートされます - Windows ノード プールは現在、サポートされていません。
- 次の AKS クラスター拡張機能は、ネットワーク分離クラスターではまだサポートされていません。
よく寄せられる質問
ネットワーク分離クラスターと Azure Firewall の違いは何ですか?
ネットワーク分離クラスターでは、クラスターのブートストラップ プロセス全体を通じて、VNet を超えるエグレス トラフィックは必要ありません。 ネットワーク分離クラスターの送信の種類は none
または block
になります。 送信の種類が none
に設定されている場合、AKS ではクラスターの送信接続は設定されず、ユーザーが独自に構成できます。 送信の種類が block
に設定されている場合、すべての送信接続がブロックされます。
通常、ファイアウォールは、信頼されたネットワークと信頼されていないネットワーク (インターネットなど) との間にバリアを確立します。 たとえば、Azure Firewall では、送信先の FQDN に基づいて送信 HTTP および HTTPS トラフィックを制限できるため、きめ細かいエグレス トラフィック制御が可能になりますが、同時に、AKS クラスターの送信依存関係 (NSG では実行できないこと) を含む FQDN へのアクセスを提供できます。 たとえば、クラスターの送信の種類を userDefinedRouting
に設定して、送信トラフィックがファイアウォールを通過するように強制し、送信トラフィックに対する FQDN 制限を構成できます。
まとめると、Azure Firewall は、送信要求のあるクラスターに対するエグレス制限を定義するために使用できますが、ネットワーク分離クラスターは、送信要求を完全に排除またはブロックすることで、既定でのセキュリティ態勢がさらに強化されます。
ネットワーク分離クラスターを機能させるには、許可リスト エンドポイントを設定する必要がありますか?
クラスターの作成およびブートストラップのステージでは、ネットワーク分離クラスターからの送信トラフィックは必要ありません。 AKS コンポーネントとアドオンに必要なイメージは、パブリック エンドポイント経由で Microsoft アーティファクト レジストリ (MAR) からプルされるのではなく、クラスターに接続されているプライベート ACR からプルされます。
ネットワーク分離クラスターを設定した後、サービス エンドポイントへの送信要求を行う必要がある機能またはアドオンを有効にする場合は、Azure Private Link を利用するサービスにプライベート エンドポイントを設定できます。
ノード プール イメージをアップグレードするために、パッケージを手動でアップグレードできますか?
パッケージ リポジトリへのエグレスに基づくパッケージの手動アップグレードはサポートされていません。 代わりに、ノード OS イメージを自動アップグレードできます。 ネットワーク分離クラスターでは、NodeImage
ノード OS 自動アップグレード チャネルのみがサポートされます。
次のステップ
Azure Kubernetes Service