动态数据脱敏和静态数据脱敏适用于不同的场景,两者之间没有优劣之分,主要是以
使用场景来选择合适的脱敏模式。
openGauss
最新版本已正式对外支持动态数据脱敏特性,
下面的章节将围绕
openGauss
动态数据脱敏机制进行阐述。
目前主流的动态数据脱敏技术路线分为“结果集解析”和“语句改写”两条路径:
*
结果集解析:不改写发给数据库的语句,需要提前获悉数据表结构,待数据库返回结
果后再根据表结构判断集合内哪些数据需要脱敏,并逐条改写结果数据。
*
语句改写:将包含敏感字段查询的语句改写,对于查询中涉及的敏感字段(表列)通
过外层嵌套函数的方式改写,使得数据库运行查询语句时返回不包含敏感数据的结果
集。
从性能上来说,结果集解析方法需要在数据库返回结果集后再逐行字段解析、规则匹
配、数据脱敏,需要逐个修改结果集中每一行数据,因此脱敏耗时与结果集容量线性相关
整体性能损耗较大;而语句改写通过将较为简短的查询语句进行解析并重写的方式,对语
句中的敏感列外嵌了一层脱敏函数,数据库执行命令时将自动执行脱敏函数实现数据脱敏
返回的结果集即为脱敏后的数据。该方式仅仅改写一条查询语句而不涉及结果集的解析,
因此能够极大地降低性能损耗,
openGauss
便是采用了语句改写的方式,
10
万条敏感数据
脱敏的性能损耗低于
5%
。
另外,对于比较复杂的命令,查询字段一般包含大量同名字段、表别名、嵌套查询等,
基于结果集解析首先需要将结果集与真实查询列进行一一对应才可判断出该字段是否需要
脱敏,查询越复杂识别难度越高,匹配的准确率就越低,而基于语句的改写可精确的对复
杂查询涉及的字段嵌套脱敏函数。
综上分析,基于语句改写方法的数据脱敏无论对于性能还是准确性来说都是较为优秀
的脱敏方案,
openGauss
基于语句改写思想,在查询解析获取查询树后,根据用户定义的
脱敏策略识别查询树目标结点
(Node)
,并对待脱敏结点进行改写构造“脱敏查询树”,再交由
数据库内核执行最终返回脱敏后数据。
openGauss
动态数据脱敏解决方案
动态数据脱敏功能在工业界通常以中间插件或数据脱敏系统(
Data Masking System
)
的形态加载,通过在客户端与服务端数据库之间拦截命令或结果集来实现脱敏,而
openGauss
内置动态数据脱敏特性,使数据库无需借助外部插件就可以实现数据脱敏,有
效地降低数据中间传输而导致敏感数据泄漏的风险。
openGauss
从
1.1.0
版本定义了一套完整的内置安全策略模型,基于该模型用户可以定
义资源标签来标识敏感数据,针对不同的资源标签类别和内容可定义相关的安全策略机制
而动态数据脱敏就是其中一种。
2.1
内置安全策略
内置安全策略(
Security Policy
)模型,是指通过配置一系列安全策略来对用户行为进
行识别和保护,提供了包括保护用户敏感数据的能力。
评论