使用HetuEngine动态脱敏功能
背景介绍
虽然Ranger已经支持了静态脱敏的能力,但是静态脱敏后会出现数据不可用的问题,主要表现为:
- 脱敏的数据无法匹配谓词过滤
- 脱敏后的数据无法进行Join等联合查询操作
- 只支持string类型的列脱敏
- 通过建立View的方式访问脱敏数据,脱敏策略失效
静态脱敏场景单一,限制较多,数据在计算前就已经被脱敏,为满足更灵活的脱敏需求,HetuEngine提供支持数据“可算不可见”、集群内脱敏策略自动传递等数据脱敏能力,即动态脱敏。
操作场景
通过MRS Ranger配置HetuEngine脱敏信息,HetuEngine支持数据“可算不可见”、集群内脱敏策略自动传递等数据脱敏能力,包括查询和写入场景。
- 支持配置脱敏后,对表进行查询,配置脱敏的列数据将进行自动脱敏。配置脱敏的列能正常进行谓词匹配,仅对输出结果进行脱敏。
- 配置脱敏的列能正常做联合查询(Join、Union、In、Exist等),仅对最后的输出结果进行脱敏。
- CTS后新表数据自动脱敏。如果数据源为本集群hive数据源,则数据本身不脱敏,同步脱敏策略,查询结果脱敏;其他数据源数据脱敏后输出
- ITS后新表数据支持脱敏。如果数据源为本集群hive数据源,则数据本身不脱敏,同步脱敏策略,查询结果脱敏;其他数据源数据脱敏后输出。同步脱敏策略时有以下几种情况:若目标表对应列没有脱敏策略,则脱敏策略直接同步;若目标表已有脱敏策略,且与源表相同,则脱敏策略不变;若目标表已有脱敏策略且与源表有冲突,则目标表脱敏策略强制重置为“***”。
- 通过View引用的脱敏列信息,查询View后,数据也是脱敏的。
- 配置脱敏后,对应函数计算、函数嵌套、以及子查询嵌套结果均脱敏。
- 查询使用别名、CTS使用别名情况支持脱敏。
注意事项与使用限制
- 动态脱敏仅支持在安全模式集群中使用。
- 当前Ranger配置CUSTOM自定义策略时,动态脱敏一律按照“*”策略处理,例如“ABCDE”脱敏为“*****”。
- 由于Ranger策略更新检测周期为30s,执行CTS等语句如果涉及到策略同步,Ranger侧新建的策略生效存在一定的延迟。
- 跨域场景下,对端HetuEngine作为本端的数据源,如果需要脱敏需在本端集群配置脱敏策略。
- 由于查询视图时,实际访问表的是视图owner,所以在为敏感数据表创建视图时,需要对创建视图的用户脱敏。
开启动态脱敏操作步骤
- 使用可访问HetuEngine WebUI界面的用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 在“计算实例”页签,在待操作的实例所属租户所在行的“操作”列单击“配置”。
- 在“自定义配置”单击“增加”添加如下参数。
表1 HetuEngine动态脱敏参数 参数
取值示例
参数文件
描述
hetu.dynamic.masked.enabled
true
- coordinator.config.properties
- worker.config.properties
- 开启HetuEngine动态脱敏功能
- 默认值:false
- 添加完成后将“立即启动”置为“是”,单击“确定”。
- 动态脱敏与静态脱敏均基于Ranger配置的脱敏策略,需要开启HetuEngine服务的Ranger功能。
- Ranger脱敏策略介绍以及配置方法见HetuEngine数据脱敏。