更新时间:2022-12-08 GMT+08:00

在Ranger中配置Hive的访问权限

在创建完安装了Ranger组件的MRS集群后,Hive的权限控制暂未集成在Ranger中,本章节主要介绍Hive组件如何集成在Ranger中。

  1. 登录Ranger WebUI界面。
  2. 在“Service Manager”中的HIVE处,单击添加Hive Service。

    图1 添加Hive Service

  3. 请参考表1填写添加Hive Service的相关参数,未在表中列出的参数请保持默认值。

    表1 参数说明

    参数

    说明

    示例值

    Service Name

    创建的service name名称,固定填写:hivedev。

    hivedev

    Username

    可以任意填写。

    admin

    Password

    可以任意填写。

    -

    jdbc.driverClassName

    连接hive的驱动类,固定填写:org.apache.hive.jdbc.HiveDriver。

    org.apache.hive.jdbc.HiveDriver

    jdbc.url

    连接hive的url,格式为ZooKeeper Mode:

    jdbc:hive2://<host>:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

    其中<host>为ZooKeeper地址,ZooKeeper地址可通过登录MRS Manager然后选择“服务管理 > ZooKeeper > 实例”,查看ZooKeeper实例的“管理IP”地址获取。

    jdbc:hive2://xx.xx.xx.xx:2181,xx.xx.xx.xx:2181,xx.xx.xx.xx:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

    图2 Create hivedev

  4. 单击“Add”添加服务。
  5. 启动Ranger Hive Plugin,授权Ranger管理Hive。

    1. 在MRS控制台,单击集群名称进入集群详情页面。
    2. 选择“组件管理”。
    3. 选择“Hive > 服务配置”,将“基础配置”切换为“全部配置”。
    4. 搜索配置“hive.security.authorization”,修改如下两个配置:
      • hive.security.authorization.enabled = true
      • hive.security.authorization.manager = org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
    5. 单击“保存配置”,并勾选“重新启动受影响的服务或实例。”重启Hive服务。

  6. 添加访问控制策略,即Policy。

    1. 登录Ranger WebUI界面。
    2. 在HIVE区域单击已添加的服务名称“hivedev”。
    3. 单击“Add New Policy”,新增访问控制策略。
    4. 参考表2配置参数,未在表中列出的参数请保持默认值。
      表2 参数说明

      参数

      说明

      示例值

      Policy Name

      策略名称。

      Policy001

      database

      该策略允许访问的数据库名称。

      test

      table

      该策略允许访问的数据库对应的表名称。

      table1

      Hive Column

      该策略允许访问的数据库对应的表的列名。

      name

      Allow Conditions

      • Select Group:该策略允许访问的用户组。
      • Select User:该策略允许访问的用户组中的用户。
      • Permissions:该策略允许用户使用的权限。
      • Select Group:testuser
      • Select User:testuser
      • Permissions:Create和select
      图3 新增hivedev的访问控制策略
    5. 单击“Add”,完成策略添加,依据如上Policy示例,testuser用户组中的testuser用户将对Hive的“test”数据库中的表“table1”的“name”列有Create和select的权限,而对于其他列则没有任何的访问权限。

  7. 参见从零开始使用Hive登录hive客户端,验证Ranger是否已经完成集成Hive。

    1. 执行如下命令,进入hive beeline。

      source /opt/client/bigdata_env

      beeline

    2. 执行如下命令,建立连接并使用testuser登录。
      !connect jdbc:hive2://xx.xx.xx.xx:2181,xx.xx.3.81:2181,192.168.3.153:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
      图4 登录Hive
    3. 查询数据,验证Ranger是否已经集成成功。
      图5 验证Ranger集成Hive