脱敏功能调研介绍
数据库脱敏是一种采用专门的脱敏算法对敏感数据进行变形、屏蔽、替换、随机化、加密,并将敏感数据转化为虚构数据的技术。
按照作用位置、实现原理不同,数据脱敏可以划分为静态数据脱敏(Static Data Masking,SDM)和动态数据脱敏(Dynamic Data Masking,DDM)
脱敏分类
静态脱敏
-
一般用于非生产环境,在不能将敏感数据存储于非生产环境的场合中,通过脱敏程序转换生产数据,使数据内容及数据间的关联能够满足测试、开发中的问题排查需要,同时进行数据分析、数据挖掘等分析活动。
-
技术原理主要通过内置规则来自动识别敏感数据,通过内置的脱敏算法进行数据的漂白。识别敏感数据有两种方式,第一种是通过人工指定,比如通过正则表达式来指定敏感数据的格式(Oracle公司开发的Oracle DataMasking Pack中就使用了这一种方法来指定);第二种方式为自动识别,该方式是基于敏感数据的特征来进行敏感数据的自动识别。识别出敏感数据之后,就需要使用脱敏算法来进行脱敏。在比较常见的数据脱敏系统中,算法的选择一般是通过手工指定,可对常见数据如姓名、证件号等敏感数据进行脱敏。常见的内置脱敏算法有同义替换、部分数据遮蔽、混合屏蔽、确定性屏蔽、可逆脱敏等。
动态脱敏
- 通常用于生产环境,在敏感数据被低权限个体访问时才对其进行脱敏,并能够根据策略执行相应的脱敏方法。在大数据环境中,数据的海量、异构、实时处理将成为常态,能够在不影响数据使用的前提下,在用户层面实现数据屏蔽、加密、隐藏、审计或内容封锁的动态脱敏具有更强的优势。
-
基于横向或纵向的安全等级要求,依据用户角色、职责和其他规则变换敏感数据。目前主流的实现机制是基于代理的实现机制,在这种机制中,用户的数据请求被代理实时在线拦截并经脱敏后返回,此过程对于用户及应用程序完全透明。这种机制的脱敏判断是在数据容器外实现,因而能够适用于非关系型数据库,如大数据环境。脱敏代理部署在数据容器的出口处以网关方式运行,检测并处理所有用户与服务器间的数据请求及响应,无需对数据存储方式及应用程序代码做出任何更改。
梧桐db脱敏介绍
依赖Anon,首先安装Anon
梧桐db脱敏继承Postgres12版本+脱敏功能,依赖Anon,安装步骤如下:
Step1. 修改需要使用anon库的session_preload_libraries
如果session_preload_libraries之前不为空,将 'anon' 添加到列表中
Step2. 退出当前session,重新连接,使得guc生效。然后创建 anon 扩展
CREATE EXTENSION anon CASCADE;
Step3. 初始化anon
SELECT anon.init()
基本的动态脱敏
Anon基于pg 12引入的特性: Security Label,Event Triggers。
在当前数据库中,如果发生了建表/新建mask规则(通过 SECURITY LABEL), 就会执行
mask_update。mask_update就是从security lable 中扫描masking规则,将每个
anon.sourceschema下面的表,在anon.maskschema下建立对应的视图。
Step1. 创建一个schema, 将其设置为需要脱敏的schema,设置一个脱敏的目标的
schema(不存在后续会自动创建)
Step2. 打开动态脱敏
SELECT anon.start_dynamic_masking();
Step3. 创建一个读取脱敏信息的用户,给他标记
Step4. 创建表格,插入数据
CREATE TABLE people ( id TEXT, firstname TEXT, lastname TEXT, phone TEXT)
DISTRIBUTED BY (id);
INSERT INTO people VALUES ('T1','Sarah', 'Conor','0609110911');
Step5. 声明脱敏规则
Step6. 另一个用户登录,select 得到脱敏后数据
另一个用户查询到的是视图,视图在anon.maskschema下。
基本的查询当前有那些脱敏规则
select * from anon.pg_masking_rules;