
# 添加Impala的Ranger访问权限策略
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
本章节仅适用于MRS 3.1.5及之后版本。
#### 操作场景
在创建完安装了Ranger组件的MRS集群后，Hive/Impala的权限控制集成在Ranger中，由于Impala复用Hive的权限策略，本章节主要介绍Hive组件如何集成在Ranger中。
#### 前提条件
- 已安装Ranger服务且服务运行正常。
- 已创建需要配置权限的用户、用户组或Role。
 
#### 操作步骤
1. 普通模式（未开启Kerberos认证）下确认Hive，Impala是否启用Ranger鉴权。 
   如果未启用则需要先对Hive启用Ranger鉴权，并重启Hive服务，再重启Impala服务。然后对Impala启用Ranger鉴权，并重启Impala服务。**安全集群（开启Kerberos认证）默认启用Ranger，可跳过该步骤**。
   
   
2. 普通模式下，登录Manager页面，选择"集群 \> 服务 \> Ranger \> 配置 \> 全部配置 \> UserSync（角色)"，在自定义配置"ranger.usersync.config.expandor"新增如下配置项，修改完成后重启Ranger服务。**安全集群（开启Kerberos认证）跳过该步骤** 。
   
   
   | 参数                          | 值    |
   |:---|:---|
   | ranger.usersync.sync.source | ldap |
      
   
   
3. 使用Ranger管理员用户**rangeradmin** 登录Ranger管理页面，具体操作可参考[登录Ranger WebUI界面](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1850.html)，选择Hive。
   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001892944177.png)
   
   

4. 添加访问控制策略，即Policy。 
   1. 在HIVE区域单击已添加的服务名称"Hive"。
   
   2. 单击"Add New Policy"，新增访问控制策略。
   
   3. 参考[表1]配置参数，未在表中列出的参数请保持默认值。
       表1参数说明 
      | 参数               | 说明                                                                                                                                                                                                                                                                                                                              | 示例值                                                                                                                                                                                                                                                                                                              |
      |:---|:---|:---|
      | Policy Name      | 策略名称。                                                                                                                                                                                                                                                                                                                           | testuser                                                                                                                                                                                                                                                                                                         |
      | database         | 该策略允许访问的数据库名称。                                                                                                                                                                                                                                                                                                                  | default                                                                                                                                                                                                                                                                                                          |
      | table            | 该策略允许访问的数据库对应的表名称。                                                                                                                                                                                                                                                                                                              | dataorigin                                                                                                                                                                                                                                                                                                       |
      | Hive Column      | 该策略允许访问的数据库对应的表的列名。                                                                                                                                                                                                                                                                                                             | name                                                                                                                                                                                                                                                                                                             |
      | Allow Conditions | - Select Group：该策略允许访问的用户组。  - Select User：该策略允许访问的用户组中的用户。  - Permissions：该策略允许用户使用的权限。   | - Select Group：hive  - Select User：testuser  - Permissions：select,Create   |
         
      图1新增testuser访问策略控制   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001893067913.png) 
   
   4. 单击"Add"，完成策略添加，依据如上Policy示例，hive用户组中的testuser用户将对Hive的"default"数据库中的表"dataorigin"的"name"列有Create和select的权限，而对于其他列则没有任何的访问权限。
   
   
   
   
5. 登录Impala客户端，验证Ranger是否已经完成集成Impala。 
   1. 以客户端安装用户登录客户端安装节点，执行如下命令，初始化环境变量。 **source /opt/client/bigdata_env**
      
   
   2. 建立连接并使用testuser登录。
      - 普通集群（未开启Kerberos认证）执行如下命令： **impala-shell -i** *\<Impalad节点IP\>* **-u** *testuser*
        
      
      - 安全集群（开启Kerberos认证）执行如下命令： **kinit** **testuser**
        并输入密码登录
        **impala-shell -i** *\<Impalad节点IP\>*
        
       
   
   3. 查询数据，验证Ranger是否已经集成成功。
      - 执行**select \* from dataorigin**失败，报错显示权限不足。
      
      - 执行**select name from dataorigin**成功，符合预设的权限。
      
      
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001892952397.png)
      ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/caution_3.0-zh-cn.png)
      - 如果用户在执行命令时指定了HDFS路径，需要给该用户添加HDFS路径的读、写、执行权限，详情请参考[添加HDFS的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1856.html)。也可以不配置HDFS的Ranger策略，通过之前Hive权限插件的方式，给角色添加权限，然后把角色赋予对应用户。如果HDFS Ranger策略可以匹配到Hive库表的文件或目录权限，则优先使用HDFS Ranger策略。
      
      - 如果在Hive中创建的表，需要在Impala执行invalidate metadata刷新元数据。此时需要给该用户赋予refresh权限或者使用hive用户执行invalidate metadata，否则会遇到如下报错： ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001890941569.png)
        
       
      
      
   
   
   
   
 
