在 HDInsight 中使用企业安全性套餐

标准 Azure HDInsight 群集是单用户群集。 适用于大多数使用小型应用程序团队来构建大数据工作负荷的公司。 每个用户可以按需创建专用群集,并在不再需要时将其销毁。

许多企业已转向这样一种模型:群集由 IT 团队管理,并由多个应用程序团队共享。 这些较大型企业需要在 Azure HDInsight 中实现对每个群集的多用户访问。

HDInsight 以托管方式依赖于常用的标识提供者 - Active Directory。 通过将 HDInsight 与 icrosoft Entra 域服务集成,可使用你的域凭据来访问群集。

HDInsight 中的虚拟机 (VM) 将加入你提供的域。 因此,在 HDInsight 上运行的所有服务(Apache Ambari、Apache Hive 服务器、Apache Ranger、Apache Spark Thrift 服务器等)都可以为经身份验证的用户无缝运行。 然后,管理员可以使用 Apache Ranger 创建强大的授权策略,以针对群集中的资源提供基于角色的访问控制。

将 HDInsight 与 Active Directory 集成

开源 Apache Hadoop 依赖于 Kerberos 协议来提供身份验证和安全性。 因此,使用企业安全性套餐 (ESP) 的 HDInsight 群集节点加入到由 Microsoft Entra 域服务管理的域。 将为群集上的 Hadoop 组件配置 Kerberos 安全性。

自动创建以下内容:

  • 每个 Hadoop 组件的服务主体
  • 加入域的每台计算机的计算机主体
  • 每个群集的组织单位 (OU),用于存储这些服务和计算机主体

概而言之,需要在环境中设置以下项:

  • Azure Active Directory 域(由 Microsoft Entra 域服务管理)。 域名不得超过 39 个字符,否则不能与 Azure HDInsight 配合使用。
  • Microsoft Entra 域服务中启用的安全 LDAP (LDAPS)。
  • HDInsight 虚拟网络和 Azure Microsoft Entra 域服务虚拟网络之间的正常网络连接(如果为这两者选择不同的虚拟网络)。 HDInsight 虚拟网络中的 VM 应通过虚拟网络对等互连与 Microsoft Entra 域服务连接。 如果 HDInsight 和 Microsoft Entra 域服务部署在同一虚拟网络中,则会自动提供此连接,不需要执行进一步操作。

设置不同的域控制器

HDInsight 当前仅支持将 Microsoft Entra 域服务用作群集用于与 Kerberos 进行通信的主域控制器。 但是,也可以使用其他复杂的 Active Directory 设置,只要该设置能启用 Microsoft Entra 域服务进行 HDInsight 访问即可。

Microsoft Entra 域服务

Microsoft Entra 域服务提供与 Windows Server Active Directory 完全兼容的托管域。 Azure 负责采用高度可用的 (HA) 设置来管理、修补和监视域。 你可以部署群集,而不用担心如何维护域控制器。

用户、组和密码将从 Microsoft Entra ID 进行同步。 通过从 Microsoft Entra 实例到 Microsoft Entra 域服务的单向同步,用户可使用相同的企业凭据登录到群集。

有关详细信息,请参阅使用 Microsoft Entra 域服务配置使用 ESP 的 HDInsight 群集

IaaS VM 上的本地 Active Directory 或 Active Directory

如果域具有本地 Active Directory 实例或更复杂的 Active Directory 设置,可以使用 Microsoft Entra Connect 将这些标识同步到 Microsoft Entra ID。 然后,可以在该 Active Directory 租户上启用 Microsoft Entra 域服务。

Kerberos 依赖于密码哈希,因此必须在 Microsoft Entra 域服务上启用密码哈希同步

如果使用 Active Directory 联合身份验证服务 (AD FS) 进行联合身份验证,则必须启用密码哈希同步。(有关建议的设置,请参阅此视频。)密码哈希同步在 AD FS 基础结构失败时可以帮助进行灾难恢复,并且它还有助于提供泄漏凭据保护。 有关详细信息,请参阅使用 Microsoft Entra Connect Sync 启用密码哈希同步

只在 IaaS VM 上使用本地 Active Directory 或 Active Directory,但不使用 Microsoft Entra ID 和 Microsoft Entra 域服务,这种配置在使用 ESP 的 HDInsight 群集上不受支持。

如果使用了联合身份验证并且密码哈希已正确同步,但是身份验证失败,请检查是否为 PowerShell 服务主体启用了云密码身份验证。 如果没有,必须为 Microsoft Entra 租户设置主领域发现 (HRD) 策略。 若要检查和设置 HRD 策略,请执行以下操作:

  1. 安装预览版 Microsoft Entra ID PowerShell 模块

    Install-Module AzureAD
    
  2. 使用全局管理员(租户管理员)凭据进行连接。

    Connect-AzureAD -AzureEnvironmentName AzureChinaCloud
    
  3. 检查是否已创建了 Azure PowerShell 服务主体。

    Get-AzureADServicePrincipal -SearchString "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
    

后续步骤