
# 添加Hive的Ranger访问权限策略
#### 操作场景
Ranger管理员可通过Ranger为Hive用户进行相关的权限设置。Hive默认管理员账号为hive，初始密码为Hive@123。
#### 前提条件
- 已安装Ranger服务且服务运行正常。
- 已创建用户需要配置权限的用户、用户组或Role。
- 用户加入hive组。
 
#### 操作步骤
1. 使用Ranger管理员用户**rangeradmin** 登录Ranger管理页面，具体操作可参考[登录Ranger WebUI界面](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1850.html)。
2. 在首页中单击"HADOOP SQL"区域的组件插件名称如"Hive"。
3. 在"Access"页签单击"Add New Policy"，添加Hive权限控制策略。
4. 根据业务需求配置相关参数。 
   表1Hive权限参数 
   | 参数名称              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | Policy Name       | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Policy Conditions | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | Policy Label      | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | database          | 将适用该策略的列Hive数据库名称。 "Include"策略适用于当前输入的对象，"Exclude"表示策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | table             | 将适用该策略的Hive表名称。 如果需要添加基于UDF的策略，可切换为UDF，然后输入UDF的名称。 "Include"策略适用于当前输入的对象，"Exclude"表示策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | Hive Column       | 将适用该策略的列名，填写\*时表示所有列。 "Include"策略适用于当前输入的对象，"Exclude"表示策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Description       | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | Audit Logging     | 是否审计此策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | Allow Conditions  | 策略允许条件，配置本策略内允许的权限及例外。 在"Select Role"、"Select Group"、"Select User"列选择已创建好的需要授予权限的Role、用户组或用户，单击"Add Conditions"，添加策略适用的IP地址范围，然后再单击"Add Permissions"，添加对应权限。 - select：查询权限  - update：更新权限  - Create：创建权限  - Drop：drop操作权限  - Alter：alter操作权限  - Index：索引操作权限  - All：所有执行权限  - Read：可读权限  - Write：可写权限  - Temporary UDF Admin：临时UDF管理权限  - Select/Deselect All：全选/取消全选   如需添加多条权限控制规则，可单击![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0265769712.png)按钮添加。 如需当前条件中的用户或用户组管理本条策略，可勾选"Delegate Admin"，这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略，它还可以基于原始策略创建子策略。 |
   | Deny Conditions   | 策略拒绝条件，配置本策略内拒绝的权限及例外，配置方法与"Allow Conditions"类似。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      
   表2设置权限 
   | 任务场景                   | 角色授权操作                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|
   | role admin操作           | 1. 在首页中单击"Settings"，选择"Roles"。  2. 单击Role Name为admin的角色，在"Users"区域，单击"Select User"，选择对应用户名。  3. 单击Add Users按钮，在对应用户名所在行勾选"Is Role Admin"，单击"Save"保存配置。   说明： Ranger页面的"Settings"选项只有rangeradmin用户有权限访问。用户绑定Hive管理员角色后，在每个维护操作会话中，还需要执行以下操作： 1. 以客户端安装用户，登录安装Hive客户端的节点。  2. 执行以下命令配置环境变量。 例如，Hive客户端安装目录为"/opt/hiveclient"，执行**source /opt/hiveclient/bigdata_env**   3. 执行以下命令认证用户。 **kinit** *Hive* *业务用户*   4. 执行以下命令登录客户端工具。 **beeline**   5. 执行以下命令更新用户的管理员权限。 **set role admin;**    |
   | 创建库表操作                 | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库(如果是创建表则在"table"右侧填写或选择对应的表)，在"column"右侧填写或选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"Create"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 删除库表操作                 | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库（如果是删除表则在"table"右侧填写或选择对应的表），在"column"右侧填写并选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"Drop"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 查询操作(select、desc、show) | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库(如果是表则在"table"右侧填写或选择对应的表)，在"column"右侧填写并选择对应的列（\*代表所有列）。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"select"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | Alter操作                | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写并选择对应的数据库(如果是表则在"table"右侧填写或选择对应的表)，在"column"右侧填写或选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"Alter"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | LOAD操作                 | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库，在"table"右侧填写或选择对应的表，在"column"右侧填写并选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"update"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | INSERT、DELETE操作        | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库，在"table"右侧填写或选择对应的表，在"column"右侧填写并选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"update"。  5. 用户还需要具有Yarn任务队列的"submit"权限，权限配置参考[添加Yarn的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1859.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | GRANT、REVOKE操作         | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库，在"table"右侧填写或选择对应的表，在"column"右侧填写并选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 勾选"Delegate Admin"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | ADD JAR操作              | 1. 在"Policy Name"填写策略名称。  2. 单击"database"并在下拉菜单中选择"global"。在"global"右侧填写或选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"Temporary UDF Admin"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | UDF 操作                 | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库，"udf"右侧填写对应的udf 函数名。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，根据需求，给用户勾选相应权限（udf支持 Create，select， Drop）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | VIEW操作                 | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写或选择对应的数据库，在"table"右侧填写或选择对应的VIEW名称，在"column"右侧填写并选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，参照表格上述相关操作，根据需求，给用户勾选相应权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | dfs命令操作                | 执行set role admin 操作才可使用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 其他用户库表操作               | 1. 参照表格上述相关操作添加对应权限。  2. 给用户添加其他用户库表的HDFS路径的读、写、执行权限，详情请参考[添加HDFS的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1856.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_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策略。
   
   - Ranger策略中的URL策略是hive表存储在obs上的场景涉及，URL填写对象在obs上的完整路径。与URL联合使用的Read，Write 权限，其他场景不涉及URL策略。
   
   - Ranger策略中global策略仅用于和Temprorary UDF Admin权限联合使用，控制UDF包的上传。
   
   - Ranger策略中的hiveservice策略仅用于和Service Admin权限联合使用，用于控制命令：**kill query \<queryId\>**结束正在执行的任务的权限。
   
   - lock、index、refresh、replAdmin 权限暂不支持。
   
   - 使用**show grant** 命令查看表权限，表owner的grantor列统一显示为hive用户，其他用户Ranger页面赋权或后台采用grant命令赋权，则grantor显示为对应用户；若用户需要查看之前Hive权限插件的结果，可设置hive-ext.ranger.previous.privileges.enable为true后采用**show grant**查看。
    
   
   
5. 单击"Add"，在策略列表可查看策略的基本信息。等待策略生效后，验证相关权限是否正常。 
   如需禁用某条策略，可单击![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0265769713.png)按钮编辑策略，设置策略开关为"Disabled"。
   如果不再使用策略，可单击![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0265769714.png)按钮删除策略。
   
   
 
#### Hive数据脱敏
Ranger支持对Hive数据进行脱敏处理（Data Masking），可对用户执行的select操作的返回结果进行处理，以屏蔽敏感信息。
1. 登录Ranger WebUI界面，在首页中单击"HADOOP SQL"区域的"Hive" 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001440135469.png)
   
   
2. 在"Masking"页签单击"Add New Policy"，添加Hive权限控制策略。 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001160585356.png)
   
   
3. 根据业务需求配置相关参数。 
   表3Hive数据脱敏参数 
   | 参数名称              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   |:---|:---|
   | Policy Name       | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Policy Conditions | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | Policy Label      | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | Hive Database     | 配置当前策略适用的Hive中数据库名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | Hive Table        | 配置当前策略适用的Hive中的表名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | Hive Column       | 可添加列名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | Description       | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Audit Logging     | 是否审计此策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | Mask Conditions   | 在"Select Role"、"Select Group"、"Select User"列选择已创建好的需要授予权限的对象，单击"Add Conditions"，添加策略适用的IP地址范围，然后再单击"Add Permissions"，勾选"select"权限。 单击"Select Masking Option"，选择数据脱敏时的处理策略： - Redact：用x屏蔽所有字母字符，用0屏蔽所有数字字符。  - Partial mask: show last 4：只显示最后的4个字符，其他用x代替。  - Partial mask: show first 4：只显示开始的4个字符，其他用x代替。  - Hash：用值的哈希值替换原值，采用的是hive的内置mask_hash函数，只对string、char、varchar类型的字段生效，其他类型的字段会返回NULL值。  - Nullify：用NULL值替换原值。  - Unmasked(retain original value)：原样显示。  - Date: show only year：仅显示日期字符串的年份部分，并将月份和日期默认为01/01。  - Custom：可使用任何有效返回与被屏蔽的列中的数据类型相同的数据类型来自定义策略。   如需添加多列的脱敏策略，可单击![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0265769715.png)按钮添加。 |
      
   
   
4. 单击"Add"，在策略列表可查看策略的基本信息。
5. 用户通过Hive客户端对配置了数据脱敏策略的表执行select操作，系统将对数据进行处理后进行展示。 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   处理数据需要用户同时具有向Yarn队列提交任务的权限。
   
   
 
#### Hive行级别数据过滤
Ranger支持用户对Hive数据表执行select操作时进行行级别的数据过滤。
1. 登录Ranger WebUI界面，在首页中单击"HADOOP SQL"区域的"Hive"。 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001440015497.png)
   
   
2. 在"Row Level Filter"页签单击"Add New Policy"，添加行数据过滤策略。 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001206103787.png)
   
   
3. 根据业务需求配置相关参数。 
   表4Hive行数据过滤参数 
   | 参数名称                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | Policy Name           | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                             |
   | Policy Conditions     | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                   |
   | Policy Label          | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                        |
   | Hive Database         | 配置当前策略适用的Hive中数据库名称。                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | Hive Table            | 配置当前策略适用的Hive中的表名称。                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Description           | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | Audit Logging         | 是否审计此策略。                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | Row Filter Conditions | 在"Select Role"、"Select Group"、"Select User"列选择已创建好的需要授予权限的对象，单击"Add Conditions"，添加策略适用的IP地址范围，然后再单击"Add Permissions"，勾选"select"权限。 单击"Row Level Filter"，填写数据过滤规则。 例如过滤表A中"name"列"zhangsan"行的数据，过滤规则为：name \<\> 'zhangsan'。更多信息可参考Ranger官方文档。 如需添加更多规则，可单击![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0265769717.png)按钮添加。 |
      
   
   
4. 单击"Add"，在策略列表可查看策略的基本信息。
5. 用户通过Hive客户端对配置了数据脱敏策略的表执行select操作，系统将对数据进行处理后进行展示。 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   处理数据需要用户同时具有向Yarn队列提交任务的权限。
   
   
 
