
# 添加Spark的Ranger访问权限策略
#### 操作场景
Spark SQL是MRS集群中常用的数据处理引擎，默认情况下Spark SQL继承Hive的权限体系。在多用户共享集群的场景下，默认权限无法满足精细化管控需求------例如需要限制特定用户只能查询某些表、对敏感字段进行脱敏处理、或限制用户只能查看本部门数据。
Ranger提供了统一的权限管理能力，Ranger管理员可通过Ranger为Spark用户配置访问权限策略、数据脱敏策略和行级别数据过滤策略，实现Spark SQL的精细化权限管控，兼顾业务安全性与可用性。本文适用于Ranger管理员和需要配置Spark SQL权限的运维人员。
本文包含以下内容：
- **配置Spark访问权限策略**：控制用户对Spark数据库、表、列的查询、创建、删除等操作权限。
- **配置Spark表数据脱敏**：对用户查询结果中的敏感字段进行脱敏处理（如屏蔽手机号）。
- **配置Spark行级别数据过滤**：根据用户身份过滤查询结果中的数据行（如仅允许查看本部门数据）。
 
#### Ranger鉴权原理
**Spark SQL为何在Hive插件下配置权限策略？**
Spark SQL共享Hive的元数据（Metastore），数据库、表、列等元信息与Hive完全一致。因此Ranger将Spark SQL的权限策略统一归入Hive插件管理，在Ranger WebUI可同时管理Hive和Spark SQL的权限策略。在策略中配置的database、table、column对Hive和Spark SQL同时生效。
**Allow Conditions与Deny Conditions的优先级**
Ranger策略中Allow Conditions和Deny Conditions可同时配置，优先级规则为：Deny优先于Allow。即如果用户同时命中Allow和Deny条件，Deny条件生效，用户被拒绝访问。更多优先级规则请参考[Ranger权限策略条件判断优先级](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1851.html#mrs_01_1851__section2381255446)。
#### 约束与限制
- Spark/Spark2x组件开启或关闭Ranger鉴权后，需要重启Spark/Spark2x服务才可生效。
- 修改Ranger鉴权后需要重新下载客户端，或手动刷新客户端配置文件"*客户端安装目录* /Spark2x/spark/conf/spark-defaults.conf"。
  - 开启Ranger鉴权：spark.ranger.plugin.authorization.enable=true，同时需要修改参数"spark.sql.authorization.enabled"值为"true"。
  
  - 关闭Ranger鉴权：spark.ranger.plugin.authorization.enable=false。
   
- Spark/Spark2x中，spark-beeline（即连接到JDBCServer的应用）支持Ranger的IP过滤策略（即Ranger权限策略中的**Policy Conditions**），spark-submit与spark-sql不支持。
- MRS 3.3.0-LTS及之后的版本中，Spark2x服务改名为Spark，服务包含的角色名也有差异，例如JobHistory2x变更为JobHistory，相关涉及服务名称、角色名称的描述和操作请以实际版本为准。
- 在Ranger上为用户添加Spark SQL的访问策略后，需要在HDFS的访问策略中添加相应的路径访问策略，否则无法访问数据文件，具体请参考[添加HDFS的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1856.html)。
  - Ranger策略中global策略仅用于联合Temporary UDF Admin权限，用来控制UDF包的上传。
  
  - 通过Ranger对Spark SQL进行权限控制时，不支持empower语法。
  
  - Ranger策略不支持本地路径以及HDFS上带空格的路径。
  
  - 开启Ranger鉴权后，对视图操作时，默认需要具备相关表的权限，如果需要对视图进行独立鉴权，不依赖相关表的权限，需要将参数"spark.ranger.plugin.viewaccesscontrol.enable"设置为"true"。
    - 使用非Spark-beeline方式提交作业时，需要在"*客户端安装目录*/Spark/spark/conf/spark-defaults.conf"中设置该参数。
    
    - 使用Spark-beeline方式提交作业时，需要在"*客户端安装目录*/Spark/spark/conf/spark-defaults.conf"和服务端"JDBCserver \> 自定义配置" 中设置该参数。
     
   
 
#### 前提条件
- 集群中已安装Ranger服务且服务运行正常。
- 集群中已创建需要配置权限的用户、用户组或Role，如果是新创建的用户，需等待用户自动同步至Ranger后才可以配置相关权限策略。

- 相关用户已加入hive用户组。

- 集群中Hive服务已启用Ranger鉴权功能，如果手动开启，需要按照"启用Hive服务的Ranger鉴权 \> 重启Hive服务 \> 重启Spark服务 \> 启用Spark服务的Ranger鉴权 \> 重启Spark服务"的顺序进行操作。
 
#### 配置Spark访问权限策略
1. 使用Ranger管理员用户登录Ranger WebUI页面，具体操作可参考[登录Ranger WebUI界面](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1850.html)。
2. 在首页中单击"HADOOP SQL"区域的组件插件名称如"Hive"。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676907718.png "点击放大")
   
   
3. 在"Access"页签单击"Add New Policy"，添加Spark权限控制策略。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724747193.png "点击放大")
   
   
4. 根据业务需求配置相关参数。 
   表1Spark权限参数 
   | 参数名称              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|
   | Policy Name       | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | Policy Conditions | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Policy Label      | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | database          | 适用该策略的Spark数据库名称。 "Include"策略适用于当前输入的对象，"Exclude"表示策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | table             | 适用该策略的Spark表名称。 如果需要添加基于UDF的策略，可切换为UDF，然后输入UDF的名称。 "Include"策略适用于当前输入的对象，"Exclude"表示策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | column            | 适用该策略的列名，填写\*时表示所有列。 "Include"策略适用于当前输入的对象，"Exclude"表示策略适用于除去当前输入内容之外的其他对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | Description       | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Audit Logging     | 该策略命中时是否生成审计日志。 - Yes：当用户触发该策略的权限校验时，无论校验结果是允许（Allow）还是拒绝（Deny），会生成一条审计日志。  - No：当用户触发该策略的权限校验时，不会生成任何审计日志。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 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-lts-mrs/zh-cn_image_0000001676907714.png)按钮添加。 如需当前条件中的用户或用户组管理本条策略，可勾选"Delegate Admin"，这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略，它还可以基于原始策略创建子策略。 |
   | Deny Conditions   | 策略拒绝条件，配置本策略内拒绝的权限及例外，配置方法与"Allow Conditions"类似。Deny条件优先于Allow条件生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      
   表2常见权限配置场景 
   | 任务场景         | 角色授权操作                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | role admin操作 | 1. 在首页中单击"Settings"，选择"Roles \> Add New Role"。  2. 设置"Role Name"为"admin"，在"Users"区域，单击"Select User"，选择对应用户名。  3. 单击Add Users按钮，在对应用户名所在行勾选"Is Role Admin"，单击"Save"保存配置。   **用户绑定Hive管理员角色后，在每个维护操作会话中，还需要执行以下操作**： 1. 以客户端安装用户，登录安装集群客户端的节点。  2. 执行以下命令配置环境变量。 ``` source 客户端安装目录/bigdata_env ```   3. 执行以下命令认证用户。 ``` kinit Spark业务用户 ```   4. 执行以下命令登录客户端工具。 ``` spark-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"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 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操作     | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写并选择对应的数据库，在"table"右侧填写并选择对应的表，在"column"右侧填写并选择对应的列名称，支持通配符（"\*"）匹配。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，勾选"update"。  5. 用户还需要具有Yarn任务队列的"submit-app"权限，默认情况下，hadoop用户组具有向所有Yarn任务队列"submit-app"权限。具体配置请参考[添加Yarn的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1859.html)。                                                                                                                                                                                                                                                                                        |
   | GRANT操作      | 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"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | VIEW与INDEX权限 | 1. 在"Policy Name"填写策略名称。  2. "database"右侧填写并选择对应的数据库，在"table"右侧填写并选择对应的VIEW或INDEX名称，在"column"右侧填写并选择"\*"。  3. 在"Allow Conditions"区域，单击"Select User"下选择框选择用户。  4. 单击"Add Permissions"，参照表格上述相关操作，根据需求，给用户勾选相应权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 其他用户库表操作     | 1. 参照表格上述操作添加对应权限。  2. 给当前用户添加其他用户库表的HDFS路径的读、写、执行权限，具体配置请参考[添加HDFS的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1856.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   在Ranger上为用户添加Spark SQL的访问策略后，需要在HDFS的访问策略中添加相应的路径访问策略，否则无法访问数据文件，具体请参考[添加HDFS的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1856.html)。
   - Ranger策略中global策略仅用于联合Temporary UDF Admin权限，用来控制UDF包的上传。
   
   - 通过Ranger对Spark SQL进行权限控制时，不支持empower语法。
   
   - Ranger策略不支持本地路径以及HDFS上带空格的路径。
   
   - 开启Ranger鉴权后，对视图操作时，默认需要具备相关表的权限，如果需要对视图进行独立鉴权，不依赖相关表的权限，需要将参数spark.ranger.plugin.viewaccesscontrol.enable设置为true。
     - 使用非Spark-beeline方式提交作业时，需要在"*客户端安装目录*/Spark/spark/conf/spark-defaults.conf"中设置该参数。
     
     - 使用Spark-beeline方式提交作业时，需要在"*客户端安装目录*/Spark/spark/conf/spark-defaults.conf"和服务端"JDBCserver \> 自定义配置" 中设置该参数。
      
    
   
   
5. 单击"Add"，在策略列表可查看策略的基本信息。等待策略生效后，验证相关权限是否正常。 
   如果需要禁用某条策略，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676748018.png)按钮编辑该策略，设置策略开关为"Disabled"。
   如果不再使用某条策略，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676748014.png)按钮删除该策略。
   **验证方法：**
   以被授权用户登录Spark客户端，执行SQL命令验证权限是否生效。
   例如执行查询语句（如SELECT \* FROM 数据库名.表名 LIMIT 10;），确认权限策略是否按预期生效。
   
   
 
#### 配置Spark表数据脱敏
Ranger支持对Spark数据进行脱敏处理（Data Masking），可对用户执行的select操作的返回结果进行处理，以屏蔽敏感信息。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
修改服务端参数后需要重启Spark服务，重启期间Spark作业将无法提交，请在业务低峰期操作。
1. 修改服务端和客户端的"spark.ranger.plugin.masking.enable"参数值为"true"。 
   - 服务端：登录FusionInsight Manager页面，选择"集群 \> 服务 \> Spark/Spark2x \> 配置 \> 全部配置"，搜索并修改所有的"spark.ranger.plugin.masking.enable"参数值为"true"，保存配置并重启服务。
   
   - 客户端：登录Spark客户端节点，进入目录"*{客户端安装目录}*/Spark/spark/conf/spark-defaults.conf"，修改"spark.ranger.plugin.masking.enable"参数值为"true"。
   
   
   
   
2. 登录Ranger WebUI界面，在首页单击"HADOOP SQL"区域的组件插件名称如"Hive"。
3. 在"Masking"页签单击"Add New Policy"，添加Spark权限控制策略。
4. 根据业务需求配置相关参数。 
   表3Spark数据脱敏参数 
   | 参数名称              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   |:---|:---|
   | Policy Name       | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | Policy Conditions | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | Policy Label      | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | Hive Database     | 配置当前策略适用的Spark中的数据库名称，仅支持设置一个数据库名，并且不支持"\*"通配符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | Hive Table        | 配置当前策略适用的Spark中的表名称，仅支持设置一个表名，并且不支持"\*"通配符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | Hive Column       | 配置当前策略适用的Spark中的列名称，仅支持设置一个列名，并且不支持"\*"通配符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | Description       | 策略描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Audit Logging     | 该策略命中时是否生成审计日志。 - Yes：当用户触发该策略的权限校验时，无论校验结果是允许（Allow）还是拒绝（Deny），会生成一条审计日志。  - No：当用户触发该策略的权限校验时，不会生成任何审计日志。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | Transfer Mask     | 开启动态脱敏时该策略是否自动传递。 配置Spark动态脱敏请参考[配置Spark动态脱敏](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2493065.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | Mask Conditions   | 在"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：对数据进行Hash处理。  - Nullify：用NULL值替换原值。  - Unmasked(retain original value)：不脱敏，显示原数据。  - Date: show only year：日期格式数据只显示年份信息。  - Custom：可使用任何有效Hive UDF（返回与被屏蔽的列中的数据类型相同的数据类型）来自定义策略。   如需添加多列的脱敏策略，可单击![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724867065.png)按钮添加。 |
   | Deny Conditions   | 策略拒绝条件，配置本策略内拒绝的权限及例外，配置方法与"Allow Conditions"类似。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      
   
   
5. 单击"Add"，在策略列表可查看策略的基本信息。 
   **验证方法**：以被脱敏用户登录Spark客户端，执行SELECT \* FROM 数据库名.表名 LIMIT 10;，确认敏感字段已按策略进行脱敏处理。
   
   
 
#### 配置Spark行级别数据过滤
Ranger支持用户对Spark数据表执行select操作时进行行级别的数据过滤。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
修改服务端参数后需要重启Spark服务，重启期间Spark作业将无法提交，请在业务低峰期操作。
1. 修改服务端和客户端"spark.ranger.plugin.rowfilter.enable"参数值为"true"。 
   - 服务端：登录FusionInsight Manage页面，选择"集群 \> 服务 \> Spark/Spark2x \> 配置 \> 全部配置"，搜索并修改所有的"spark.ranger.plugin.rowfilter.enable"参数值为"true"，保存配置并重启服务。
   
   - 客户端：登录Spark客户端节点，进入目录"*{客户端安装目录}*/Spark/spark/conf/spark-defaults.conf"，修改"spark.ranger.plugin.rowfilter.enable"参数值为"true"。
   
   
   
   
2. 登录Ranger WebUI界面，在首页单击"HADOOP SQL"区域的组件插件名称如"Hive"。
3. 在"Row Level Filter"页签单击"Add New Policy"，添加行数据过滤策略。
4. 根据业务需求配置相关参数。 
   表4Spark行数据过滤参数 
   | 参数名称                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | Policy Name           | 策略名称，可自定义，不能与本服务内其他策略名称重复。                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | Policy Conditions     | IP过滤策略，可自定义，配置当前策略适用的主机节点，可填写一个或多个IP或IP段，并且IP填写支持"\*"通配符，例如：192.168.1.10,192.168.1.20或者192.168.1.\*。                                                                                                                                                                                                                                                                                                                                             |
   | Policy Label          | 为当前策略指定一个标签，您可以根据这些标签搜索报告和筛选策略。                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Hive Database         | 配置当前策略适用的Spark中的数据库名称，仅支持设置一个数据库名，并且不支持"\*"通配符。                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Hive Table            | 配置当前策略适用的Spark中的表名称，仅支持设置一个表名，并且不支持"\*"通配符。                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 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_0000001724747201.png)按钮添加。 |
      
   
   
5. 单击"Add"，在策略列表可查看策略的基本信息。 
   **验证方法**：以被过滤用户登录Spark客户端执行SELECT \* FROM 数据库名.表名 LIMIT 10;，确认查询结果已按过滤规则筛选，仅返回符合条件的数据行。
   
   
 
#### 相关文档
- 配置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)。
 
#### 常见问题
**Q：修改权限策略后多久生效？**
A：Ranger策略修改后，各组件插件默认每30秒自动拉取一次最新策略，因此策略修改后大约30秒内生效，无需重启服务。如果需要立即生效，可重启对应组件服务。
**Q：在Hive插件下配置的Spark SQL策略是否会影响Hive的权限？**
A：是的。由于Spark SQL共享Hive的元数据和Ranger权限策略，在Hive插件下配置的策略对Hive和Spark SQL同时生效。如果需要为Hive和Spark SQL配置不同的权限策略，建议通过不同的用户或用户组进行区分。
**Q：数据脱敏和行级别过滤能否同时生效？**
A：可以同时生效。当同时配置了数据脱敏策略和行级别过滤策略时，Ranger会先执行行级别过滤（追加where条件），再对过滤后的结果执行数据脱敏处理。两者互不影响，可同时使用。
