如何测试达梦数据库的动态脱敏功能?
动态脱敏 数据脱敏达梦数据库
版本要求:V8.1.3.37以上的季度版/月度版
设置:ENABLE_RLS=1 ,然后重新启动数据库服务;
数据准备:
CONN SYSDBA/SYSDBA
DROP USER USER01 CASCADE;
DROP USER WANGFANG CASCADE;
CREATE USER USER01 IDENTIFIED BY USER012345;
GRANT DBA TO USER01;
CREATE USER WANGFANG IDENTIFIED BY WANGFANG012345;
GRANT DBA TO WANGFANG;
第一步:建立测试数据表(T_MASK)
CONN USER01/USER012345
DROP TABLE T_MASK;
CREATE TABLE T_MASK(CNAME VARCHAR2(30),C_TEL VARCHAR2(18));
INSERT INTO T_MASK VALUES('LIMING','18971689386');
INSERT INTO T_MASK VALUES('WANGFANG','13129967967');
INSERT INTO T_MASK VALUES('WANGDONGDONG','027-85933213');
COMMIT;
----不要打我电话哈,贡献我自己的手机号来做测试数据。
第二步:建立测试函数
CONN USER01/USER012345
--DROP FUNCTION POLICY_FUN;
CREATE FUNCTION POLICY_FUN(P_OWNER IN VARCHAR2, P_OBJ IN VARCHAR2)
RETURN VARCHAR(8188) IS
L_RET VARCHAR(8188);
BEGIN
IF (P_OWNER = USER) THEN
L_RET := 'CNAME=''LIMING''';
ELSE
L_RET := 'CNAME=SYS_CONTEXT(''USERENV'',''SESSION_USER'')';
END IF;
RETURN L_RET;
END;
/
第三步:创建掩码函数
CONN USER01/USER012345
--DROP FUNCTION MASK_FUN;
CREATE OR REPLACE FUNCTION MASK_FUN(C_TEL VARCHAR) RETURN VARCHAR AS
BEGIN
RETURN INSSTR(C_TEL,5,4,'****');
END;
/
第四步:创建脱敏策略
CONN SYSDBA/SYSDBA
--DBMS_RLS.DROP_POLICY('USER01','T_MASK','C1_POLICY_CHAR');
BEGIN
DBMS_RLS.ADD_POLICY(OBJECT_SCHEMA => 'USER01',
OBJECT_NAME => 'T_MASK',
POLICY_NAME => 'C1_POLICY_CHAR',
FUNCTION_SCHEMA => 'USER01',
POLICY_FUNCTION => 'POLICY_FUN',
STATEMENT_TYPES => 'SELECT',
SEC_RELEVANT_COLS => 'C_TEL',
SEC_RELEVANT_COLS_OPT => DBMS_RLS.ALL_ROWS);
END;
/
--DBMS_RLS.DROP_MASK('USER01', 'T_MASK', 'C_TEL');
DBMS_RLS.ADD_MASK('USER01', 'T_MASK', 'C_TEL', 'USER01', NULL, 'MASK_FUN');
第五步:USER01查看执行脱敏后的表中数据
CONN USER01/USER012345
SELECT * FROM USER01.T_MASK;
------
--行号 CNAME C_TEL
---------- ------------ ------------
--1 LIMING 18971689386
--2 WANGFANG 1312****967
--3 WANGDONGDONG 027-****3213
------
------SYSDBA查看表中数据(完全未脱敏)
CONN SYSDBA/SYSDBA
SELECT * FROM USER01.T_MASK;
------
--行号 CNAME C_TEL
---------- ------------ ------------
--1 LIMING 18971689386
--2 WANGFANG 13129967967
--3 WANGDONGDONG 027-85933213
------
------WANGFANG查看执行脱敏后的表中数据
CONN WANGFANG/WANGFANG012345
SELECT * FROM USER01.T_MASK;
--行号 CNAME C_TEL
---------- ------------ ------------
--1 LIMING 1897****386
--2 WANGFANG 13129967967
--3 WANGDONGDONG 027-****3213
------
更多推荐
所有评论(0)