综上分析,基于语句改写方法的数据脱敏无论对于性能还是准确性来说都是较为优秀的脱敏方案,openGauss基于语句改写思想,在查询解析获取查询树后,根据用户定义的脱敏策略识别查询树目标结点(Node),并对待脱敏结点进行改写构造“脱敏查询树”,再交由数据库内核执行最终返回脱敏后数据。
openGauss 动态数据脱敏解决方案
动态数据脱敏功能在工业界通常以中间插件或数据脱敏系统(Data Masking System)的形态加载,通过在客户端与服务端数据库之间拦截命令或结果集来实现脱敏,而openGauss内置动态数据脱敏特性,使数据库无需借助外部插件就可以实现数据脱敏,有效地降低数据中间传输而导致敏感数据泄漏的风险。
openGauss从1.1.0版本定义了一套完整的内置安全策略模型,基于该模型用户可以定义资源标签来标识敏感数据,针对不同的资源标签类别和内容可定义相关的安全策略机制,而动态数据脱敏就是其中一种。
2.1 内置安全策略
内置安全策略(Security Policy)模型,是指通过配置一系列安全策略来对用户行为进行识别和保护,提供了包括保护用户敏感数据的能力。
资源标签(Resource Label)是Security Policy的基础,它的本质是一系列数据库资源集合。为了能够统一管理数据库资源,数据管理者可以将多个数据库资源添加到同一个资源标签下,通过对资源标签配置策略来实现批量地对数据库资源进行管理的能力。
例如,多张数据表中均包含银行卡号“creditcard”这种敏感信息列,那么可以将这些列统一地划分到资源标签“creditcard_label”中,随后管理员便可以通过对“creditcard_label”配置脱敏策略以实现对所有相关敏感列的批量配置。
动态数据脱敏策略(Dynamic Data Masking)是Security Policy模型支持的一类安全策略,数据控制者对用户表中的敏感数据识别后(敏感数据发现和识别不在该特性范围内),对包含敏感列的资源标签配置数据脱敏策略,并依据不同的应用场景来限制用户对数据的访问行为和信息提取行为,以达到对敏感信息保护的能力。
总的来说,资源标签是用来归类数据库资源,并将这些资源统一地投入到各种安全策略中去管理。动态数据脱敏特性便是利用资源标签去识别敏感数据,然后匹配脱敏策略,实现对敏感数据的屏蔽。
2.2 动态数据脱敏核心思路
openGauss中的动态数据脱敏是以内置安全插件(security plugin)的方式与数据库部署在一起的,业务方面无需额外适配就可使用,SQL的解析与脱敏策略匹配交由openGauss安全策略模块负责,业务在配置脱敏策略后即可生效。
2.2.1 配置脱敏策略
脱敏策略的配置主要包括三个方面——脱敏方式(Masking Function)、脱敏对象(Resource Label)、用户过滤器(Masking Filter)。
- 脱敏方式,是指该脱敏策略使用何种方式对目标字段进行脱敏,目前openGauss预置了7种脱敏方式:creditcardmasking、 basicemailmasking、fullemailmasking、alldigitsmasking、shufflemasking、randommasking、maskall。分别适用于不同的脱敏场景。