配置步骤
安装 Ranger Plugin:
- 下载并安装 Ranger Spark插件。
配置 Spark:
- 修改 spark-site.xml 文件,添加以下配置:
spark.sql.extensions=org.apache.ranger.authorization.spark.authorizer.RangerSparkSQLExtension spark.sql.hive.metastore.sharedPrefixes=org.apache.ranger配置 Ranger:
- 使用Ranger管理员用户rangeradmin登录Ranger管理页面。
- 在首页中单击“HADOOP SQL”区域的组件插件名称,例如“hive”。

- 在“Access”页签单击“Add New Policy”,添加Spark权限控制策略。

- 根据业务需求配置相关参数。
Spark权限参数如下:
设置权限场景如下:参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:172.138.1.10,172.138.1.20或者172.138.1.*。 Policy Label 为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。 database 将适用该策略的Spark数据库名称。
“Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。table 将适用于该策略的Spark表名称。
如果需要添加基于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:全选/取消全选
如需添加多条权限控制规则,可单击
按钮添加。
如需当前条件中的用户或用户组管理本条策略,可勾选“Delegate Admin”,这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略,它还可以基于原始策略创建子策略。Deny Conditions 策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”类似。
| 任务场景 | 角色授权操作 |
| role admin操作 |
<strong>说明:</strong> Ranger页面的“Settings”选项只有rangeradmin用户有权限访问。用户绑定Hive管理员角色后,在每个维护操作会话中,还需要执行以下操作:
例如,Spark客户端安装目录为“/opt/client”,执行source/opt/client/bigdata_env。
kinit Spark业务用户
spark-beeline
set role admin; |
| 创建库表操作 |
|
| 删除库表操作 |
<strong>说明:</strong> 对于CarbonData表,只有对应表的OWNER,才能执行“drop”操作。 |
| Alter操作 |
|
| LOAD操作 |
|
| INSERT操作 |
|
| GRANT操作 |
|
| ADD JAR操作 |
|
| VIEW与INDEX权限 |
|
| 其他用户库表操作 |
|
> **说明:**
>
> 说明:在Ranger上为用户添加Spark SQL的访问策略后,需要在HDFS的访问策略中添加相应的路径访问策略,否则无法访问数据文件。
>
- 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 > 自定义配置” 中设置该参数。
- 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。如需禁用某条策略,可单击
按钮编辑策略,设置策略开关为“Disabled”。
如果不再使用策略,可单击
按钮删除策略。 - 重启 Spark:
- 重启 Spark 服务以应用配置。
Spark表数据脱敏
Ranger支持对Spark数据进行脱敏处理(Data Masking),可对用户执行的select操作的返回结果进行处理,以屏蔽敏感信息。
- 修改服务端和客户端spark.ranger.plugin.masking.enable参数值为true。
- 服务端:登录TBDS Manager页面,选择“标准集群 > 集群服务 > Spark > 配置管理”,搜索并修改所有的spark.ranger.plugin.masking.enable参数值为true,保存配置并重启服务。
- 客户端:登录Spark客户端节点,进入目录“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”,修改spark.ranger.plugin.masking.enable参数值为true。
- 登录Ranger WebUI界面,在首页单击“HADOOP SQL”区域的组件插件名称如“Hive”。
- 在“Masking”页签单击“Add New Policy”,添加Spark权限控制策略。
- 根据业务需求配置相关参数。
Spark数据脱敏参数:参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:172.138.1.10,172.138.1.20或者172.138.1.*。 Policy Label 为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。 Hive Database 配置当前策略适用的Spark中的数据库名称。 Hive Table 配置当前策略适用的Spark中的表名称。 Hive Column 配置当前策略适用的Spark中的列名称。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Mask Conditions 在“Select Group”、“Select User”列选择已创建好的需要授予权限的用户组或用户,单击“Add Conditions”,添加策略适用的IP地址范围,然后再单击“Add Permissions”,勾选“select”权限。
单击“Select Masking Option”,选择数据脱敏时的处理策略:- Redact:用x屏蔽所有字母字符,用0屏蔽所有数字字符。
- Partial mask: show last 4:只显示最后的4个字符。
- Partial mask: show first 4:只显示开始的4个字符。
- Hash:对数据进行Hash处理。
- Nullify:用NULL值替换原值。
- Unmasked(retain original value):不脱敏,显示原数据。
- Date: show only year:日期格式数据只显示年份信息。
- Custom:可使用任何有效Hive UDF(返回与被屏蔽的列中的数据类型相同的数据类型)来自定义策略。
如需添加多列的脱敏策略,可单击
按钮添加。Deny Conditions 策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”类型。
Spark行级别数据过滤
Ranger支持用户对Spark数据表执行select操作时进行行级别的数据过滤。
修改服务端和客户端spark.ranger.plugin.rowfilter.enable参数值为true。
- 服务端:登录TBDS Manager页面,选择“标准集群 > 集群服务 > Spark > 配置管理”,搜索并修改所有的spark.ranger.plugin.rowfilter.enable参数值为true,保存配置并重启服务。
- 客户端:登录Spark客户端节点,进入目录“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”,修改spark.ranger.plugin.rowfilter.enable参数值为true。
登录Ranger WebUI界面,在首页单击“HADOOP SQL”区域的组件插件名称如“Hive”。
在“Row Level Filter”页签单击“Add New Policy”,添加行数据过滤策略。
根据业务需求配置相关参数。
Spark行数据过滤参数:参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:172.138.1.10,172.138.1.20或者172.138.1.*。 Policy Label 为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。 Hive Database 配置当前策略适用的Spark中的数据库名称,仅支持设置一个数据库名,并且不支持“*”通配符。 Hive Table 配置当前策略适用的Spark中的表名称,仅支持设置一个表名,并且不支持“*”通配符。 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官方文档。
如需添加更多规则,可单击
按钮添加。单击“Add”,在策略列表可查看策略的基本信息。
用户通过Spark客户端对配置了数据脱敏策略的表执行select操作,系统将对数据进行处理后进行展示。


按钮编辑策略,设置策略开关为“Disabled”。
按钮删除策略。