Hologres為您提供資料脫敏功能,支援按照列層級設定脫敏。啟用該功能後,如果您查詢的資料涉及敏感資訊,則在展示結果中,該部分資料會被脫敏展示,提高了對敏感及私密資料的保護。本文為您介紹Hologres如何開啟、查詢及刪除資料脫敏功能。
背景資訊
隨著巨量資料時代的來臨,巨量資料、雲端運算和人工智慧等新技術應用不斷深化,為資料的深度挖掘及分析提供了強有力的支撐,巨量資料中蘊含的巨大價值被逐步挖掘出來。與此同時也帶來了敏感及私密資訊保護方面的棘手難題。
Hologres提供的資料脫敏功能,實現了資料在高效共用、挖掘及分析的同時,使得敏感及隱私資訊不被泄露,提高了對敏感及私密資料的保護。
使用限制
出於安全考慮,Hologres暫不支援從設定了脫敏規則的表和列向未設定脫敏規則的表和列匯入資料,相關報錯資訊如下。
錯誤原因:ERROR: The insert table has not set SECURITY LABEL
暫不支援針對設定了脫敏規則的表進行UNION和DISTINCT查詢,相關報錯資訊如下。
錯誤原因:ERROR: UNION is not support on security item
資料脫敏會一定程度的影響查詢效能,影響程度和脫敏方式、資料量都有關,效能有10%~20%的下降,極端情境可能存在數倍效能下降。
從Hologres V2.2.38及V3.0.19版本起,為了增強資料安全性,對於啟用了資料脫敏功能的Database,預設情況下無法消費Binlog,會出現報錯Replication does not support hologres anon now, could choose to turn off hg_anon_enable for current user
。如需消費Binlog,需要關閉對Binlog消費使用者的資料脫敏設定。具體操作如下:
重要
當前的檢查僅與以下資料脫敏設定關聯,無法通過設定如 unmasked
等脫敏規則使消費生效。
ALTER ROLE "<user>" SET hg_anon_enable = OFF;
ALTER ROLE "<user>" IN DATABASE <database> SET hg_anon_enable = OFF;
使用資料脫敏
Hologres支援對目標列或目標使用者佈建資料脫敏。使用資料脫敏前,您需登入目標資料庫開啟脫敏功能。完成後可配置對應的脫敏規則,針對某一列或某個使用者佈建脫敏。具體操作步驟如下。
為目標資料庫開啟資料脫敏。
資料脫敏功能預設不開啟,需要Superuser登入至目標資料庫開啟該功能,開啟命令及相關參數說明如下。
命令:
CREATE EXTENSION IF NOT EXISTS hg_anon;
ALTER DATABASE <db_name> SET hg_anon_enable = on;
樣本:
CREATE EXTENSION IF NOT EXISTS hg_anon;
ALTER DATABASE test SET hg_anon_enable = on;
參數說明:
參數 | 參數的相關描述 |
hg_anon | hg_anon是Hologres內部封裝的擴充函數,您需要調用該擴充函數才能開啟資料脫敏功能。 |
<db_name> | 需要開啟資料脫敏功能的資料庫名稱。使用時需要替換<db_name>為實際資料庫名稱。 |
hg_anon_enable | 選擇開啟或關閉資料脫敏功能,取值如下: 預設該參數設定為off。 |
設定脫敏列。
可由Superuser或表Owner對目標列進行脫敏,具體命令、樣本、參數說明如下。
命令:
SECURITY LABEL FOR hg_anon ON COLUMN <tablename>.<col_name> IS <label_name>;
樣本:對holotest表的ID列按照名稱脫敏。
SECURITY LABEL FOR hg_anon ON COLUMN holotest.id IS 'name';
參數說明:
參數 | 描述 |
hg_anon | hg_anon是Hologres內部封裝的擴充函數,您需要調用該擴充函數才能開啟資料脫敏功能。 |
<tablename> | 需要脫敏的列所在的表名稱。使用時需要替換<tablename>為實際表名稱。 |
<col_name> | 需要脫敏的列名稱。使用時需要替換<col_name>為實際列名稱。 |
label_name | 系統預設的脫敏函數,您可以使用show hg_anon_labels; SQL查看當前資料庫設定的label_name。 |
從HologresV1.1版本開始,預設的label_name如下。
label_name | 說明 | 樣本 |
name | 姓名脫敏。 | 脫敏前:李華;脫敏後:*華。 脫敏前:王小強;脫敏後:**強。
|
email | 郵箱地址脫敏。 | 脫敏前:lihuang@alibaba.com;脫敏後:lih***@alibaba.com |
ip | IP地址脫敏。 | 脫敏前:192.0.2.1;脫敏後:192.*.*.*。 |
id | 社會安全號碼碼脫敏。 | 脫敏前:110345188812011234;脫敏後:1****************4 |
phone | 電話號碼脫敏。 | 脫敏前:13900001234;脫敏後:*********34。 |
bank_id | 銀行卡、信用卡帳號脫敏。 | 脫敏前:2349867902834701928;脫敏後:***************1928。 |
hash | 使用MD5演算法進行脫敏。 | 脫敏前:浙江省杭州市文一西路;脫敏後:dbf894b409d4a2ef17dfd9c7fdcafcd8。 |
first_mask | 定義了一個first_mask的規則,只顯示第一個字元。 | 脫敏前:123456789;脫敏後:1********。 |
脫敏結果樣本:
其他相關命令
刪除已經設定的脫敏
SECURITY LABEL FOR hg_anon ON COLUMN test_hg_anon_demo.name is NULL;
查看設定的脫敏列
SELECT c.relname, a.attname, provider, label
FROM pg_seclabel s
INNER JOIN pg_catalog.pg_class c ON s.classoid = c.tableoid AND s.objoid = c.oid
INNER JOIN pg_catalog.pg_attribute a ON s.objoid = a.attrelid
WHERE a.attnum = objsubid;
使用樣本
使用Hologres資料脫敏功能完整的使用樣本如下。
建立資料庫
使用如下命令語句建立資料庫。
CREATE DATABASE hg_anon_demo;
建立範例資料表
切換到建立的資料庫,使用如下命令語句建立範例資料表。
DROP TABLE IF EXISTS personal_basic_information;
CREATE TABLE personal_basic_information
(
name TEXT
,email TEXT
,ip TEXT
,id TEXT
,phone TEXT
,bank_id TEXT
)
;
插入範例資料
使用如下命令語句,在personal_basic_information表中插入範例資料。
INSERT INTO personal_basic_information(name,email,ip,id,phone,bank_id) VALUES
('Zhang San','zhangsan@alibaba.com','127.0.0.1','142732199102290022','13900001234','4514610803067088'),
('Li Si','lisi@alibaba.com','127.0.0.1','510622198402308000','13900001111','6252470010027800'),
('Li Xiaoyao','lixiaoyao@alibaba.com','172.21.4.234','511025188812271696','13900002222','6252470010027800');
查看資料
查看資料脫敏前的資料。
SELECT * FROM personal_basic_information;
設定脫敏規則
使用如下命令語句為資料設定脫敏規則。
CREATE EXTENSION IF NOT EXISTS hg_anon;
ALTER DATABASE hg_anon_demo SET hg_anon_enable = on;
SECURITY LABEL FOR hg_anon ON COLUMN personal_basic_information.name IS 'name';
SECURITY LABEL FOR hg_anon ON COLUMN personal_basic_information.id IS 'id';
SECURITY LABEL FOR hg_anon ON COLUMN personal_basic_information.phone IS 'phone';
SECURITY LABEL FOR hg_anon ON COLUMN personal_basic_information.email IS 'email';
SECURITY LABEL FOR hg_anon ON COLUMN personal_basic_information.bank_id IS 'bank_id';
SECURITY LABEL FOR hg_anon ON COLUMN personal_basic_information.ip IS 'ip';
查看資料
請斷開資料庫,重新登入資料庫使用如下命令查看資料脫敏後的資料。
SELECT * FROM personal_basic_information;
脫敏後的資料如下所示。
使用資料保護傘進行資料脫敏
您不僅可以手工設定脫敏規則,也可以使用資料保護傘進行資料脫敏。
使用限制。
僅Hologres V1.1及以上版本支援使用資料保護傘進行資料脫敏,如果您的執行個體是V1.1以下版本,請您使用自助升級或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?。
為了能夠檢測出敏感性資料,保護傘對於主帳號設定不脫敏的規則。
目前每天9:00:00,保護傘會抽樣資料,識別敏感性資料,並對設定的敏感性資料列設定脫敏規則。
目前Hologres支援使用資料保護傘進行資料脫敏的地區有:華北2(北京)、華北3(張家口)、華東2(上海)、華東1(杭州)、華南1(深圳)、中國(香港)、新加坡、德國(法蘭克福)、馬來西亞(吉隆坡)、印尼(雅加達)、美國(矽谷)。
使用方法。
開啟脫敏功能。
資料脫敏功能預設不開啟,需要擁有Superuser許可權的使用者在對應的資料庫中執行如下命令開啟該功能。
CREATE EXTENSION IF NOT EXISTS hg_anon;
ALTER DATABASE <db_name> SET hg_anon_enable = on;
db_name為需要開啟資料脫敏功能的資料庫。
設定脫敏資料庫。
登入資料保護傘控制台,詳情請參見進入資料保護傘。
在左側導覽列,單擊,進入資料識別規則頁面。
在敏感性資料識別頁面建立一條資料識別規則,詳情請參見資料識別規則。
在左側導覽列,單擊資料脫敏管理,進入資料脫敏管理頁面。
在脫敏情境下拉式清單中,選擇Hologres展示脫敏(hologres_display_desense_code),並單擊右側選擇脫敏database。
在授權帳號脫敏對話方塊,從未脫敏database列表選擇需要脫敏的資料庫顯示在脫敏database列表中,單擊我同意授權資料保護傘對該database脫敏,單擊確定。
在資料脫敏管理頁面,單擊右上方的建立脫敏規則,詳情請參見資料脫敏管理,之後系統會對您設定的資料庫進行脫敏。