KingbaseES 数据脱敏功能介绍
数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。
KingbaseES主要提供动态数据脱敏功能。
动态数据脱敏(Dynamic Data Masking)是与生产环境紧密关联的,访问敏感数据时实时地进行脱敏,主要用于直接访问生产数据的场景,在屏蔽敏感信息的同时也保证了源数据的一致性和有效性。
功能开启
- 修改配置文件kingbase.conf 文件中shared_preload_libraries参数,增加数据脱敏插件 sys_anon
- 重启数据库。
- 以sso用户登录数据库开启脱敏开关。
ALTER SYSTEM SET anon.enable = on; CALL sys_reload_conf();
数据脱敏策略配置
1.添加脱敏策略
anon.add_policy(policy_name text,
objname text,
username text,
func_desc text,
para_list text
)
参数说明:
policy_name 脱敏策略名,不可为空,策略名唯一。
objname 待脱敏的对象,不可为空,格式为:模式. 表. 列(不写模式时为表. 列,模式默认设置为public)。
username 待脱敏的对象用户名,可为空,为空对所有用户脱敏。
func_desc 脱敏使用的函数(只需要填写函数名),可为空,为空设置为默认脱敏。支持使用的脱敏函数详见表脱敏函数说明。
para_list 脱敏函数的参数列表(目前仅适用于部分脱敏),若函数无参数,则该项无效;若函数为部分脱敏时需要填写,参数之间用‘,’分隔,例如’2,2’,参数列表个数为2。
2.修改脱敏策略
anon.alter_policy(policy_name text,
username text,
func_desc text,
para_list text
)
3.删除脱敏策略
anon.remove_policy(policy_name text)
4.数据脱敏配置查询
数据脱敏策略设置可通过系统视图anon.all_policy查询
5.脱敏函数
示例
1.创建测试用户
create user u1 with password '123456';
2.创建测试表,插入数据
create table t1(id int,t_def boolean,t_str varchar(20),t_date timestamptz,t_int int,t_mail text, t_part text);
insert into t1 values (1,true,'kingbase',now(),5678,'kes@kingbase.com','datamasking');
3.授权,检查脱敏开关是否已开启
test=# grant select on t1 to u1;
GRANT
test=# show anon.enable;
anon.enable
-------------
on
(1 行记录)
test=> select * from t1;
id | t_def | t_str | t_date | t_int | t_mail | t_part
----+-------+----------+-------------------------------+-------+------------------+-------------
1 | t | kingbase | 2022-05-17 17:36:03.872724+08 | 5678 | kes@kingbase.com | datamasking
(1 行记录)
4.设置脱敏规则
\c - sso
select anon.add_policy('pol1','public.t1.t_def','u1','default','');
select anon.add_policy('pol2','public.t1.t_str','u1','random_string','');
select anon.add_policy('pol3','public.t1.t_date','u1','random_date','');
select anon.add_policy('pol4','public.t1.t_int','u1','random_int','');
select anon.add_policy('pol5','public.t1.t_mail','u1','email_mask','');
select anon.add_policy('pol6','public.t1.t_part','u1','partial','2,3');
5.切换至u1用户查询t1表
test=> \c - u1
您现在已经连接到数据库 "test",用户 "u1".
test=> select * from t1;
id | t_def | t_str | t_date | t_int | t_mail | t_part
----+-------+----------+-------------------------------+-----------+------------------+-------------
1 | f | vj7VJxl9 | 1976-04-25 04:42:54.452940+08 | 850842047 | ***@********.com | da******ing
(1 行记录)
6.注意事项
- 数据脱敏策略仅允许安全员sso 进行配置及查看,其他用户均无权限。
- 一个脱敏对象(列)上只能配置一种脱敏策略。若是同一个脱敏对象上存在多个策略,则所有策略都不会生效。若要对多个用户生效脱敏测试,添加策略时参数username请置为空。
KINGBASE研究院