在具有企业安全性套餐的 HDInsight 中配置 Apache Hive 策略

在本文中,你将了解如何为 Apache Hive 配置 Apache Ranger 策略。 你将创建两个 Ranger 策略来限制对 hivesampletable 的访问。 hivesampletable 随 HDInsight 群集提供。 配置策略后,使用 Excel 和开放式数据库连接 (ODBC) 驱动程序连接到 HDInsight 中的 Hive 表。

先决条件

  • 具有企业安全性套餐 (ESP) 的 HDInsight 群集。 有关详细信息,请参阅配置具有 ESP 的 HDInsight 群集
  • 一个装有 Microsoft 365 企业应用版、Office 2016、Office 专业增强版 2013、Excel 2013 Standalone 或 Office 专业增强版 2010 的工作站。

连接到 Apache Ranger 管理员 UI

若要连接到 Ranger 管理员用户界面 (UI):

  1. 在浏览器中,转到 Ranger 管理员 UI (https://CLUSTERNAME.azurehdinsight.cn/Ranger/),其中 CLUSTERNAME 是你的群集的名称。

    注意

    Ranger 使用的凭据与 Apache Hadoop 群集不同。 若要防止浏览器使用缓存的 Hadoop 凭据,请使用新的 InPrivate 浏览器窗口连接到 Ranger 管理 UI。

  2. 使用群集管理员域用户名和密码登录:

    屏幕截图显示 HDInsight ESP Ranger 主页。

    目前,Ranger 仅适用于 Yarn 和 Hive。

创建域用户

有关如何创建 hiveruser1hiveuser2 的信息,请参阅创建具有 ESP 的 HDInsight 群集。 本文使用这两个用户帐户。

创建 Ranger 策略

本部分将创建用于访问 hivesampletable 的两个 Ranger 策略。 授予对不同列集的 select 权限。 这两个用户是使用创建具有 ESP 的 HDInsight 群集创建的。 在下一部分,你将在 Excel 中测试这两个策略。

若要创建 Ranger 策略:

  1. 打开“Ranger 管理 UI”。 请参阅上一部分:连接到 Apache Ranger 管理员 UI

  2. 在“Hive”下,选择“CLUSTERNAME_Hive”。 你会看到两个预配置的策略。

  3. 选择“添加新策略”,然后输入以下值:

    属性
    策略名称 read-hivesampletable-all
    Hive 数据库 默认值
    hivesampletable
    Hive 列 *
    选择用户 hiveuser1
    权限 select

    屏幕截图显示要配置的 HDInsight ESP Ranger Hive 策略。

    注意

    如果“选择用户”中未填充域用户,请等待片刻时间让 Ranger 与 Microsoft Entra ID 同步。

  4. 选择“添加”以保存策略。

  5. 重复最后两个步骤以创建具有以下属性的另一个策略:

    属性
    策略名称 read-hivesampletable-devicemake
    Hive 数据库 默认值
    hivesampletable
    Hive 列 clientid、devicemake
    选择用户 hiveuser2
    权限 SELECT…

创建 Hive ODBC 数据源

有关如何创建 Hive ODBC 数据源的说明,请参阅创建 Hive ODBC 数据源

properties 说明
数据源名称 为数据源提供名称。
主机 输入“CLUSTERNAME.azurehdinsight.cn”。 例如,使用 myHDICluster.azurehdinsight.cn
端口 使用 443。 (此端口从 563 更改为 443。)
数据库 使用“默认”。
Hive 服务器类型 选择“Hive Server 2”。
机制 选择“Azure HDInsight 服务”。
HTTP 路径 将此字段留空。
用户名 输入 hiveuser1@contoso158.partner.onmschina.cn。 如果域名不同,请更新域名。
密码 输入 hiveuser1 的密码。

在保存数据源之前选择“测试”。

将 HDInsight 中的数据导入到 Excel 中

在上一部分中,你配置了两个策略:hiveuser1 对所有列拥有 select 权限,hiveuser2 对两列拥有 select 权限。 在此部分中,将模拟这两个用户将数据导入到 Excel 中。

  1. 在 Excel 中打开新工作簿或现有工作簿。

  2. 在“数据”选项卡中,转到“获取数据”>“从其他源”>“从 ODBC”来打开“从 ODBC”窗口

    屏幕截图显示“打开数据连接向导”。

  3. 在下拉列表中,选择在上一部分中创建的数据源名称,然后选择“确定”

  4. 第一次使用时,会打开“ODBC 驱动程序”对话框。 从左侧菜单中选择 Windows。 然后选择“连接”以打开“导航器”窗口。

  5. 等待 Select Database and Table 对话框打开。 此步骤可能需要几秒钟时间。

  6. 选择“Hivesampletable”>“下一步”。

  7. 选择“完成”。

  8. 在“导入数据”对话框中,可以更改或指定查询。 为此,请选择“属性”。 此步骤可能需要几秒钟时间。

  9. 选择“定义”选项卡。命令文本为:

    SELECT * FROM "HIVE"."default"."hivesampletable"`
    

    根据你定义的 Ranger 策略,hiveuser1 对所有列拥有 select 权限。 此查询适用于 hiveuser1 的凭据,但此查询不适用于 hiveuser2 的凭据。

  10. 选择“确定”关闭“连接属性”对话框。

  11. 选择“确定”关闭“导入数据”对话框。

  12. 重新输入 hiveuser1 的密码,然后选择“确定”。 需要几秒钟时间来将数据导入到 Excel 中。 完成后,你会看到 11 列的数据。

若要测试你在最后一部分中创建的第二个策略 (read-hivesampletable-devicemake):

  1. 在 Excel 中添加新工作表。

  2. 按照上一过程导入数据。 你所做的唯一更改是使用 hiveuser2 的凭据而不是 hiveuser1。 此操作失败,因为 hiveuser2 只有权查看两列。 出现以下错误:

    [Microsoft][HiveODBC] (35) Error from Hive: error code: '40000' error message: 'Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [hiveuser2] does not have [SELECT] privilege on [default/hivesampletable/clientid,country ...]'.
    
  3. 按照相同的过程导入数据。 这一次,请使用 hiveuser2 的凭据,并在以下项中修改 select 语句:

    SELECT * FROM "HIVE"."default"."hivesampletable"
    

    更改为:

    SELECT clientid, devicemake FROM "HIVE"."default"."hivesampletable"
    

    完成后,你会看到两列导入的数据。

后续步骤