在具有企业安全性套餐的 HDInsight 中配置 Apache Hive 策略Configure Apache Hive policies in HDInsight with Enterprise Security Package

了解如何为 Apache Hive 配置 Apache Ranger 策略。Learn how to configure Apache Ranger policies for Apache Hive. 本文涉及创建两个 Ranger 策略来限制对 hivesampletable 的访问。In this article, you create two Ranger policies to restrict access to the hivesampletable. hivesampletable 随 HDInsight 群集提供。The hivesampletable comes with HDInsight clusters. 配置策略后,使用 Excel 和 ODBC 驱动程序连接到 HDInsight 中的 Hive 表。After you've configured the policies, you use Excel and ODBC driver to connect to Hive tables in HDInsight.

先决条件Prerequisites

  • 具有企业安全性套餐的 HDInsight 群集。A HDInsight cluster with Enterprise Security Package. 请参阅配置具有 ESP 的 HDInsight 群集See Configure HDInsight clusters with ESP.
  • 一个装有 Microsoft 365 企业应用版、Office 2016、Office 专业增强版 2013、Excel 2013 Standalone 或 Office 专业增强版 2010 的工作站。A workstation with Microsoft 365 apps for enterprise, Office 2016, Office 2013 Professional Plus, Excel 2013 Standalone, or Office 2010 Professional Plus.

连接到 Apache Ranger 管理 UIConnect to Apache Ranger Admin UI

连接到 Ranger 管理 UITo connect to Ranger Admin UI

  1. 在浏览器中,导航到 Ranger 管理 UI (https://CLUSTERNAME.azurehdinsight.cn/Ranger/),其中的 CLUSTERNAME 是群集的名称。From a browser, navigate to the Ranger Admin UI at https://CLUSTERNAME.azurehdinsight.cn/Ranger/ where CLUSTERNAME is the name of your cluster.

    备注

    Ranger 使用的凭据与 Apache Hadoop 群集不同。Ranger uses different credentials than Apache Hadoop cluster. 若要防止浏览器使用缓存的 Hadoop 凭据,请使用新的 InPrivate 浏览器窗口连接到 Ranger 管理 UI。To prevent browsers using cached Hadoop credentials, use new InPrivate browser window to connect to the Ranger Admin UI.

  2. 使用群集管理员域用户名和密码登录:Log in using the cluster administrator domain user name and password:

    HDInsight ESP Ranger 主页

    目前,Ranger 仅适用于 Yarn 和 Hive。Currently, Ranger only works with Yarn and Hive.

创建域用户Create Domain users

请参阅创建具有 ESP 的 HDInsight 群集,了解如何创建 hiveruser1 和 hiveuser2。See Create a HDInsight cluster with ESP, for information on how to create hiveruser1 and hiveuser2. 本文使用这两个用户帐户。You use the two user accounts in this article.

创建 Ranger 策略Create Ranger policies

本部分将创建用于访问 hivesampletable 的两个 Ranger 策略。In this section, you create two Ranger policies for accessing hivesampletable. 提供对不同列组的 select 权限。You give select permission on different set of columns. 这两个用户是在创建具有 ESP 的 HDInsight 群集的教程中创建的。Both users were created using Create a HDInsight cluster with ESP. 在下一部分,需在 Excel 中测试这两个策略。In the next section, you'll test the two policies in Excel.

创建 Ranger 策略To create Ranger policies

  1. 打开 Ranger 管理 UI。Open Ranger Admin UI. 请参阅“连接到 Apache Ranger 管理 UI”。See Connect to Apache Ranger Admin UI.

  2. 在“Hive”下,选择“CLUSTERNAME_Hive”。Select CLUSTERNAME_Hive, under Hive. 应看到两个预配置的策略。You shall see two pre-configure policies.

  3. 选择“添加新策略”,然后输入以下值:Select Add New Policy, and then enter the following values:

    属性Property Value
    策略名称Policy Name read-hivesampletable-allread-hivesampletable-all
    Hive 数据库Hive Database 默认值default
    table hivesampletablehivesampletable
    Hive 列Hive Column *
    选择用户Select User hiveuser1hiveuser1
    权限Permissions selectselect

    HDInsight ESP Ranger Hive 策略配置..

    备注

    如果域用户未在“选择用户”中填充,请等待几分钟让 Ranger 与 AAD 同步。If a domain user is not populated in Select User, wait a few moments for Ranger to sync with AAD.

  4. 选择“添加”以保存策略。Select Add to save the policy.

  5. 重复最后两个步骤以创建具有以下属性的另一个策略:Repeat the last two steps to create another policy with the following properties:

    属性Property Value
    策略名称Policy Name read-hivesampletable-devicemakeread-hivesampletable-devicemake
    Hive 数据库Hive Database 默认值default
    table hivesampletablehivesampletable
    Hive 列Hive column clientid、devicemakeclientid, devicemake
    选择用户Select User hiveuser2hiveuser2
    权限Permissions selectselect

创建 Hive ODBC 数据源Create Hive ODBC data source

可以在 创建 Hive ODBC 数据源中找到相关说明。The instructions can be found in Create Hive ODBC data source.

属性Property 说明Description
数据源名称Data Source Name 为数据源提供名称Give a name to your data source
主机Host 输入“CLUSTERNAME.azurehdinsight.cn”。Enter CLUSTERNAME.azurehdinsight.cn. 例如 myHDICluster.azurehdinsight.cnFor example, myHDICluster.azurehdinsight.cn
端口Port 使用 443Use 443. (此端口已从 563 更改为 443。)(This port has been changed from 563 to 443.)
数据库Database 使用“默认”。Use Default.
Hive 服务器类型Hive Server Type 选择“Hive Server 2”Select Hive Server 2
机制Mechanism 选择“Azure HDInsight 服务”Select Azure HDInsight Service
HTTP 路径HTTP Path 将此字段留空。Leave it blank.
用户名User Name 输入 hiveuser1@contoso158.onmicrosoft.com。Enter hiveuser1@contoso158.onmicrosoft.com. 如果域名不同,请更新域名。Update the domain name if it's different.
密码Password 输入 hiveuser1 的密码。Enter the password for hiveuser1.

请确保在保存数据源之前单击“测试” 。Make sure to click Test before saving the data source.

将 HDInsight 中的数据导入到 Excel 中Import data into Excel from HDInsight

在上一部分中,你配置了两个策略。In the last section, you've configured two policies. hiveuser1 对所有列具有 select 权限,而 hiveuser2 对两个列具有 select 权限。hiveuser1 has the select permission on all the columns, and hiveuser2 has the select permission on two columns. 在此部分中,将模拟这两个用户将数据导入到 Excel 中。In this section, you impersonate the two users to import data into Excel.

  1. 在 Excel 中打开新工作簿或现有工作簿。Open a new or existing workbook in Excel.

  2. 在“数据”选项卡中,导航到“获取数据” > “从其他源” > “从 ODBC”来启动“从 ODBC”窗口 。From the Data tab, navigate to Get Data > From Other Sources > From ODBC to launch the From ODBC window.

    打开数据连接向导

  3. 在下拉列表中,选择在上一部分创建的数据源名称,然后选择“确定”。From the drop-down list, select the data source name that you created in the last section and then select OK.

  4. 第一次使用时,将打开“ODBC 驱动程序”对话框。For the first use, an ODBC driver dialog will open. 从左侧菜单中选择 WindowsSelect Windows from the left menu. 然后选择“连接”以打开“导航器”窗口。Then select Connect to open the Navigator window.

  5. 等待“选择数据库和表”对话框打开 。Wait for the Select Database and Table dialog to open. 这可能需要几秒钟时间。This can take a few seconds.

  6. 选择“hivesampletable”,然后选择“下一步”。Select hivesampletable, and then select Next.

  7. 选择“完成”。Select Finish.

  8. 在“导入数据”对话框中,可以更改或指定查询。In the Import Data dialog, you can change or specify the query. 为此,请选择“属性”。To do so, select Properties. 这可能需要几秒钟时间。This can take a few seconds.

  9. 选择“定义”选项卡。命令文本为:Select the Definition tab. The command text is:

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

    根据定义的 Ranger 策略,hiveuser1 对所有列拥有 select 权限。By the Ranger policies you defined, hiveuser1 has select permission on all the columns. 因此,此查询可以使用 hiveuser1 的凭据,但不能使用 hiveuser2 的凭据。So this query works with hiveuser1's credentials, but this query doesn't work with hiveuser2's credentials.

  10. 选择“确定”关闭“连接属性”对话框。Select OK to close the Connection Properties dialog.

  11. 选择“确定”关闭“导入数据”对话框。Select OK to close the Import Data dialog.

  12. 重新输入 hiveuser1 的密码,并单击“确定” 。Reenter the password for hiveuser1, and then click OK. 需要几秒钟时间才能将数据导入到 Excel 中。It takes a few seconds before data gets imported to Excel. 完成后,应看到 11 个列的数据。When it's done, you shall see 11 columns of data.

测试在最后一个部分中创建的第二个策略 (read-hivesampletable-devicemake)To test the second policy (read-hivesampletable-devicemake), you created in the last section

  1. 在 Excel 中添加新工作表。Add a new sheet in Excel.

  2. 按照上一过程导入数据。Follow the last procedure to import the data. 所做的唯一更改是使用 hiveuser2 的凭据,而不是 hiveuser1 的凭据。The only change you make is to use hiveuser2's credentials instead of hiveuser1's. 此查询失败,因为 hiveuser2 仅有权查看两个列。This fails because hiveuser2 only has permission to see two columns. 将收到以下错误:You shall get the following error:

    [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. 按照相同的过程导入数据。Follow the same procedure to import data. 这次使用 hiveuser2 的凭据,并且还修改 select 语句,从:This time, use hiveuser2's credentials, and also modify the select statement from:

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

    to:to:

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

    完成后,应看到导入了两列的数据。When it's done, you shall see two columns of data imported.

后续步骤Next steps