数据脱敏背景及介绍
1.1数据库脱敏背景
伴随着互联网大数据、云服务等新兴技术的飞速发展和普及,业务上云、数据集中存储、数据共享等数据应用方式已成为未来发展的趋势,云数据库和云计算服务具有易部署、低成本、高效率、高可靠的优势,使得越来越多的消费者更倾向于将个人数据存储在云上而非个人移动硬盘中。实际上,由于数据使用场景愈加复杂,个人隐私数据泄露、被窃取的风险越来越高,仅近年来就发生数起重大数据库信息泄露事件,这对数据库安全提出了更高的要求。
数据脱敏,顾名思义就是将敏感数据通过变形、屏蔽等方式处理,其目的是保护隐私数据信息,防止数据泄露和恶意窥探。当企业或者机构收集用户个人身份数据、手机、银行卡号等敏感信息,然后将数据通过导出(非生产环境)或直接查询(结合生产环境)的方式投入使用时,按照隐私保护相关法律法规需将数据进行“脱敏”处理。
1.2 数据脱敏介绍
数据脱敏主要分为静态脱敏和动态脱敏,静态数据脱敏(Static Data Masking)采用“先脱敏-后分发”的方式,一般是将生产环境数据拷贝到测试或开发库中,导出后的数据已经改变了原始数据的内容,使得脱敏后的数据成为了测试开发源数据。而动态数据脱敏(Dynamic Data Masking)是与生产环境紧密关联的,访问敏感数据时实时地进行脱敏,主要用于直接访问生产数据的场景,在屏蔽敏感信息的同时也保证了源数据的一致性和有效性。
图1:静态脱敏与动态脱敏
动态数据脱敏和静态数据脱敏适用于不同的场景,两者之间没有优劣之分,主要是以使用场景来选择合适的脱敏模式。openGauss最新版本已正式对外支持动态数据脱敏特性,下面的章节将围绕openGauss动态数据脱敏机制进行阐述。
目前主流的动态数据脱敏技术路线分为“结果集解析”和“语句改写”两条路径:
-
结果集解析:不改写发给数据库的语句,需要提前获悉数据表结构,待数据库返回结果后再根据表结构判断集合内哪些数据需要脱敏,并逐条改写结果数据。
-
语句改写:将包含敏感字段查询的语句改写,对于查询中涉及的敏感字段(表列)通过外层嵌套函数的方式改写,使得数据库运行查询语句时返回不包含敏感数据的结果集。
从性能上来说,结果集解析方法需要在数据库返回结果集后再逐行字段解析、规则匹配、数据脱敏,需要逐个修改结果集中每一行数据,因此脱敏耗时与结果集容量线性相关,整体性能损耗较大;而语句改写通过将较为简短的查询语句进行解析并重写的方式,对语句中的敏感列外嵌了一层脱敏函数,数据库执行命令时将自动执行脱敏函数实现数据脱敏,返回的结果