你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在具有企业安全性套餐的 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):
在浏览器中,转到 Ranger 管理员 UI (
https://CLUSTERNAME.azurehdinsight.net/Ranger/
),其中CLUSTERNAME
是你的群集的名称。注意
Ranger 使用的凭据与 Apache Hadoop 群集不同。 若要防止浏览器使用缓存的 Hadoop 凭据,请使用新的 InPrivate 浏览器窗口连接到 Ranger 管理 UI。
使用群集管理员域用户名和密码登录:
目前,Ranger 仅适用于 Yarn 和 Hive。
创建域用户
有关如何创建 hiveruser1
和 hiveuser2
的信息,请参阅创建具有 ESP 的 HDInsight 群集。 本文使用这两个用户帐户。
创建 Ranger 策略
本部分将创建用于访问 hivesampletable
的两个 Ranger 策略。 授予对不同列集的 select 权限。 这两个用户是使用创建具有 ESP 的 HDInsight 群集创建的。 在下一部分,你将在 Excel 中测试这两个策略。
若要创建 Ranger 策略:
打开“Ranger 管理 UI”。 请参阅上一部分:连接到 Apache Ranger 管理员 UI。
在“Hive”下,选择“CLUSTERNAME_Hive”。 你会看到两个预配置的策略。
选择“添加新策略”,然后输入以下值:
属性 值 策略名称 read-hivesampletable-all Hive 数据库 默认值 表 hivesampletable Hive 列 * 选择用户 hiveuser1 权限 select 。
注意
如果“选择用户”中未填充域用户,请等待片刻时间让 Ranger 与 Microsoft Entra ID 同步。
选择“添加”以保存策略。
重复最后两个步骤以创建具有以下属性的另一个策略:
属性 值 策略名称 read-hivesampletable-devicemake Hive 数据库 默认值 表 hivesampletable Hive 列 clientid、devicemake 选择用户 hiveuser2 权限 SELECT…
创建 Hive ODBC 数据源
有关如何创建 Hive ODBC 数据源的说明,请参阅创建 Hive ODBC 数据源。
properties | 说明 |
---|---|
数据源名称 | 为数据源提供名称。 |
主机 | 输入 CLUSTERNAME.azurehdinsight.net。 例如,使用 myHDICluster.azurehdinsight.net。 |
端口 | 使用 443。 (此端口从 563 更改为 443。) |
数据库 | 使用“默认”。 |
Hive 服务器类型 | 选择“Hive Server 2”。 |
机制 | 选择“Azure HDInsight 服务”。 |
HTTP 路径 | 将此字段留空。 |
用户名 | 输入 hiveuser1@contoso158.onmicrosoft.com 。 如果域名不同,请更新域名。 |
密码 | 输入 hiveuser1 的密码。 |
在保存数据源之前选择“测试”。
将 HDInsight 中的数据导入到 Excel 中
在上一部分中,你配置了两个策略:hiveuser1
对所有列拥有 select 权限,hiveuser2
对两列拥有 select 权限。 在此部分中,将模拟这两个用户将数据导入到 Excel 中。
在 Excel 中打开新工作簿或现有工作簿。
在“数据”选项卡中,转到“获取数据”>“从其他源”>“从 ODBC”来打开“从 ODBC”窗口。
在下拉列表中,选择在上一部分中创建的数据源名称,然后选择“确定”。
第一次使用时,会打开“ODBC 驱动程序”对话框。 从左侧菜单中选择 Windows。 然后选择“连接”以打开“导航器”窗口。
等待
Select Database and Table
对话框打开。 此步骤可能需要几秒钟时间。选择“Hivesampletable”>“下一步”。
选择“完成”。
在“导入数据”对话框中,可以更改或指定查询。 为此,请选择“属性”。 此步骤可能需要几秒钟时间。
选择“定义”选项卡。命令文本为:
SELECT * FROM "HIVE"."default"."hivesampletable"`
根据你定义的 Ranger 策略,
hiveuser1
对所有列拥有 select 权限。 此查询适用于hiveuser1
的凭据,但此查询不适用于hiveuser2
的凭据。选择“确定”关闭“连接属性”对话框。
选择“确定”关闭“导入数据”对话框。
重新输入
hiveuser1
的密码,然后选择“确定”。 需要几秒钟时间来将数据导入到 Excel 中。 完成后,你会看到 11 列的数据。
若要测试你在最后一部分中创建的第二个策略 (read-hivesampletable-devicemake):
在 Excel 中添加新工作表。
按照上一过程导入数据。 你所做的唯一更改是使用
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 ...]'.
按照相同的过程导入数据。 这一次,请使用
hiveuser2
的凭据,并在以下项中修改 select 语句:SELECT * FROM "HIVE"."default"."hivesampletable"
更改为:
SELECT clientid, devicemake FROM "HIVE"."default"."hivesampletable"
完成后,你会看到两列导入的数据。
后续步骤
- 若要配置具有 ESP 的 HDInsight 群集,请参阅配置具有 ESP 的 HDInsight 群集。
- 若要管理具有 ESP 的 HDInsight 群集,请参阅管理具有 ESP 的 HDInsight 群集。
- 若要在具有 ESP 的 HDInsight 群集上使用安全外壳 (SSH) 运行 Hive 查询,请参阅将 SSH 与 HDInsight 配合使用。
- 若要使用 Hive Java Database Connectivity (JDBC) 连接 Hive,请参阅使用 Hive JDBC 驱动程序连接到 Azure HDInsight 上的 Apache Hive。
- 若要使用 Hive ODBC 将 Excel 连接到 Hadoop,请参阅使用 Microsoft Hive ODBC 驱动程序将 Excel 连接到 Apache Hadoop。
- 若要使用 Power Query 将 Excel 连接到 Hadoop,请参阅使用 Power Query 将 Excel 连接到 Apache Hadoop。