产品使用-金仓数据库KingbaseES-备份数据脱敏化

关键字:

KingbaseES、数据脱敏、备份与还原、人大金仓

一、关于备份数据脱敏

1. KingbaseES数据库中对数据脱敏功能设置了开关。数据脱敏功能关闭时,数据库不会对脱敏对象进行脱敏处理。安全员(sso)如果要使 KingbaseES 系统中的数据脱敏设置生效,必须打开该开关。

anon.enable

设置审计功能是否开启的总开关,有on和off两种选择,缺省为 off。

on表示打开数据脱敏功能;

off表示关闭数据脱敏功能;

打开(或关闭)数据脱敏开关的方式有如下方式:

  • 在KingbaseES启动之前,通过修改 kingbase.conf 文件,将 anon.enable 设置为on(或off)
  • 在KingbaseES启动后,以安全员用户连接数据库,利用ALTER SYSTEM命令将 anon.enable 设置为on | off。打开(或关闭)数据脱敏开关,重载配置后,数据库系统中的数据脱敏功能立即生效(或失效)。

打开(或关闭)数据脱敏开关并重载的命令:

ALTER SYSTEM SET anon.enable = on | off
CALL sys_reload_conf();

2. 添加脱敏策略

语法:

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。

返回值说明:

无返回值

示例:

SELECT anon.add_policy('pol1','public.t1.a','u1','partial','2,2');

3. 当您需要使用脱敏备份脱敏数据时,KingbaseES支持对备份数据进行脱敏处理。

典型用例

需要对表t1备份,t1表包含两列,id列和data列,t1已对data列配置默认脱敏,被脱敏用户为u1,当您使用u1用户对表t1进行备份时:

\c - u1
create table t1 (id int, data text);
insert into t1 values (1, 'a'),(2, 'b'), (3, 'c');
\c - sso
select anon.add_policy('polx', 't1.data', 'u1','','');
./sys_dump -d test -p 54321 -U u1 -W -f test.dmp
cat test.dmp
1
2
3

可见到备份文件中表数据的第二列是脱敏的,使用默认规则将其中的字符脱敏为空,可以配置‘random_string’规则将其脱敏为随机字符串。

影响

  1. 功能影响

开启脱敏会影响备份文件中以及还原后数据库中的数据

  1. 性能影响

数据脱敏对性能的影响大小随脱敏策略及数据数量的变化而改变,单一简单策略可能使备份的性能下降2%左右,单一复杂策略可能使备份性能下降10%左右。

二、数据脱敏配置备份恢复

数据脱敏策略可以使用 sys_dump 和 sys_restore 进行备份恢复,操作步骤如下:

使用sso对每个配置了数据脱敏策略的数据库进行备份,例如:

./sys_dump -d test -p 54321 -U sso -W -F c -f anon.dmp

使用sso对新data实例进行恢复,例如:

./sys_restore -p 54321 -U sso -W -d test anon.dmp