HDInsight クラスターで Private Link を有効にする

この記事では、Azure Private Link を使用して、Microsoft バックボーン ネットワーク経由でネットワークを介して HDInsight クラスターにプライベートに接続する方法について学習します。 この記事は、パブリック接続の制限に重点を置いた Azure HDInsight でのクラスター接続の制限に関する記事を拡張したものです。 HDInsight クラスターとそれに依存するリソースに対して、またはその内部でパブリック接続が必要な場合、「Azure HDInsight のネットワーク トラフィックを制御する」にあるガイドラインに従ってクラスター接続を制限することを検討してください。

Private Link は、仮想ネットワーク ピアリングが利用できない、または有効になっていないクロスネットワーク シナリオで使用できます。

Note

パブリック接続を制限することは、Private Link を有効にするための前提条件であり、同じ機能とは見なさないでください。

Private Link を使用して HDInsight クラスターに接続する機能はオプションであり、既定では無効になっています。 この機能は、Azure HDInsight でのクラスター接続の制限に関する記事で説明されているように、resourceProviderConnectionネットワーク プロパティが outbound に設定されている場合にのみ使用できます。

privateLinkenabled に設定されている場合は、内部の標準ロード バランサー (SLB) が作成され、SLB ごとに Azure Private Link サービスがプロビジョニングされます。 Private Link サービスを使用すると、プライベート エンドポイントから HDInsight クラスターにアクセスできます。

Private Link クラスターを適切に作成するには多くの手順が必要になるため、ここでそれらの概要を説明します。 以下の各手順に従って、確実にすべてを正しく設定してください。

手順 1: 前提条件を作成する

最初に、次のリソースをまだ作成していない場合はデプロイします。 次に示すように、少なくとも 1 つのリソース グループ、2 つの仮想ネットワーク、HDInsight クラスターがデプロイされるサブネットに接続するネットワーク セキュリティ グループが必要です。

Type 名前 目的
Resource group hdi-privlink-rg 共通のリソースをまとめて保持するために使用します
仮想ネットワーク hdi-privlink-cluster-vnet クラスターがデプロイされる VNET
仮想ネットワーク hdi-privlink-client-vnet クライアントからクラスターへの接続元となる VNET
ネットワーク セキュリティ グループ hdi-privlink-cluster-vnet-nsg クラスターのデプロイに必要な既定の NSG

Note

ネットワーク セキュリティ グループ (NSG) はそのままデプロイできます。クラスターのデプロイ用に NSG 規則を変更する必要はありません。

手順 2: HDInsight サブネットを構成する

  • サブネットで privateLinkServiceNetworkPolicies を無効にします。 自分の Private Link サービスのソース IP アドレスを選択するには、そのサブネット上で明示的な無効化設定 privateLinkServiceNetworkPolicies が必要です。 こちらの手順に従って、Private Link サービスのネットワーク ポリシーを無効にします。
  • サブネット上のサービス エンドポイントを有効にします。 Private Link HDInsight クラスターを正常にデプロイするには、クラスターのデプロイ前に、Microsoft.SQLMicrosoft.Storage、および Microsoft.KeyVault サービス エンドポイントをサブネットに追加することをお勧めします。 サービス エンドポイントは、ご利用の仮想ネットワークから Microsoft Azure のバックボーン ネットワーク上のサービスへのサービス トラフィックを直接ルーティングします。 Azure のバックボーン ネットワーク上でトラフィックを維持することで、サービス トラフィックに影響を与えることなく、強制トンネリングを通じて、ご利用の仮想ネットワークからの送信インターネット トラフィックの監査と監視を続けることができます。

手順 3: NAT ゲートウェイ "または" ファイアウォールをデプロイする

標準ロード バランサーでは、基本ロード バランサーの場合と同様、パブリック送信 NAT が自動的に提供されません。 Private Link クラスターには標準のロード バランサーが使用されるため、送信パブリック HDInsight の依存関係に接続するには、独自の NAT ソリューション (NAT ゲートウェイや、ファイアウォールによって提供される NAT など) を提供する必要があります。

NAT ゲートウェイをデプロイする (オプション 1)

ファイアウォールまたはネットワーク仮想アプライアンス (NVA) を NAT 用に構成しない場合は、NAT Gateway を使用することを選択できます。 作業を開始するには、仮想ネットワークの構成済みサブネットに NAT Gateway (仮想ネットワークの新しいパブリック IP アドレスを持つ) を追加します。 このゲートウェイには、仮想ネットワークの外部にトラフィックを送信する必要がある場合に、プライベート内部 IP アドレスをパブリック アドレスに変換する役割を担います。

基本的なセットアップを開始するには、次の操作を行います。

  1. Azure portal で「NAT Gateways」を検索し、[作成] をクリックします。

  2. NAT ゲートウェイに次の構成を使用します。 (ここに含まれているのは一部の構成です。他の構成には既定値を使用できます。)

    Config
    NAT ゲートウェイ名 hdi-privlink-nat-gateway
    パブリック IP プレフィックス 新しいパブリック IP プレフィックスを作成する
    パブリック IP プレフィックス名 hdi-privlink-nat-gateway-prefix
    パブリック IP プレフィックス サイズ /28 (16 個のアドレス)
    仮想ネットワーク hdi-privlink-cluster-vnet
    サブネット名 default
  3. NAT ゲートウェイのデプロイが完了したら、次の手順に進む準備が整います。

ファイアウォールを構成する (オプション 2)

基本的なセットアップを開始するには、次の操作を行います。

  1. AzureFirewallSubnet という名前の新しいサブネットを仮想ネットワークに追加します。
  2. この新しいサブネットを使用して、新しいファイアウォールを構成し、ファイアウォール ポリシーを追加します。
  3. この新しいファイアウォールのプライベート IP アドレスを、ルート テーブルの nextHopIpAddress 値として使用します。
  4. このルート テーブルを、仮想ネットワークの構成済みサブネットに追加します。

HDInsight クラスターから送信依存関係へのアクセスは引き続き必要です。 このような送信依存関係が許可されていない場合は、クラスターの作成に失敗する可能性があります。 ファイアウォールの設定の詳細については、「Azure HDInsight のネットワーク トラフィックを制御する」を参照してください。

手順 4: Private Link クラスターをデプロイする

この時点で、すべての前提条件に対処済みであり、Private Link クラスターをデプロイする準備が整っています。 次の図は、クラスターを作成する前に必要なネットワーク構成の例を示しています。 この例では、すべての送信トラフィックが、ユーザー定義のルートによって Azure Firewall に強制的に誘導されます。 クラスターを作成する前に、ファイアウォールで必要な送信依存関係を許可する必要があります。 Enterprise セキュリティ パッケージ クラスターでは、仮想ネットワーク ピアリングによって Microsoft Entra Domain Services へのネットワーク接続を提供できます。

クラスターを作成する前の Private Link 環境の図。

クラスターを作成する

次の JSON コード スニペットには、プライベート HDInsight クラスターを作成するために Azure Resource Manager テンプレートで構成する必要がある 2 つのネットワーク プロパティが含まれています。

networkProperties: {
    "resourceProviderConnection": "Outbound",
    "privateLink": "Enabled"
}

数多くの HDInsight エンタープライズ セキュリティ機能 (Private Link など) を備えた完全なテンプレートについては、HDInsight エンタープライズ セキュリティのテンプレートを参照してください。

PowerShell を使用してクラスターを作成するには、を参照してください。

Azure CLI を使用してクラスターを作成するには、を参照してください。

手順 5: プライベート エンドポイントを作成する

Azure では、Private Link クラスターのデプロイ中に、Ambari および SSH ロード バランサーの Private Link サービスが自動的に作成されます。 クラスターのデプロイ後、クライアント VNET に 2 つのプライベート エンドポイントを作成する必要があります。1 つは Ambari、もう 1 つは SSH アクセス用です。 次に、それらを、クラスターのデプロイの一環として作成された Private Link サービスにリンクします。

プライベート エンドポイントを作成するには、次の操作を行います。

  1. Azure portal を開き、「Private link」を検索します。

  2. 結果から Private link アイコンをクリックします。

  3. [プライベート エンドポイントの作成] をクリックし、次の構成を使用して Ambari プライベート エンドポイントを設定します。

    Config
    名前 hdi-privlink-cluster
    リソースの種類 Microsoft.Network/privateLinkServices
    リソース gateway-* (この値はクラスターの HDI デプロイ ID と一致する必要があります。たとえば、gateway-4eafe3a2a67e4cd88762c22a55fe4654)
    仮想ネットワーク hdi-privlink-client-vnet
    Subnet default

    Private Link 基本タブ。Private Link リソース タブの図。Private Link 仮想ネットワーク タブの図。Private Link dns エンド ポイント タブの図。Private Link タグ タブの図。Private Link レビュータブの図。

  4. 次の構成を使用してプロセスを繰り返し、SSH アクセス用に別のプライベート エンドポイントを作成します。

    Config
    名前 hdi-privlink-cluster-ssh
    リソースの種類 Microsoft.Network/privateLinkServices
    リソース headnode-* (この値はクラスターの HDI デプロイ ID と一致する必要があります。たとえば、headnode-4eafe3a2a67e4cd88762c22a55fe4654)
    仮想ネットワーク hdi-privlink-client-vnet
    Subnet default

重要

KafkaRestProxy HDInsight クラスターを使用している場合は、この追加の手順に従ってプライベート エンドポイントを有効にします

プライベート エンドポイントが作成されたら、セットアップのこのフェーズは完了です。 エンドポイントに割り当てられたプライベート IP アドレスをメモしなかった場合は、次の手順に従います。

  1. Azure portal でクライアント VNET を開きます。
  2. [プライベート エンドポイント] タブをクリックします。
  3. Ambari と SSH の両方のネットワーク インターフェイスが一覧に表示されます。
  4. それぞれをクリックし、[DNS 構成] ブレードに移動してプライベート IP アドレスを表示します。
  5. これらの IP アドレスは、クラスターに接続して DNS を適切に構成するために必要なので、メモします。

手順 6: プライベート エンドポイントを使用して接続する DNS を構成する

プライベート クラスターにアクセスするには、プライベート DNS ゾーンを使用した DNS 解決を構成できます。 Azure で管理されているパブリック DNS ゾーン azurehdinsight.net で作成される Private Link エントリは、次のとおりです。

<clustername>        CNAME    <clustername>.privatelink
<clustername>-int    CNAME    <clustername>-int.privatelink
<clustername>-ssh    CNAME    <clustername>-ssh.privatelink

次の図は、ピアリングされていないか、クラスターに直接アクセスできない仮想ネットワークからクラスターにアクセスできるように構成されたプライベート DNS エントリの例を示しています。 Azure DNS プライベート ゾーンを使用して、*.privatelink.azurehdinsight.net の完全修飾ドメイン名 (FQDN) をオーバーライドし、クライアントのネットワーク内にあるプライベート エンドポイントの IP アドレスを解決できます。 この例では、<clustername>.azurehdinsight.net の構成のみを示していますが、他のクラスター エンドポイントにも拡張されます。

Private Link アーキテクチャの図。

プライベート DNS ゾーンを使用した DNS 解決を構成するには、次のようにします。

  1. Azure プライベート DNS ゾーンを作成します。 (ここに含まれているのは一部の構成です。他のすべての構成は既定値のままにします)

    Config
    名前 privatelink.azurehdinsight.net

    プライベート dns ゾーンの図。

  2. Ambari のレコード セットをプライベート DNS ゾーンに追加します。

    Config
    名前 YourPrivateLinkClusterName
    Type A - IPv4 アドレスへのエイリアス レコード
    TTL 1
    TTL の単位 Hours
    IP アドレス Ambari アクセス用のプライベート エンドポイントのプライベート IP

    プライベート dns ゾーン追加レコードの図。

  3. SSH のレコード セットをプライベート DNS ゾーンに追加します。

    Config
    名前 YourPrivateLinkClusterName-ssh
    Type A - IPv4 アドレスへのエイリアス レコード
    TTL 1
    TTL の単位 Hours
    IP アドレス SSH アクセス用のプライベート エンドポイントのプライベート IP

    プライベート リンク dns ゾーン追加 ssh レコードの図。

重要

KafkaRestProxy HDInsight クラスターを使用している場合は、この追加の手順に従ってプライベート エンドポイント経由で接続するように DNS を構成します

  1. プライベート DNS ゾーンをクライアント VNET に関連付けるために、Virtual Network リンクを追加します。

    1. Azure portal でプライベート DNS ゾーンを開きます。
    2. [仮想ネットワーク リンク] タブをクリックします。
    3. [追加] ボタンをクリックします。
    4. 詳細を入力します: リンク名、サブスクリプション、仮想ネットワーク (使用中のクライアント VNET)
    5. [保存] をクリックします。

    仮想ネットワーク リンクの図。

手順 7: クラスターの接続を確認する

最後の手順では、クラスターへの接続をテストします。 これは分離またはプライベート クラスターであるため、パブリック IP または FQDN を使用したクラスターへのアクセスはできません。 代わりにいくつかのオプションがあります。

  • オンプレミス ネットワークからクライアント VNET への VPN アクセスを設定する
  • クライアント VNET に VM をデプロイし、この VM からクラスターにアクセスする

この例では、次の構成を使用してクライアント VNET に VM をデプロイし、接続をテストします。

Config
仮想マシン名 hdi-privlink-client-vm
Image Windows 10 Pro、バージョン 2004 - Gen1
パブリック受信ポート [選択したポートを許可する]
受信ポートの選択 RDP (3389)
... 有効な Windows 10 ライセンスを所有しています。 オン
仮想ネットワーク hdi-privlink-client-vnet
Subnet default

クライアント VM をデプロイしたら、Ambari と SSH の両方のアクセスをテストできます。

Ambari アクセスをテストするには、次のようにします。

  1. VM 上で Web ブラウザーを開きます。
  2. クラスターの標準 FQDN に移動します: https://<clustername>.azurehdinsight.net
  3. Ambari の UI が読み込まれたら、Ambari アクセス用の正しい構成になっています。

SSH アクセスをテストするには、次のようにします。

  1. コマンド プロンプトを開いてターミナル ウィンドウを表示します。
  2. ターミナル ウィンドウで、SSH を使用してクラスターに接続してみます: ssh sshuser@<clustername>.azurehdinsight.net ("sshuser" は、ご自身のクラスター用に作成した SSH ユーザーに置き換えてください)
  3. 接続できた場合、SSH アクセス用の正しい構成になっています。

HDInsight のプライベート エンドポイントを管理する

Azure HDInsight クラスターのプライベート エンドポイントを使用すると、仮想ネットワーク上のクライアントから Private Link を介してクラスターに安全にアクセスできるようになります。 仮想ネットワーク上のクライアントと HDInsight クラスター間のネットワーク トラフィックは、Microsoft バックボーン ネットワーク経由で送受信され、パブリック インターネットへの露出を避けることができます。

プライベート エンドポイント管理エクスペリエンスの図。

Private Link サービスのコンシューマー (Azure Data Factory など) は、次の 2 つの接続承認方法から選択できます。

  • 自動: サービスのコンシューマーに、HDInsight リソースに対する Azure ロールベースのアクセス制御 (RBAC) アクセス許可がある場合、コンシューマーは自動の承認方法を選択できます。 この場合、要求が HDInsight リソースに到達したときに、その HDInsight リソースからのアクションは必要なく、接続が自動的に承認されます。
  • 手動: サービスのコンシューマーに、HDInsight リソースに対する Azure RBAC アクセス許可がない場合、コンシューマーは手動の承認方法を選択できます。 この場合、接続要求は HDInsight リソース上で保留中として表示されます。 要求は、接続が確立される前に、HDInsight リソースによって手動で承認される必要があります。

プライベート エンドポイントを管理するには、Azure portal のクラスター ビューで、 [セキュリティとネットワーク] の下にある [ネットワーク] セクションに移動します。 ここでは、すべての既存の接続、接続状態、プライベート エンドポイントの詳細を確認できます。

また、既存の接続を承認、拒否、または削除することもできます。 プライベート接続を作成するときに、接続先の HDInsight サブリソース (ゲートウェイやヘッド ノードなど) を指定できます。

次の表に、HDInsight リソースのさまざまなアクションと、その結果生じるプライベート エンドポイントの接続状態を示します。 HDInsight リソースでは、後で、コンシューマーの介入なしに、プライベート エンドポイント接続の接続状態を変更することもできます。 このアクションにより、コンシューマー側のエンドポイントの状態が更新されます。

サービス プロバイダーのアクション サービス コンシューマーのプライベート エンドポイントの状態 説明
なし 保留中 接続が手動で作成されており、プライベート リンク リソースの所有者による承認を待機しています。
承認 Approved 接続が自動または手動で承認され、使用する準備が整っています。
Reject 拒否 Private Link リソースの所有者によって接続が拒否されました。
[削除] [Disconnected](切断済み) Private Link リソースの所有者によって接続が削除されました。 プライベート エンドポイントは情報が多くなり、クリーンアップのために削除する必要があります。

次の手順