配置Spark动态脱敏
- 本章节仅适用于MRS 3.3.1-LTS及之后版本。
- 管理面提交作业方式不支持开启动态脱敏特性。
配置场景
Spark动态脱敏开启后,配置脱敏列的数据可以参与计算,计算结果输出时不可见,在集群内脱敏策略会根据血缘关系自动传递,更大的发挥数据的价值同时,保障数据的隐私性。
使用约束
- 不支持Hudi表的脱敏。
- 不支持非SQL使用方法的脱敏。
- 不支持涉及直接读写HDFS的操作的脱敏。
- 不支持复杂类型array、map、struct的脱敏。
- 只支持spark-beeline(JDBC 连接)方式提交Spark作业。
- 脱敏策略传递时,若目标表已有脱敏策略且与源表有冲突,则目标表脱敏策略强制重置为Custom:“***”。
- 当前仅支持int、char、varchar、date、decimal、float、bigint、timestamp 、tinyint、smallint、double、string、binary数据类型的脱敏,其中int、date、decimal、float、bigint、timestamp 、tinyint、smallint、double类型配置脱敏策略后,spark-beeline查询结果存在与策略预期不一致的现象,但查询结果非原始值,如需要与策略结果保持一致,则推荐使用“Nullify”脱敏策略。
- 对于不支持的数据类型,如果配置了脱敏策略或输出列涉及脱敏传递,最终都按“Nullify”脱敏策略处理。
配置Spark动态脱敏
- 修改JDBCServer实例配置,登录FusionInsight Manager页面,选择“集群 > 服务 > Spark > 配置 > 全部配置 > JDBCServer(角色)”:
- 使用Ranger鉴权场景,在参数“custom”中添加如下自定义参数:
参数名称
值
spark.dynamic.masked.enabled
true
spark.ranger.plugin.authorization.enable
true
修改如下参数值:
参数名称
值
spark.ranger.plugin.masking.enable
true
spark.sql.authorization.enabled
true
- 对于不使用Ranger鉴权,依然使用Hive元数据鉴权场景,在参数“custom”中添加如下自定义参数:
参数名称
值
spark.ranger.plugin.use.hive.acl.enable
true
spark.dynamic.masked.enabled
true
spark.ranger.plugin.authorization.enable
false
修改如下参数值:
参数名称
值
spark.ranger.plugin.masking.enable
true
- 不使用Ranger鉴权,使用Hive元数据鉴权场景,如果Ranger中未完成Hive策略初始化,需要做以下操作:
- 开启组件Hive的“Ranger鉴权”的功能,重启Hive组件+Spark组件。
- 开启组件Spark的“Ranger鉴权”的功能,重启Spark组件。
- 关闭组件Hive的“Ranger鉴权”的功能,重启Hive组件。
- 关闭组件Spark的“Ranger鉴权”的功能,重启Spark组件。
- 登录Ranger WebUI界面,如果“HADOOP SQL”下存在Hive组件表示已经完成Hive策略初始化,不存在则未初始化。
- 如果集群同时安装了HetuEngine组件,且需要Spark动态脱敏触发策略传递时自动同步更新Ranger、HetuEngine空间的脱敏策略,需要将参数“spark.dynamic.masked.hetu.policy.sync.update.enable”设置为“true”,且需将内置用户Spark2x的Ranger用户类型调整为Admin用户类型。
- 使用Ranger鉴权场景,在参数“custom”中添加如下自定义参数:
- 保存配置,重启Spark服务。
- 登录Spark客户端节点,执行如下命令:
source bigdata_env
source Spark/component_env
安全模式执行以下命令,普通模式无需执行:
kinit test,输入密码完成认证(首次登录需要修改密码)
- 使用Spark的beeline命令提交任务,创建Spark表:
create table sparktest(a int, b string);
insert into sparktest values (1,"test01"), (2,"test02");
- 参考添加Spark2x的Ranger访问权限策略,给sparktest表配置脱敏策略,验证脱敏是否生效:
select * from sparktest;
- 验证脱敏策略传递:
create table sparktest02 as select * from sparktest;
select * from sparktest02;
出现以上结果表示,动态脱敏配置已生效,登录ranger脱敏策略管理界面可以看到有自动生成的表sparktest02的脱敏策略。