HDInsight で Enterprise セキュリティ パッケージを使用する

標準的な Azure HDInsight クラスターは、シングル ユーザー クラスターです。 これは、大規模なデータ ワークロードを構築する小規模なアプリケーション チームを抱えているほとんどの企業に適しています。 ユーザーごとにオンデマンドの専用クラスターを作成し、不要になったときに破棄することができます。

多くの企業では、IT チームがクラスターを管理し、複数のアプリケーション チームがクラスターを共有するモデルに移行しています。 これらの大規模企業は、Azure HDInsight での各クラスターへのマルチユーザー アクセスが必要です。

HDInsight は、管理されている方法で、一般的な ID プロバイダーである Active Directory に依存します。 HDInsight を Microsoft Entra Domain Services と統合することによって、ドメイン資格情報を使用してクラスターにアクセスすることができます。

HDInsight での仮想マシン (VM) は、指定されたドメインに参加しているドメインです。 そのため、HDInsight 上で実行されているすべてのサービス (Apache Ambari、Apache Hive サーバー、Apache Ranger、Apache Spark Thrift サーバーなど) は、認証済みユーザーに対してシームレスに動作します。 さらに、管理者は、Apache Ranger を使用して強力な承認ポリシーを作成し、クラスター内のリソースに対するロールベースのアクセス制御を行うことができます。

HDInsight を Active Directory と統合する

オープンソースの Apache Hadoop は、認証とセキュリティのために Kerberos プロトコルに依存しています。 したがって、Enterprise セキュリティ パッケージ (ESP) を使用する HDInsight クラスター ノードは、Microsoft Entra Domain Services によって管理されるドメインに参加済みです。 クラスター上の Hadoop コンポーネントには Kerberos セキュリティが構成されます。

自動的に以下のものが作成されます。

  • 各 Hadoop コンポーネントのサービス プリンシパル
  • ドメインに参加している各マシンのマシン プリンシパル
  • このようなサービスおよびマシンのプリンシパルを格納する各クラスターの組織単位 (OU)

これらの点を総合すると、次の要素から成る環境をセットアップする必要があります。

  • Active Directory ドメイン (Microsoft Entra Domain Services によって管理されます)。 Azure HDInsight で使用するドメイン名は、39 文字以下である必要があります。
  • Microsoft Entra Domain Services で有効になっている Secure LDAP (LDAPS)。
  • 個別の仮想ネットワークを選ぶ場合の HDInsight 仮想ネットワークから Microsoft Entra Domain Services 仮想ネットワークへの適切なネットワーク接続。 HDInsight 仮想ネットワーク内の VM は、仮想ネットワーク ピアリングを使用して Microsoft Entra Domain Services への通信経路を持つ必要があります。 HDInsight と Microsoft Entra Domain Services が同じ仮想ネットワーク内にデプロイされている場合、接続は自動的に提供されるので、これ以上アクションは必要ありません。

異なるドメイン コントローラーの設定

現在、HDInsight では、クラスターの Kerberos 認証に使用するメイン ドメイン コントローラーとして、Microsoft Entra Domain Services だけがサポートされています。 ただし、設定によって HDInsight アクセスに対する Microsoft Entra Domain Services が有効にされることになる場合に限り、その他の複雑な Active Directory 設定が可能です。

Microsoft Entra Domain Services

Microsoft Entra Domain Services では、Windows Server Active Directory と完全に互換性のあるマネージド ドメインが提供されます。 Microsoft は、高可用性 (HA) 設定のドメインの管理、修正プログラムの適用、監視を行います。 ドメイン コントローラーの管理について心配することなく、クラスターをデプロイすることができます。

ユーザー、グループ、パスワードは、Microsoft Entra ID から同期されます。 Microsoft Entra インスタンスから Microsoft Entra Domain Services への一方向の同期により、同じ会社の資格情報を使用して、ユーザーがクラスターにサインインできます。

詳細については、Microsoft Entra Domain Services を使用する ESP への HDInsight クラスター構成に関するページを参照してください。

オンプレミス Active Directory または IaaS VM 上の Active Directory

自分のドメインにオンプレミス Active Directory インスタンスまたはより複雑な Active Directory 設定がある場合、Microsoft Entra Connect を使用してそれらの ID を Microsoft Entra ID と同期することができます。 その後、Active Directory テナント上で Microsoft Entra Domain Services を有効にできます。

Kerberos はパスワード ハッシュに依存するため、Microsoft Entra Domain Services でパスワード ハッシュ同期を有効にする必要があります。

Active Directory フェデレーション サービス (AD FS) によるフェデレーションを使用している場合は、パスワード ハッシュ同期を有効にする必要があります(推奨される設定については、こちらのビデオをご覧ください)。パスワード ハッシュ同期は、AD FS インフラストラクチャに障害が発生した場合のディザスター リカバリーに役立ちます。また、漏えいした資格情報を保護するためにも役立ちます。 詳細については、Microsoft Entra Connect 同期を使用したパスワード ハッシュ同期の有効化に関するページを参照してください。

Microsoft Entra ID と Microsoft Entra Domain Services を使用せずに、IaaS VM 単独でオンプレミスの Active Directory または Active Directory を使用する構成は、ESP を使用する HDInsight クラスターではサポートされていません。

Note

Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となります。 詳細については、非推奨の最新情報を参照してください。 この日以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正プログラムに限定されます。 非推奨になるモジュールは、2025 年 3 月 30 日まで引き続き機能します。

Microsoft Entra ID (旧称 Azure AD) を使用するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、「移行に関する FAQ」を参照してください。 注: MSOnline のバージョン 1.0.x では、2024 年 6 月 30 日以降に中断が発生する可能性があります。

フェデレーションの使用時に、パスワード ハッシュが正常に同期されていても認証エラーが発生する場合は、PowerShell サービス プリンシパルのクラウド パスワード認証が有効になっているかどうかを確認します。 有効でない場合は、Microsoft Entra テナントにホーム領域の検出 (HRD) ポリシーを設定する必要があります。 HRD ポリシーを確認し、設定するには:

  1. プレビューの Azure AD PowerShell モジュールをインストールします。

    Install-Module AzureAD
    
  2. グローバル管理者 (テナント管理者) の資格情報を使用して接続します。

    Connect-AzureAD
    
  3. Microsoft Azure PowerShell サービス プリンシパルが既に作成されているかどうかを確認します。

    Get-AzureADServicePrincipal -SearchString "Microsoft Azure PowerShell"
    
  4. 存在しない場合は、サービス プリンシパルを作成します。

    $powershellSPN = New-AzureADServicePrincipal -AppId 1950a258-227b-4e31-a9cf-717495945fc2
    
  5. ポリシーを作成し、このサービス プリンシパルにアタッチします

     # Determine whether policy exists
     Get-AzureADPolicy | Where {$_.DisplayName -eq "EnableDirectAuth"}
    
     # Create if not exists
     $policy = New-AzureADPolicy `
         -Definition @('{"HomeRealmDiscoveryPolicy":{"AllowCloudPasswordValidation":true}}') `
         -DisplayName "EnableDirectAuth" `
         -Type "HomeRealmDiscoveryPolicy"
    
     # Determine whether a policy for the service principal exist
     Get-AzureADServicePrincipalPolicy `
         -Id $powershellSPN.ObjectId
    
     # Add a service principal policy if not exist
     Add-AzureADServicePrincipalPolicy `
         -Id $powershellSPN.ObjectId `
         -refObjectID $policy.ID
    

次のステップ