
# 添加HetuEngine的Ranger访问权限策略
#### 操作场景
在企业大数据平台的数据分析场景中，HetuEngine作为高性能SQL查询引擎，承担着跨数据源快速查询分析的核心职责，分析师需通过HetuEngine查询多源数据库的表和列数据生成业务报表，开发人员需调试SQL语句验证数据处理逻辑。若直接开放全量数据源的数据库、表、列访问权限，可能导致敏感列数据泄露，或非授权用户误操作修改数据表结构；若仅做简单的数据源级权限限制，又会因数据粒度管控不足，无法适配不同用户的精准数据访问需求。
管理员可通过Ranger为HetuEngine用户配置精细化的操作数据源的数据库、表、列的管理权限策略。
#### 前提条件
- 集群中已安装Ranger服务且服务运行正常。
- 集群中已创建需要配置权限的用户、用户组或Role，如果是新创建的用户，需等待用户自动同步至Ranger后才可以配置相关权限策略。

- 相关用户已加入hetuuser组。
- 在使用HetuEngine前，请确保客户端操作用户/连接数据源的配置文件中的用户已具备预期的操作权限，如果没有请参考对应的数据源权限配置。
 
#### 操作步骤
1. 使用Ranger管理员用户登录Ranger WebUI页面，具体操作可参考[登录Ranger WebUI界面](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1850.html)。
2. 在首页中单击"PRESTO"区域的"HetuEngine"。
3. 在"Access"页签单击"Add New Policy"，添加HetuEngine权限控制策略。
4. 根据业务需求配置相关参数。 
   "授予访问表所在的Catalog策略"为基础策略，配置其他策略前必须先确保配置了此策略，可参考[表2]进行配置。
   表1HetuEngine权限参数 
   | 参数名称              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   |:---|:---|
   | Policy Name       | 策略名称，可自定义，不能与本服务内其他策略名称重复。 - Enabled：启用当前策略。  - Disabled：不启用当前策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | Policy Conditions | IP过滤策略，可自定义，配置当前策略适用的主机节点IP，可填写一个或多个IP或IP段，并且IP填写仅支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | Policy Label      | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | Presto Catalog    | 适用该策略的数据源Catalog名称，填写\*时表示所有Catalog。 - Include：策略适用于当前输入的对象。  - Exclude：策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | Schema            | 适用该策略的schema名称，填写\*时表示所有schema。 - Include：策略适用于当前输入的对象。  - Exclude：策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | table             | 适用该策略的table/view名称，填写\*时表示所有table。 - Include：策略适用于当前输入的对象。  - Exclude：策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Column            | 适用该策略的列名，填写\*时表示所有列。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | Description       | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | Audit Logging     | 该策略命中时是否生成审计日志。 - Yes：当用户触发该策略的权限校验时，无论校验结果是允许（Allow）还是拒绝（Deny），会生成一条审计日志。  - No：当用户触发该策略的权限校验时，不会生成任何审计日志。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | Allow Conditions  | 策略允许条件，配置本策略内允许的权限及例外。 在"Select Role"、"Select Group"、"Select User"列选择已创建好的需要授予权限的Role、用户组或用户。 单击"Add Conditions"，添加策略适用的IP地址范围，单击"Add Permissions"，添加对应权限。 - Select：查询权限  - Insert：插入权限  - Create：创建权限  - Drop：drop权限  - Delete：删除权限  - Use：use权限  - Alter：alter权限  - Update: update权限  - Admin：admin权限  - All：所有执行权限（涵盖Admin权限）  - Select/Deselect All：全选/取消全选   如需添加多条权限控制规则，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724867161.png)按钮添加。 如需当前条件中的用户或用户组管理本条策略，可勾选"Delegate Admin"，这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略，它还可以基于原始策略创建子策略。 |
   | Deny Conditions   | 策略拒绝条件，配置本策略内拒绝的权限及例外，配置方法与"Allow Conditions"相同。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
    表2常见权限配置场景 
   | 任务场景                                                                                               | 角色授权操作                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | 授予访问表所在的Catalog策略 **此策略为基础策略，在配置其他策略前必须先确保配置了此策略。**                 | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的资源所在的catalog，如"hive"。  3. 在"Select User"中填授权的Hetu用户。  4. 在"Permissions"中勾选"Select"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 授予访问远端HetuEngine表的权限 **此策略为远端HetuEngine表的基础策略，在配置其他策略前必须先确保配置了此策略。** | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的表所在的catalog，"systemremote"和"svc"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入"\*"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入"\*"。  5. 在"table"下方的下拉框中选中"column"，同时在其对应的输入框中输入"\*"。  6. 在"Select User"中填授权的远端HetuEngine用户。  7. 在"Permissions"中勾选"Create、Drop、Select、Insert"。                                                                                  |
   | 创建schema                                                                                           | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权的schema名称。如果填"\*"，表示对所有当前catalog下的所有schema进行授权。  4. 在"Select User"中填授权的Hetu用户。  5. 在"Permissions"中勾选"Create"。                                                                                                                                                                                                                                                                                          |
   | 删除schema                                                                                           | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权的schema名称。如使用"\*"，表示对所有当前catalog下的所有schema进行授权。  4. 在"Select User"中填授权的Hetu用户。  5. 在"Permissions"中勾选"Drop"。                                                                                                                                                                                                                                                                                                         |
   | 创建表                                                                                                | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"Select User"中填授权的Hetu用户。  6. 在"Permissions"中勾选"Create"。                                                                                                                                                            |
   | 删除表                                                                                                | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"Select User"中填授权的Hetu用户。  6. 在"Permissions"中勾选"Drop"。                                                                                                                                                                         |
   | 修改表结构（alter table）                                                                                 | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"Select User"中填授权的Hetu用户。  6. 在"Permissions"中勾选"Alter"。   **ALTER TABLE table_name DROP \[IF EXISTS\] PARTITION partition_spec\[, PARTITION partition_spec, ...\]; 的操作需要额外授予Table级别的"delete"和Column级别的"select"权限。**  |
   | 查看数据表（show tables）                                                                                 | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的表所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入允许show table的目标schema，如"default"。  4. 在"Select User"中填授权的Hetu用户。  5. 在"Permissions"中勾选"Select"。                                                                                                                                                                                                                                                                                                                             |
   | 表数据插入（insert table）                                                                                | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"Select User"中填授权的Hetu用户。  6. 在"Permissions"中勾选"Insert"。                                                                                                                                                             |
   | 删除数据（delete）                                                                                       | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"Select User"中填授权的Hetu用户。  6. 在"Permissions"中勾选"Delete"。                                                                                                                                                                |
   | 查询数据（select）                                                                                       | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"table"下方的下拉框中选中"column"，同时在其对应的输入框中输入要授权的目标column。如使用"\*"，表示对所有当前table下的所有column进行授权  6. 在"Select User"中填授权的Hetu用户。  7. 在"Permissions"中勾选"Select"。   |
   | 查看表字段（show columns）                                                                                | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写要授权的table所在的catalog，如"hive"。  3. 在"Presto Catalog"下方的下拉框中选中"schema"，同时在其对应的输入框中输入要授权table所在的schema，如"default"。  4. 在"schema"下方的下拉框中选中"table"，同时在其对应的输入框中输入要授权的目标table。如使用"\*"，表示对所有当前schema下的所有table进行授权。  5. 在"table"下方的下拉框中选中"column"，同时在其对应的输入框中输入要授权的目标column。如使用"\*"，表示对所有当前table下的所有column进行授权。  6. 在"Select User"中填授权的Hetu用户。  7. 在"Permissions"中勾选"Select"。    |
   | 会话参数配置（set session）                                                                                | 1. 在"Policy Name"填写策略名称。  2. 在"Presto Catalog"填写"\*"。  3. 在"Select User"中填授权的Hetu用户。  4. 在"Delegate Admin"中进行勾选。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 配置并保存权限策略后，预计30秒左右生效。
   
   - 目前的权限管控可以到达列的级别。
    
   
   
5. （可选）添加策略有效期。在页面右上角单击"Add Validity period"，设置"Start Time"和"End Time"，选择"Time Zone"。单击"Save"保存。 
   如需添加多条策略有效期，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676748094.png)按钮添加。如需删除策略有效期，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724747297.png)按钮删除。
   
   
6. 单击"Add"，在策略列表可查看策略的基本信息。等待策略生效后，验证相关权限是否正常。 
   如需禁用某条策略，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724747293.png)按钮编辑策略，设置策略开关为"Disabled"。
   如果不再使用策略，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724867157.png)按钮删除策略。
   
   
 
 #### 配置HetuEngine数据脱敏
Ranger支持对HetuEngine数据进行脱敏处理（Data Masking），可对用户执行的select操作的返回结果进行处理，以屏蔽敏感信息。
1. 登录Ranger WebUI界面，在首页中单击"PRESTO"区域的"HetuEngine"。
2. 在"Masking"页签单击"Add New Policy"，添加HetuEngine数据脱敏策略。
3. 根据业务需求配置相关参数。 
   表3HetuEngine数据脱敏参数 
   | 参数名称              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | Policy Name       | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Policy Conditions | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | Policy Label      | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Presto Catalog    | 配置当前策略使用的Catalog名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | Presto Schema     | 配置当前策略使用的数据库名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Presto Table      | 配置当前策略使用的表名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Presto Column     | 配置当前策略使用的列名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Description       | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | Audit Logging     | 该策略命中时是否生成审计日志。 - Yes：当用户触发该策略的权限校验时，无论校验结果是允许（Allow）还是拒绝（Deny），会生成一条审计日志。  - No：当用户触发该策略的权限校验时，不会生成任何审计日志。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | Transfer Mask     | 开启动态脱敏时该策略是否自动传递。 配置HetuEngine动态脱敏请参考[使用HetuEngine动态脱敏功能](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300675.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 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：用值的哈希值替换原值。  - Nullify：用NULL值替换原值。  - Unmasked(retain original value)：原样显示。  - Custom：可使用任何有效返回与被屏蔽的列中的数据类型相同的数据类型来自定义策略。   如需添加多列的脱敏策略，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676907802.png)按钮添加。 |
      
   
   
4. 单击"Add"，在策略列表可查看策略的基本信息。
5. 用户通过HetuEngine客户端对配置了数据脱敏策略的表执行select操作，系统将对数据进行处理后进行展示。
 
#### 配置HetuEngine行级别数据过滤
Ranger支持用户对HetuEngine数据表执行select操作时进行行级别的数据过滤。
1. 登录Ranger WebUI界面，在首页中单击"PRESTO"区域的"HetuEngine"。
2. 在"Row Level Filter"页签单击"Add New Policy"，添加行数据过滤策略。
3. 根据业务需求配置相关参数。 
   表4HetuEngine行数据过滤参数 
   | 参数名称                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | Policy Name           | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Policy Conditions     | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                             |
   | Policy Label          | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Presto Catalog        | 配置当前策略使用的Catalog名称。                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | Presto Schema         | 配置当前策略使用的数据库名称。                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Presto Table          | 配置当前策略使用的表名称。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Description           | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | Audit Logging         | 该策略命中时是否生成审计日志。 - Yes：当用户触发该策略的权限校验时，无论校验结果是允许（Allow）还是拒绝（Deny），会生成一条审计日志。  - No：当用户触发该策略的权限校验时，不会生成任何审计日志。                                                                                    |
   | 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-lts-mrs/zh-cn_image_0000001676748114.png)按钮添加。 |
      
   
   
4. 单击"Add"，在策略列表可查看策略的基本信息。
5. 用户通过HetuEngine客户端对配置了数据脱敏策略的表执行select操作，系统将对数据进行处理后进行展示。
 
#### 相关文档
- 配置Ranger策略时，不同条件的优先级可参考[Ranger权限策略条件判断优先级](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1851.html#mrs_01_1851__section2381255446)。
- 如需查看Ranger中的相关权限设置对象信息，例如用户、用户组、Role，可参考[查看Ranger用户权限同步信息](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1854.html)。
- MRS集群中新用户可在Manager中进行创建，可参考[创建MRS集群用户](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0345.html)。
 
