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

標準的な Azure HDInsight クラスターは、シングル ユーザー クラスターです。The standard Azure HDInsight cluster is a single-user cluster. これは、大規模なデータ ワークロードを構築する小規模なアプリケーション チームを抱えているほとんどの企業に適しています。It's suitable for most companies that have smaller application teams building large data workloads. ユーザーごとにオンデマンドの専用クラスターを作成し、不要になったときに破棄することができます。Each user can create a dedicated cluster on demand and destroy it when it's not needed anymore.

多くの企業では、IT チームがクラスターを管理し、複数のアプリケーション チームがクラスターを共有するモデルに移行しています。Many enterprises have moved toward a model in which IT teams manage clusters, and multiple application teams share clusters. これらの大規模企業は、Azure HDInsight での各クラスターへのマルチユーザー アクセスが必要です。These larger enterprises need multiuser access to each cluster in Azure HDInsight.

HDInsight は、管理されている方法で、一般的な ID プロバイダーである Active Directory に依存します。HDInsight relies on a popular identity provider--Active Directory--in a managed way. HDInsight を Azure Active Directory Domain Services (Azure AD DS) と統合することによって、ドメイン資格情報を使用してクラスターにアクセスできます。By integrating HDInsight with Azure Active Directory Domain Services (Azure AD DS), you can access the clusters by using your domain credentials.

HDInsight での仮想マシン (VM) は、指定されたドメインに参加しているドメインです。The virtual machines (VMs) in HDInsight are domain joined to your provided domain. そのため、HDInsight 上で実行されているすべてのサービス (Apache Ambari、Apache Hive サーバー、Apache Ranger、Apache Spark Thrift サーバーなど) は、認証済みユーザーに対してシームレスに動作します。So, all the services running on HDInsight (Apache Ambari, Apache Hive server, Apache Ranger, Apache Spark thrift server, and others) work seamlessly for the authenticated user. さらに、管理者は、Apache Ranger を使用して強力な承認ポリシーを作成し、クラスター内のリソースに対するロールベースのアクセス制御を行うことができます。Administrators can then create strong authorization policies by using Apache Ranger to provide role-based access control for resources in the cluster.

HDInsight を Active Directory と統合するIntegrate HDInsight with Active Directory

オープンソースの Apache Hadoop は、認証とセキュリティのために Kerberos プロトコルに依存しています。Open-source Apache Hadoop relies on the Kerberos protocol for authentication and security. したがって、Enterprise セキュリティ パッケージ (ESP) を使用する HDInsight クラスター ノードは、Azure AD DS によって管理されるドメインに参加済みです。Therefore, HDInsight cluster nodes with Enterprise Security Package (ESP) are joined to a domain that's managed by Azure AD DS. クラスター上の Hadoop コンポーネントには Kerberos セキュリティが構成されます。Kerberos security is configured for the Hadoop components on the cluster.

自動的に以下のものが作成されます。The following things are created automatically:

  • 各 Hadoop コンポーネントのサービス プリンシパルA service principal for each Hadoop component
  • ドメインに参加している各マシンのマシン プリンシパルA machine principal for each machine that's joined to the domain
  • このようなサービスおよびマシンのプリンシパルを格納する各クラスターの組織単位 (OU)An Organizational Unit (OU) for each cluster to store these service and machine principals

これらの点を総合すると、次の要素から成る環境をセットアップする必要があります。To summarize, you need to set up an environment with:

  • Active Directory ドメイン (Azure AD DS で管理)。An Active Directory domain (managed by Azure AD DS).
  • Azure AD DS で有効になっている Secure LDAP (LDAPS)。Secure LDAP (LDAPS) enabled in Azure AD DS.
  • 個別の仮想ネットワークを選ぶ場合の HDInsight 仮想ネットワークから Azure AD DS 仮想ネットワークへの適切なネットワーク接続。Proper networking connectivity from the HDInsight virtual network to the Azure AD DS virtual network, if you choose separate virtual networks for them. HDInsight 仮想ネットワーク内の VM は、仮想ネットワーク ピアリングを使用して Azure AD DS への通信経路を持つ必要があります。A VM inside the HDInsight virtual network should have a line of sight to Azure AD DS through virtual network peering. HDInsight と Azure AD DS が同じ仮想ネットワーク内にデプロイされている場合、接続は自動的に提供されるので、これ以上アクションは必要ありません。If HDInsight and Azure AD DS are deployed in the same virtual network, the connectivity is automatically provided, and no further action is needed.

異なるドメイン コントローラーの設定Set up different domain controllers

現在、HDInsight では、クラスターの Kerberos 認証に使用するメイン ドメイン コントローラーとして、Azure AD DS だけがサポートされています。HDInsight currently supports only Azure AD DS as the main domain controller that the cluster uses for Kerberos communication. ただし、設定によって HDInsight アクセスに対する Azure AD DS が有効にされることになる場合に限り、その他の複雑な Active Directory 設定が可能です。But other complex Active Directory setups are possible, as long as such a setup leads to enabling Azure AD DS for HDInsight access.

Azure Active Directory Domain ServicesAzure Active Directory Domain Services

Azure AD DS では、Windows Server Active Directory と完全に互換性のあるマネージド ドメインを提供します。Azure AD DS provides a managed domain that's fully compatible with Windows Server Active Directory. Microsoft は、高可用性 (HA) 設定のドメインの管理、修正プログラムの適用、監視を行います。Microsoft takes care of managing, patching, and monitoring the domain in a highly available (HA) setup. ドメイン コントローラーの管理について心配することなく、クラスターをデプロイすることができます。You can deploy your cluster without worrying about maintaining domain controllers.

ユーザー、グループ、パスワードは、Azure AD から同期されます。Users, groups, and passwords are synchronized from Azure AD. Azure AD インスタンスから Azure AD DS への一方向の同期により、同じ会社の資格情報を使用して、ユーザーがクラスターにサインインできます。The one-way sync from your Azure AD instance to Azure AD DS enables users to sign in to the cluster by using the same corporate credentials.

詳細については、Azure AD DS を使用する ESP への HDInsight クラスター構成に関する記事を参照してください。For more information, see Configure HDInsight clusters with ESP using Azure AD DS.

オンプレミス Active Directory または IaaS VM 上の Active DirectoryOn-premises Active Directory or Active Directory on IaaS VMs

自分のドメインにオンプレミス Active Directory インスタンスまたはより複雑な Active Directory 設定がある場合、Azure AD Connect を使用してそれらの ID を Azure AD と同期することができます。If you have an on-premises Active Directory instance or more complex Active Directory setups for your domain, you can sync those identities to Azure AD by using Azure AD Connect. その後、Active Directory テナント上で Azure AD DS を有効にできます。You can then enable Azure AD DS on that Active Directory tenant.

Kerberos はパスワード ハッシュに依存するため、Azure AD DS でパスワード ハッシュ同期を有効にする必要があります。Because Kerberos relies on password hashes, you must enable password hash sync on Azure AD DS.

Active Directory フェデレーション サービス (AD FS) によるフェデレーションを使用している場合は、パスワード ハッシュ同期を有効にする必要があります(推奨される設定については、こちらのビデオをご覧ください)。パスワード ハッシュ同期は、AD FS インフラストラクチャに障害が発生した場合のディザスター リカバリーに役立ちます。また、漏えいした資格情報を保護するためにも役立ちます。If you're using federation with Active Directory Federation Services (AD FS), you must enable password hash sync. (For a recommended setup, see this video.) Password hash sync helps with disaster recovery in case your AD FS infrastructure fails, and it also helps provide leaked-credential protection. 詳細については、「Azure AD Connect 同期を使用したパスワード ハッシュ同期の実装」を参照してください。For more information, see Enable password hash sync with Azure AD Connect sync.

Azure AD と Azure AD DS を使用せずに、IaaS VM 単独でオンプレミスの Azure AD または Azure AD DS を使用する構成は、ESP を使用する HDInsight クラスターではサポートされていません。Using on-premises Active Directory or Active Directory on IaaS VMs alone, without Azure AD and Azure AD DS, isn't a supported configuration for HDInsight clusters with ESP.

フェデレーションの使用時、パスワード ハッシュが正常に同期されていても認証エラーが発生する場合は、PowerShell サービス プリンシパルのクラウド パスワード認証が有効かどうかを確認します。If federation is being used and password hashes are synced correctly, but you are getting authentication failures, check if cloud password authentication is enabled for the PowerShell service principal. 有効でない場合は、Azure AD テナントにホーム領域の検出 (HRD) ポリシーを設定する必要があります。If not, you must set a Home Realm Discovery (HRD) policy for your Azure AD tenant. HRD ポリシーを確認し、設定するには:To check and set the HRD policy:

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

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

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

    Get-AzureADServicePrincipal -SearchString "Microsoft Azure Powershell"
    
  4. 存在しない場合は、サービス プリンシパルを作成します。If it doesn't exist, then create the service principal.

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

     # 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
    

次の手順Next steps