
# 在Ranger中配置Hive/Impala的访问权限
在创建完安装了Ranger组件的MRS集群后，Hive/Impala的权限控制暂未集成在Ranger中，由于Hive与Impala配置方法一致，本章节主要介绍Hive组件如何集成在Ranger中。
1. 登录Ranger WebUI界面。
2. 在"Service Manager"中的HIVE处，单击![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264265666.png)添加Hive Service。
   
   图1添加Hive Service   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001389336232.png)
   
   
3. 请参考[表1]填写添加Hive Service的相关参数，未在表中列出的参数请保持默认值。
   
    表1**参数说明** 
   | 参数                   | 说明                                                                                                                                                                                                                                                                                              | 示例值                                                                                                                            |
   |:---|:---|:---|
   | 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 |
      
   图2Create hivedev   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264266548.png)
   
   
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的访问控制策略   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264266345.png) 
   
   5. 单击"Add"，完成策略添加，依据如上Policy示例，testuser用户组中的testuser用户将对Hive的"test"数据库中的表"table1"的"name"列有Create和select的权限，而对于其他列则没有任何的访问权限。
   
   
   
   
7. 参见[快速使用Hive进行数据分析](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0442.html)登录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   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264266151.png) 
   
   3. 查询数据，验证Ranger是否已经集成成功。
      图5验证Ranger集成Hive   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264266477.png) 
   
   
   
   
 
