如何测试达梦数据库的动态脱敏功能?

版本要求: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
------

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值