配置Hive动态脱敏
使用场景
Hive动态脱敏功能开启后,配置脱敏列的数据可以参与计算,计算结果输出时不可见,在集群内脱敏策略会根据血缘关系自动传递,更大的发挥数据的价值同时保障数据的隐私性。
使用约束
- 不支持Hudi表的脱敏。
- 不支持涉及直接读写HDFS的操作的脱敏。
- 不支持复杂数据类型array、map、struct的脱敏。
- 自定义脱敏策略仅支持字符串类型字段,且脱敏后的值会强制设置为“***”。
- 脱敏策略传递时,若目标表已有脱敏策略且与源表有冲突,则目标表脱敏策略强制重置为“Custom:“***””。
- 简单的未提交Yarn任务的查询操作,脱敏结果与Ranger上配置的脱敏策略一致,Customer类型脱敏策略输出结果为“***”。简单的查询操作例如:select * from 表名;、select * from 表名 limit xxx;。
- 提交Yarn任务的复杂查询,字符串字段类型脱敏结果与Ranger上配置的脱敏策略一致,其他类型字段脱敏都按“Nullify”脱敏策略处理。
配置Hive动态脱敏
- 登录FusionInsight Manager页面,选择“集群 > 服务 > Hive > 配置”,在搜索框中搜索“hive.dynamic.masked.enabled”,修改HiveServer实例的该参数值为“true”。
- 单击“保存”保存配置。单击“实例”,勾选所有HiveServer实例,选择“更多 > 重启实例”,输入当前用户密码后单击“确定”重启所有HiveServer实例。
- 以客户端安装用户登录安装了Hive客户端节点,执行如下命令:
cd 客户端安装目录
source bigdata_env
source Hive/component_env
kinit 组件业务用户(集群未启用Kerberos认证(普通模式)请跳过该操作)
- 登录Hive客户端,并执行以下命令创建Hive表:
beeline
create table hivetest(a int, b string);
insert into hivetest values (1,"test01"), (2,"test02");
- 参考Hive数据脱敏,给hivetest表的字段b配置脱敏策略,验证脱敏是否生效:
select * from hivetest;
如下图显示则表示数据脱敏成功:
图1 配置脱敏策略成功
- 验证脱敏策略的传递性:
create table hivetest02 as select * from hivetest;
等待1分钟左右Ranger策略同步至Hive组件后,执行以下命令验证脱敏策略是否传递成功:
select * from hivetest02;
如下图显示则表示脱敏策略传递成功:
图2 脱敏策略传递成功
- 6新建的表数据脱敏成功则表示动态脱敏配置已生效,可使用管理员用户rangeradmin登录Ranger管理页面,在首页中单击“HADOOP SQL”区域的“Hive”,单击“Masking”页签,可以查看到自动生成的对应表的脱敏策略。例如,表hivetest02的脱敏策略“policy_synced_from_table_default_hivetest02_b”:
图3 自动生成的表的脱敏策略