通常、組織には、データ流出のリスクを排除するために、クラスターからのエグレス (送信) ネットワーク トラフィックを規制するための厳密なセキュリティとコンプライアンスの要件があります。 既定では、Standard SKU Azure Kubernetes Service (AKS) クラスターには無制限の送信インターネット アクセスがあります。 このレベルのネットワーク アクセスでは、実行しているノードやサービスから必要に応じて外部リソースにアクセスできます。 エグレス トラフィックを制限する場合は、正常なクラスター メンテナンス タスクを維持するために、アクセスできるポートとアドレスの数を制限する必要があります。 AKS クラスターの送信ネットワークと完全修飾ドメイン名 (FQDN) 規則に関する概念ドキュメントでは、AKS クラスターに必要なエンドポイントとそのオプションのアドオンと機能の一覧を示します。
クラスターからの送信トラフィックを制限する一般的な解決策の 1 つは、 ファイアウォール デバイス を使用してファイアウォール規則に基づいてトラフィックを制限することです。 ファイアウォールは、アプリケーションが送信アクセスを必要とするが、送信要求を検査してセキュリティで保護する必要がある場合に適用されます。 必要なエグレス ルールと FQDN を 使用してファイアウォールを手動で構成するのは面倒なプロセスです。特に、クラスターブートストラップの送信依存関係のない分離された AKS クラスターを作成することが唯一の要件の場合です。
ネットワーク分離クラスターでは、データ流出のリスクを軽減するために、Microsoft Artifact Registry (MAR) からクラスター コンポーネント/イメージをフェッチする場合でも、送信ネットワークの依存関係なしで AKS クラスターをブートストラップできます。 クラスター オペレーターは、有効にするシナリオごとに許可される送信トラフィックを段階的に設定できます。
ネットワーク分離クラスターの仕組み
次の図は、ネットワーク分離クラスターの依存関係間のネットワーク通信を示しています。
AKS クラスターは、クラスターとその機能またはアドオンに必要な成果物を Microsoft Artifact Registry (MAR) からフェッチします。 このイメージ プルを使って、AKS は、新しいバージョンのクラスター コンポーネントを提供でき、重大なセキュリティの脆弱性にも対処できます。 ネットワーク分離クラスターは、MAR からプルするのではなく、クラスターに接続されているプライベート Azure Container Registry (ACR) インスタンスからそれらのイメージとバイナリをプルしようとします。 イメージが存在しない場合は、プライベート ACR は MAR からイメージをプルし、プライベート エンドポイント経由で提供するため、クラスターからパブリック MAR エンドポイントへのエグレスを有効にする必要はありません。
ネットワーク分離クラスターに関連付けられているプライベート ACR では、次の 2 つのオプションがサポートされています。
AKS マネージド ACR - このオプションでは、AKS が ACR リソースを作成、管理、調整します。 何もする必要はありません。
メモ
AKS で管理される ACR リソースがサブスクリプションに作成されます。 ブートストラップ成果物ソース用に AKS で管理されている ACR を使用してクラスターを削除する場合。 AKS で管理される ACR、プライベート リンク、プライベート エンドポイントなどの関連リソースも自動的に削除されます。 クラスターの送信の種類を
noneまたはblock以外の種類に変更した場合、--bootstrap-artifact-sourceはCacheとして保持されます。 その後、関連リソースは削除されません。Bring Your Own (BYO) ACR - BYO ACR オプションでは、ACR リソースと AKS クラスター間のプライベート リンクを持つ ACR を作成する必要があります。 レジストリのプライベート エンドポイントを構成する方法については、「Azure Private Link を使用して Azure Container Registry にプライベートで接続する」を参照してください。 また、アクセス許可を割り当て、クラスターで使用されるキャッシュ ルール、プライベート リンク、プライベート エンドポイントを管理する必要もあります。
メモ
AKS クラスターを削除するとき、または機能を無効にした後。 BYO ACR、プライベート リンク、プライベート エンドポイントは自動的に削除されません。 BYO ACR にカスタマイズされたイメージとキャッシュ ルールを追加すると、クラスターの調整後も保持されます。
ネットワーク分離クラスターを作成するには、まず、API サーバーとノード プール間のネットワーク トラフィックがプライベート ネットワーク上にのみ残っていることを確認する必要があります。次のいずれかのプライベート クラスター モードを選択できます。
- プライベート リンク ベースのクラスター - コントロール プレーンまたは API サーバーは AKS で管理される Azure リソース グループ内にあり、ノード プールはリソース グループ内にあります。 サーバーとノード プールは、API サーバー仮想ネットワーク内の Azure Private Link サービスと、AKS クラスターのサブネットで公開されているプライベート エンドポイントを介して相互に通信できます。
- API Server VNet 統合が構成されたクラスター - API Server VNet 統合で構成されたクラスターは、AKS がデプロイされている仮想ネットワーク内の委任されたサブネットに API サーバー エンドポイントを直接投影します。 API サーバー VNet 統合により、プライベート リンクやトンネルなしで、API サーバーとクラスター ノード間のネットワーク通信が可能になります。
また、AKS クラスターのエグレス パスが制御および制限されていることを確認する必要があります。次のネットワーク送信の種類のいずれかを選択できます。
- 送信の種類
none-noneが設定されている場合。 AKS はエグレス パスを自動的に構成せず、既定のルートは必要ありません。 これは、Bring Your Own (BYO) 仮想ネットワーク シナリオとマネージド仮想ネットワーク シナリオの両方でサポートされます。 独自の仮想ネットワークを使用するシナリオでは、必要に応じて明示的なエグレス パスを確立する必要があります。 - 送信の種類
block(プレビュー) -blockが設定されている場合。 AKS は、クラスターからのすべてのエグレス トラフィックをアクティブにブロックするようにネットワーク ルールを構成します。 このオプションは、送信接続を制限する必要がある高度にセキュリティで保護された環境に役立ちます。 これは、マネージド仮想ネットワーク のシナリオでサポートされています。 また、独自の仮想ネットワーク持ち込みシナリオでを使用してnone規則を追加することで、すべてのエグレス トラフィックをブロックすることで、同様の効果を実現することもできます。
メモ
noneのアウトバウンドタイプは一般利用可能です。
送信の種類 block はプレビュー段階です。
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
制限事項
Unmanagedチャネルはサポートされていません。- Windows ノード プールはまだサポートされていません。
- kubenet ネットワークはサポートされていません。
注意事項
ネットワーク分離 AKS クラスターで ノード パブリック IP を 使用している場合は、送信の種類が noneの送信トラフィックが許可されます。
エグレスを必要とする機能、アドオン、拡張機能の使用
BYO ACR を使用するネットワーク分離クラスターの場合:
- 送信の種類が
noneネットワーク分離クラスターで送信ネットワーク アクセスを必要とする AKS 機能またはアドオンを使用する場合、 このドキュメント には、各機能の送信ネットワーク要件が含まれています。 このドキュメントには、クラスターの仮想ネットワーク内から安全に接続するためのプライベート リンク統合をサポートする機能またはアドオンも列挙されています。 これらの機能にアクセスするには、プライベート エンドポイントを設定することをお勧めします。 たとえば、ネットワーク分離クラスターで Managed Prometheus (Azure Monitor ワークスペース) と Container Insights (Log Analytics ワークスペース) を使用するように プライベート エンドポイント ベースのインジェスト を設定できます。 プライベート リンク統合がこれらの機能のいずれにも使用できない場合。 その後、その機能に必要なネットワーク規則とアプリケーションルールに基づいて、 ユーザー定義のルーティング テーブルと Azure Firewall を使用してクラスターを設定できます。 - Azure Files と Blob Storage に Azure Container Storage Interface (CSI) ドライバー を使用している場合は、"networkEndpointType: privateEndpoint" を使用してカスタム ストレージ クラスを作成する必要があります。 Azure Files ストレージ クラス と Azure Blob Storage クラスの例を参照してください。
- 次の AKS クラスター拡張機能は、ネットワーク分離クラスターではまだサポートされていません。
よく寄せられる質問
ネットワーク分離クラスターと Azure Firewall の違いは何ですか?
ネットワーク分離クラスターでは、クラスターのブートストラップ プロセス全体を通じて、VNet を超えるエグレス トラフィックは必要ありません。 ネットワーク分離クラスターには、 none または blockとして送信の種類があります。 送信の種類が none に設定されている場合、AKS ではクラスターの送信接続は設定されず、ユーザーが独自に構成できます。 送信の種類が block に設定されている場合、すべての送信接続がブロックされます。
通常、ファイアウォールは、信頼されたネットワークと信頼されていないネットワーク (インターネットなど) との間にバリアを確立します。 たとえば、Azure Firewall では、送信先に基づく送信 HTTP トラフィックと HTTPS トラフィックを制限できます。 エグレス トラフィックをきめ細かく制御できますが、同時に、AKS クラスターの送信依存関係を含む FQDN へのアクセスを提供できます。 これは NSG ではできないことです。 たとえば、クラスターの送信の種類を userDefinedRouting に設定して、送信トラフィックがファイアウォールを通過するように強制し、送信トラフィックに対する FQDN 制限を構成できます。 ファイアウォールが必要な場合は多数あります。 たとえば、アプリケーションからの送信トラフィックがある場合や、エグレスとイングレスの両方のクラスター トラフィックを制御、検査、セキュリティで保護する必要がある場合などです。
まとめると、Azure Firewall は、送信要求のあるクラスターに対するエグレス制限を定義するために使用できますが、ネットワーク分離クラスターは、送信要求を完全に排除またはブロックすることで、既定でのセキュリティ態勢がさらに強化されます。
ネットワーク分離クラスターを機能させるには、許可リスト エンドポイントを設定する必要がありますか?
クラスターの作成およびブートストラップのステージでは、ネットワーク分離クラスターからの送信トラフィックは必要ありません。 AKS コンポーネントとアドオンに必要なイメージは、パブリック エンドポイント経由で Microsoft アーティファクト レジストリ (MAR) からプルされるのではなく、クラスターに接続されているプライベート ACR からプルされます。
ネットワーク分離クラスターを設定した後。 サービス エンドポイントへの送信要求を行う必要がある機能またはアドオンを有効にする場合は、Azure Private Link を利用するサービスへのプライベート エンドポイントを設定できます。
ノード プール イメージをアップグレードするために、パッケージを手動でアップグレードできますか?
パッケージ リポジトリへのエグレスに基づいてパッケージを手動でアップグレードすることはお勧めしません。 代わりに、ノード OS イメージを手動でアップグレードまたは自動アップグレードできます。 現在、ネットワーク分離クラスターでは、 NodeImage および None アップグレード チャネルのみがサポートされています。
noneまたはblock以外の送信の種類を変更しても、それでもネットワーク分離クラスターが作成されますか?
ネットワーク分離クラスターでサポートされている唯一の送信タイプは、送信タイプnone と blockです。 他の送信の種類を使用する場合でも、クラスターは関連付けられているプライベート ACR から成果物をプルできますが、エグレス トラフィックが生成される可能性があります。
次のステップ
Azure Kubernetes Service