更新时间:2024-12-11 GMT+08:00

配置Hive动态脱敏

使用场景

Hive动态脱敏功能开启后,配置脱敏列的数据可以参与计算,计算结果输出时不可见,在集群内脱敏策略会根据血缘关系自动传递,更大的发挥数据的价值同时保障数据的隐私性。

使用约束

  • 不支持Hudi表的脱敏。
  • 不支持涉及直接读写HDFS的操作的脱敏。
  • 不支持复杂数据类型array、map、struct的脱敏。
  • 自定义脱敏策略仅支持字符串类型字段,且脱敏后的值会强制设置为“***”。
  • 脱敏策略传递时,若目标表已有脱敏策略且与源表有冲突,则目标表脱敏策略强制重置为“Custom:“***””。
  • 简单的未提交Yarn任务的查询操作,脱敏结果与Ranger上配置的脱敏策略一致,Customer类型脱敏策略输出结果为“***”。简单的查询操作例如:select * from 表名;、select * from 表名 limit xxx;。
  • 提交Yarn任务的复杂查询,字符串字段类型脱敏结果与Ranger上配置的脱敏策略一致,其他类型字段脱敏都按“Nullify”脱敏策略处理。

配置Hive动态脱敏

  1. 登录FusionInsight Manager页面,选择“集群 > 服务 > Hive > 配置”,在搜索框中搜索“hive.dynamic.masked.enabled”,修改HiveServer实例的该参数值为“true”。
  2. 单击“保存”保存配置。单击“实例”,勾选所有HiveServer实例,选择“更多 > 重启实例”,输入当前用户密码后单击“确定”重启所有HiveServer实例。
  3. 以客户端安装用户登录安装了Hive客户端节点,执行如下命令:

    cd 客户端安装目录

    source bigdata_env

    source Hive/component_env

    kinit 组件业务用户集群未启用Kerberos认证(普通模式)请跳过该操作)

  4. 登录Hive客户端,并执行以下命令创建Hive表:

    beeline

    create table hivetest(a int, b string);

    insert into hivetest values (1,"test01"), (2,"test02");

  5. 参考Hive数据脱敏,给hivetest表的字段b配置脱敏策略,验证脱敏是否生效:

    select * from hivetest;

    如下图显示则表示数据脱敏成功:

    图1 配置脱敏策略成功

  6. 验证脱敏策略的传递性:

    create table hivetest02 as select * from hivetest;

    等待1分钟左右Ranger策略同步至Hive组件后,执行以下命令验证脱敏策略是否传递成功:

    select * from hivetest02;

    如下图显示则表示脱敏策略传递成功:

    图2 脱敏策略传递成功

  7. 6新建的表数据脱敏成功则表示动态脱敏配置已生效,可使用管理员用户rangeradmin登录Ranger管理页面,在首页中单击“HADOOP SQL”区域的“Hive”,单击“Masking”页签,可以查看到自动生成的对应表的脱敏策略。例如,表hivetest02的脱敏策略“policy_synced_from_table_default_hivetest02_b”:

    图3 自动生成的表的脱敏策略