数据脱敏 本页介绍天翼云TeleDB数据库中数据脱敏。 脱敏是指在用户无感知的情况下,对非授权用户返回被脱敏的数据。其主要原理是通过某种运算法则,在真实数据返回给访问终端前,按照既定规则,将原始数据映射到另一种形式(可以支持多种变化),该映射规则对查询用户不可见,且转换后的形式不能做逆向操作(即转换为原始数据)。 说明 无感知是指用户使用的查询操作变化,也无需增加额外的运算操作。 非授权用户是指没有访问权限的用户,以访问表为例,用户具备该表的查询权限,但被限制对某些字段真实值的获得。 例如: 安全员通过脱敏配置接口,对表的某些敏感字段设置数据脱敏规则。这样原系统中的所有用户(包括管理员)再去查看表数据时,都得到的脱敏规则使能后的结果,且规则下发后立即生效,无需停机或者重启。 相应的,对于原本正常访问的数据库用户,定义为授权用户,安全员可以将这些数据库用户定义为某些对象的白名单用户,即给这些数据库用户添加白名单属性。这些白名单用户在登录系统完成鉴权后,就被系统识别为授权用户,访问表的方式也是没有变化的,而且获得的都是原始数据。 所以,从以上两个维度实现了更细粒度的数据访问控制,是对现有访问控制的增强,而且做到对现有业务系统无感知。 创建数据脱敏策略 1. 切换到godlike用户,创建 tbldatamaskxx表、tbldatamaskyy表、tbldatamaskzz表,并插入数据。 c regression godlike create table tbldatamaskxx( i int, im int, ii int2, iim int2, j bigint, jmbigint, x varchar, xm varchar, y text, ym text) distribute by shard(i); NOTICE: Replica identity is needed for shard table, please add to this table through "alter table" command. insert into tbldatamaskxx values(1024, 1024, 7788, 7788,42949672960,42949672960, '112233201804035566', '112233201804035566','abcdefghijk', 'abcdefghijk'); insert into tbldatamaskxx(i, x) values(1025, 'all is null'); insert into tbldatamaskxx(i, x, xm, ym) values(1026, 'all is null', 'this is a very very very looooooooong string, i guess here is over 32 bytes length, emmmmm', 'tbase!!~~~'); create table tbldatamaskyy( i int, im int, ii int2, iim int2, j bigint, jmbigint, x varchar, xm varchar, y text, ym text) distribute by shard(i);; 使用mlsadmin用户创建数据脱敏策略 案例1:api健壮性测试 NOTICE: Replica identity is needed for shard table, please add to this table through "alter table" command. insert into tbldatamaskyy values(1024, 1024, 7788, 7788, 42949672960,42949672960, '112233201804035566', '112233201804035566','abcdefghijk', 'abcdefghijk'); create table tbldatamaskzz ( i int , j text , z text ) distribute by shard(i);; NOTICE: Replica identity is needed for shard table, please add to this table through "alter table" command. insert into tbldatamaskzz values(1024,'x','y'); 2. 使用mlsadmin用户创建数据脱敏策略。 c regression mlsadmin select currentdatabase(); currentdatabase regression (1 row) select currentuser; currentuser mlsadmin (1 row)