數據脫敏
更新時間 2025-02-05 09:37:30
最近更新時間: 2025-02-05 09:37:30
分享文章
本頁介紹天翼云TeleDB數據庫中數據脫敏。
脫敏是指在用戶無感知的情況下,對非授權用戶返回被脫敏的數據。其主要原理是通過某種運算法則,在真實數據返回給訪問終端前,按照既定規則,將原始數據映射到另一種形式(可以支持多種變化),該映射規則對查詢用戶不可見,且轉換后的形式不能做逆向操作(即轉換為原始數據)。
說明無感知是指用戶使用的查詢操作變化,也無需增加額外的運算操作。
非授權用戶是指沒有訪問權限的用戶,以訪問表為例,用戶具備該表的查詢權限,但被限制對某些字段真實值的獲得。
例如:
安全員通過脫敏配置接口,對表的某些敏感字段設置數據脫敏規則。這樣原系統中的所有用戶(包括管理員)再去查看表數據時,都得到的脫敏規則使能后的結果,且規則下發后立即生效,無需停機或者重啟。
相應的,對于原本正常訪問的數據庫用戶,定義為授權用戶,安全員可以將這些數據庫用戶定義為某些對象的白名單用戶,即給這些數據庫用戶添加白名單屬性。這些白名單用戶在登錄系統完成鑒權后,就被系統識別為授權用戶,訪問表的方式也是沒有變化的,而且獲得的都是原始數據。
所以,從以上兩個維度實現了更細粒度的數據訪問控制,是對現有訪問控制的增強,而且做到對現有業務系統無感知。
創建數據脫敏策略
- 切換到godlike用戶,創建 tbl_datamask_xx表、tbl_datamask_yy表、tbl_datamask_zz表,并插入數據。
\c regression godlike
create table tbl_datamask_xx( i int, i_m int, ii int2, ii_m int2, j bigint, j_mbigint, x varchar, x_m varchar, y text, y_m text) distribute by shard(i);
NOTICE: Replica identity is needed for shard table,
please add to this table
through "alter table" command.
insert into tbl_datamask_xx values(1024, 1024, 7788,
7788,42949672960,42949672960,
'112233201804035566', '112233201804035566','abcdefghijk', 'abcdefghijk');
insert into tbl_datamask_xx(i, x) values(1025, 'all is null');
insert into tbl_datamask_xx(i, x, x_m, y_m) 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 tbl_datamask_yy( i int, i_m int, ii int2, ii_m int2, j bigint, j_mbigint, x varchar, x_m varchar, y text, y_m text) distribute by shard(i);;
使用mls_admin用戶創建數據脫敏策略
案例1:api健壯性測試
NOTICE: Replica identity is needed for shard table, please add to this table
through "alter table" command.
insert into tbl_datamask_yy values(1024, 1024, 7788, 7788,
42949672960,42949672960, '112233201804035566', '112233201804035566','abcdefghijk', 'abcdefghijk');
create table tbl_datamask_zz ( 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 tbl_datamask_zz values(1024,'x','y');
- 使用mls_admin用戶創建數據脫敏策略。
\c regression mls_admin
select current_database();
current_database
------------------
regression
(1 row)
select current_user;
current_user
--------------
mls_admin
(1 row)