HDInsight on AKS クラスター プールおよびクラスターからのネットワーク トラフィックを制御する
Note
Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。
提供終了日まで基本サポートのみ利用できます。
重要
現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、「Microsoft HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新については、Azure HDInsight コミュニティのフォローをお願いいたします。
HDInsight on AKS は、Azure Kubernetes Service (AKS) 上で実行されるマネージド PaaS (サービスとしてのプラットフォーム) です。 HDInsight on AKS を使用すると、コンテナーの管理と監視のオーバーヘッドなしで、Apache Spark™、Apache Flink®️、Trino などの一般的なオープン ソース分析ワークロードをデプロイできます。
既定では、HDInsight on AKS クラスターでは、ノードのネットワーク インターフェイスから宛先に到達できる場合、クラスターから任意の宛先への送信ネットワーク接続が許可されます。 つまり、クラスター リソースは、インターネットまたは仮想ネットワーク上の任意のパブリックまたはプライベート IP アドレス、ドメイン名、または URL にアクセスできます。
ただし、一部のシナリオでは、セキュリティ上、コンプライアンス上の理由から、クラスターからのエグレス トラフィックを制御または制限したい場合があります。
たとえば、次のような場合があります。
クラスターから悪意のあるサービスや望ましくないサービスにアクセスできないようにします。
送信トラフィックに対してネットワーク ポリシーまたはファイアウォール規則を適用します。
トラブルシューティングまたはコンプライアンスの目的で、クラスターからのエグレス トラフィックを監視または監査します。
エグレス トラフィックを制御する方法とツール
AKS クラスター上の HDInsight からエグレス トラフィックが流れる方法を管理するためのさまざまなオプションとツールがあります。 この一部はクラスター プール レベルで設定でき、他のものはクラスター レベルで設定できます。
ロード バランサーを使用し手送信します。 このエグレス パスを使用してクラスター プールをデプロイすると、パブリック IP アドレスがプロビジョニングされ、ロード バランサー リソースに割り当てられます。 カスタム仮想ネットワーク (VNET) は必須ではありませんが、強くお勧めします。 カスタム VNET で Azure Firewall または Network Security Groups (NSG) を使用して、ネットワークから出力されたトラフィックを管理できます。
ユーザー定義のルーティングを使用して送信します。 このエグレス パスでクラスター プールをデプロイすると、ユーザーは Azure Firewall または NAT Gateway、およびカスタム ルート テーブルを使用して、サブネットレベルでエグレス トラフィックを管理できます。 このオプションは、カスタム VNET を使用する場合にのみ利用できます。
プライベート AKS を有効にします。 クラスター プールでプライベート AKS を有効にすると、AKS API サーバーに内部 IP アドレスが割り当てられ、パブリックにアクセスできなくなります。 AKS API サーバーと HDInsight on AKS ノード プール (クラスター) との間のネットワーク トラフィックが、プライベート ネットワーク上に留まります。
プライベート イングレス クラスター。 プライベート イングレス オプションを有効にしてクラスターをデプロイすると、パブリック IP は作成されず、クラスターには同じ VNET 内のクライアントからのみアクセスできるようになります。 送信パブリック HDInsight on AKS の依存関係に接続するには、独自の NAT ソリューション (NAT ゲートウェイや、ファイアウォールによって提供される NAT など) を提供する必要があります。
以降のセクションでは、それぞれの方法について詳しく説明します。
ロード バランサーを使用した送信
ロード バランサーは、HDInsight on AKS に割り当てられたパブリック IP を経由したエグレスに使用されます。 クラスター プールにロード バランサーの送信の種類を構成すると、HDInsight on AKS によって作成されたロード バランサーからエグレスが発生する可能性があります。
Azure portal を使用して、ロード バランサー構成を使用した送信を構成できます。
この構成を選択すると、 HDInsight on AKS によって、クラスター エグレス用にプロビジョニングされたパブリック IP アドレスの作成が自動的に完了し、ロード バランサー リソースに割り当てられます。
HDInsight on AKS によって作成されたパブリック IP は、AKS によって管理されるリソースです。つまり、AKS はそのパブリック IP のライフサイクルを管理し、パブリック IP リソースに対するユーザーの直接の操作を必要としません。
クラスターが作成されると、特定のイングレス パブリック IP も作成されます。
クラスターに要求を送信できるようにするには、トラフィックを許可リストに載せる必要があります。 また、特定の規則を NSG に構成して、粒度の粗い制御を行うこともできます。
ユーザー定義のルーティングを使用した送信
Note
userDefinedRouting
の送信の種類は高度なネットワーク シナリオであり、始める前に適切なネットワーク構成が必要です。
クラスター プールの作成後に送信の種類を変更することはサポートされていません。
userDefinedRouting を設定した場合、エグレス パスは HDInsight on AKS によって自動的に構成されなくなります。 エグレス セットアップは、ユーザーが行う必要があります。
以前構成済みのサブネットがある既存の仮想ネットワークに HDInsight on AKS クラスターをデプロイし、明示的なエグレスを確立する必要があります。
このアーキテクチャでは、ファイアウォール、ゲートウェイ、プロキシなどのアプライアンスにエグレス トラフィックを明示的に送信する必要があるため、Standard ロード バランサーまたはアプライアンスに割り当てられたパブリック IP でネットワーク アドレス変換 (NAT) を処理できます。
HDInsight on AKS では、送信パブリック IP アドレスまたはアウトバウンド規則は構成されません。これは、上記のセクションで説明した、ロード バランサーの種類のクラスターを使用した送信とは異なります。 UDR がエグレス トラフィックの唯一のソースとなります。
受信トラフィックについては、プライベート クラスターを選ぶ要件 (AKS コントロール プレーンと API サーバー上のトラフィックをセキュリティで保護するため) に基づいて選択し、パブリックまたは内部ロード バランサー ベースのトラフィックを使用するために、各クラスター形状で使用可能なプライベート イングレス オプションを選択する必要があります。
userDefinedRouting
を使用した送信用クラスター プールの作成
AKS クラスター プールで HDInsight を使用し、エグレス パスとして userDefinedRouting (UDR) を選択した場合、標準ロード バランサーはプロビジョニングされません。 userDefinedRouting
が機能する前に、送信リソース用のファイアウォール規則を設定する必要があります。
重要
UDR エグレス パスは、ルート テーブルに 0.0.0.0.0/0 のルートとファイアウォールまたは NVA のネクスト ホップの送信先が必要です。 ルート テーブルには、インターネットに対するデフォルトの 0.0.0.0/0 が既に存在します。 Azure では SNAT 用のパブリック IP アドレスが必要であるため、このルートを追加するだけでは送信インターネット接続を入手できません。 AKS は、インターネットを指す 0.0.0.0.0/0 のルートを作成せず、ゲートウェイ、NVA などを指すルートを作成したことを確認します。UDR を使用する場合、受信要求用のロード バランサーのパブリック IP アドレスは、ロード バランサーのサービスの種類を構成した場合のみ作成されます。 UDR エグレス パスを使用した場合、送信要求用パブリック IP アドレスが HDInsight on AKS によって作成されることはありません。
以下の手順では、Azure Firewall を使用して、HDInsight on AKS サービスからバックエンドの Azure リソースまたはその他のネットワーク リソースへの送信トラフィックをロックダウンする方法について説明します。 この構成は、データ流出や悪意のあるプログラム実装のリスクを防ぐのに役立ちます。
Azure Firewall を使用すると、より詳細なレベルで送信トラフィックを制御し、Microsoft サイバー セキュリティからのリアルタイムの脅威インテリジェンスに基づいてトラフィックをフィルター処理できます。 サブスクリプションと仮想ネットワークをまたいでアプリケーションとネットワークの接続ポリシーを一元的に作成、適用、記録できます。
ファイアウォール規則を設定して送信接続をテストする例を次に示します
これは、ファイアウォール規則を構成し、送信接続を確認する方法の例です。
必要なファイアウォール サブネットを作成する
統合仮想ネットワークにファイアウォールをデプロイするには、AzureFirewallSubnet という名前または任意の名前のサブネットが必要です。
Azure portal で、アプリに統合されている仮想ネットワークに移動します。
左側のナビゲーションから [サブネット] > [+ サブネット] を選択します。
[名前] に「AzureFirewallSubnet」と入力します。
[サブネットのアドレス範囲] で、既定値をそのまま使用するか、または少なくとも /26 のサイズの範囲を指定します。
[保存] を選択します。
ファイアウォールをデプロイして IP を取得する
Azure portal メニュー上または [ホーム] ページから [リソースの作成] を選択します。
検索ボックスに「ファイアウォール」と入力し、Enter キーを押します。
[ファイアウォール] を選択し、 [作成] を選択します。
[ファイアウォールの作成] ページで、次の表に示すようにファイアウォールを構成します。
設定 値 リソース グループ 統合仮想ネットワークと同じリソース グループ。 名前 任意の名前 リージョン 統合仮想ネットワークと同じリージョン。 ファイアウォール ポリシー [新規追加] を選択して作成します。 仮想ネットワーク 統合仮想ネットワークを選択します。 パブリック IP アドレス 既存のアドレスを選択するか、[新規追加] を選択して作成します。 [Review + create](レビュー + 作成) をクリックします。
[作成] をもう一度選択します。 このプロセスはデプロイに数分かかります。
デプロイが完了したら、自分のリソース グループに移動し、ファイアウォールを選択します。
ファイアウォールの [概要] ページで、プライベート IP アドレスをコピーします。 プライベート IP アドレスは、仮想ネットワークのルーティング規則でネクスト ホップ アドレスとして使用されます。
すべてのトラフィックをファイアウォールにルーティングする
仮想ネットワークを作成する場合、Azure では、そのサブネットごとに既定のルート テーブルが自動的に作成され、既定のシステム ルートがテーブルに追加されます。 この手順では、すべてのトラフィックをファイアウォールにルーティングするユーザー定義ルート テーブルを作成し、統合仮想ネットワーク内の App Service サブネットに関連付けます。
Azure portal メニューで [すべてのサービス] を選択するか、または任意のページから [すべてのサービス] を検索して選択します。
[ネットワーク] で、 [ルート テーブル] を選択します。
[追加] を選択します。
次の例のように、ルート テーブルを構成します。
作成したファイアウォールと同じリージョンを選択していることを確認します。
[Review + create](レビュー + 作成) を選択します。
[作成] を選択します
デプロイが完了したら、[リソースに移動] を選択します。
左側のナビゲーションから [ルート] > [追加] を選択します。
次の表に示すように、新しいルートを構成します。
設定 Value 変換先の型 [IP アドレス] 宛先 IP アドレス/CIDR 範囲 0.0.0.0/0 ネクストホップの種類 仮想アプライアンス 次ホップ アドレス コピーしたファイアウォールのプライベート IP アドレス 左側のナビゲーションから [サブネット] > [関連付け] を選択します。
[仮想ネットワーク] で、統合仮想ネットワークを選択します。
[サブネット] で、使用する HDInsight on AKS を選択します。
[OK] を選択します。
ファイアウォール ポリシーを構成する
HDInsight on AKS サブネットからの送信トラフィックは、統合仮想ネットワークを介してファイアウォールにルーティングされるようになりました。 送信トラフィックを制御するには、ファイアウォール ポリシーにアプリケーション ルールを追加します。
ファイアウォールの [概要] ページに移動し、そのファイアウォール ポリシーを選択します。
ファイアウォール ポリシー ページの左側のナビゲーションで、ネットワーク規則およびアプリケーション ルールを追加します。 たとえば、[ネットワーク規則]>[規則コレクションの追加] を選択します。
[ルール] で、ソース アドレスとしてサブネットを含むネットワーク ルールを追加し、FQDN の宛先を指定します。 同様に、アプリケーション ルールを追加します。
- ここで指定された送信トラフィック ルールを追加する必要があります。 クラスターが機能するようにトラフィックを許可するための、アプリケーション ルールとネットワークル規則の追加については、こちらのドキュメントを参照してください。 (clusterPool の作成後に AKS ApiServer を追加する必要があるのは、clusterPool の作成後にのみ AKS ApiServer を取得できるためです。)
- クラスターからアクセスできるように、同じサブネット内の任意の依存リソースのプライベート エンドポイント (ストレージなど) を追加することもできます。
[追加] を選択します。
パブリック IP が作成されていることを確認する
ファイアウォール規則を設定すると、クラスター プールの作成時にサブネットを選択できます。
クラスター プールが作成されると、MC グループでパブリック IP が作成されていないことを確認できます。
重要
Outbound with userDefinedRouting
エグレス パスを使用してクラスター プールのセットアップでクラスターを作成する前に、クラスター プールに一致する AKS クラスターに、Virtual Network、Route テーブル、NSG (使用されている場合) など、ルーティングの定義に使用されるネットワーク リソースに対する Network Contributor
ロールを付与する必要があります。 ロールの割り当て方法の詳細については、こちらを参照してください
Note
UDR エグレス パスを使用したクラスター プールとプライベート イングレス クラスターをデプロイすると、HDInsight on AKS によって自動的にプライベート DNS ゾーンが作成され、エントリがマップされてクラスターにアクセスするための FQDN が解決されます。
プライベート AKS を使用したクラスター プールの作成
プライベート AKS の使用時、コントロール プレーンまたは API サーバーに、RFC1918 - プライベート インターネットでのアドレス割り当てのドキュメントで定義されている内部 IP アドレスがあります。 このプライベート AKS のオプションを使用すると、API サーバーと HDInsight on AKS ワークロード クラスターとの間のネットワーク トラフィックがプライベート ネットワークにのみ保持されるようにすることができます。
プライベート AKS クラスターをプロビジョニングすると、既定では AKS によって、プライベート DNS ゾーンを持つプライベート FQDN と、対応する A レコードを持つ追加のパブリック FQDN が、Azure パブリック DNS に作成されます。 エージェント ノードはプライベート DNS ゾーンの A レコードを使用し続け、API サーバーとの通信のためにプライベート エンドポイントのプライベート IP アドレスを解決します。
HDInsight on AKS によって、プライベート イングレス用に HDInsight on AKS で作成されたマネージド グループでレコードがプライベート DNS ゾーンに自動的に挿入されるためです。
プライベート イングレスを使用するクラスター
HDInsight on AKS を使用してクラスターを作成すると、誰でもアクセスできるパブリック FQDN と IP アドレスが設定されます。 プライベート イングレス機能を使用すると、AKS クラスター上のクライアントと HDInsight on AKS の間のデータ送受信をプライベート ネットワークでのみ行うことができます。
Note
この機能を使用すると、HDInsight on AKS によって、イングレス用に A レコードがプライベート DNS ゾーンに自動的に作成されます。
この機能により、パブリック インターネットからクラスターにアクセスできなくなります。 クラスターは、内部ロード バランサーとプライベート IP を取得します。 HDInsight on AKS は、クラスター プールで作成されたプライベート DNS ゾーンを使用して、クラスター仮想ネットワークに接続し、名前解決を実行します。
各プライベート クラスターには、パブリック FQDN とプライベート FQDN の 2 つの FQDN が含まれています。
パブリック FQDN: {clusterName}.{clusterPoolName}.{subscriptionId}.{region}.hdinsightaks.net
パブリック FQDN は、サブドメインを持つ CNAME のみに解決することができます。つまり、これを正しい Private DNS zone setting
と共に使用して、FQDN を最終的に正しいプライベート IP アドレスに解決できるようにする必要があります。
プライベート DNS ゾーンはプライベート FQDN を IP (privatelink.{clusterPoolName}.{subscriptionId})
に解決できるようにする必要があります。
Note
HDInsight on AKS は、クラスター プールの仮想ネットワークにプライベート DNS ゾーンを作成します。 クライアント アプリケーションが同じ仮想ネットワーク内にある場合は、プライベート DNS ゾーンをもう一度構成する必要はありません。 別の仮想ネットワークでクライアント アプリケーションを使用している場合は、仮想ネットワーク ピアリングを使用してクラスター プール仮想ネットワーク内のプライベート DNS ゾーンにバインドするか、仮想ネットワーク内のプライベート エンドポイントと、プライベート DNS ゾーンを使用して、A レコードをプライベート エンドポイントのプライベート IP に追加する必要があります。
プライベート FQDN: {clusterName}.privatelink.{clusterPoolName}.{subscriptionId}.{region}.hdinsightaks.net
プライベート FQDN は、プライベート イングレスを有効にしたクラスターにのみ割り当てられます。 これは、クラスターのプライベート IP に解決されるプライベート DNS ゾーンの A レコードです。