注册
关于在DMdexp上实现类似Oracle expdp的remap_data的自动脱敏效果
专栏/技术分享/ 文章详情 /

关于在DMdexp上实现类似Oracle expdp的remap_data的自动脱敏效果

Draugered 2024/06/14 999 0 0
摘要

在曾经的项目中,进行Oracle的迁移适配测试的时候,曾经收到过一种需求,需要把生产环境数据导入导出到测试环境中,然而由于数据安全性问题需要对某表进行脱敏。在Oracle的expdp工具中,可以使用remap_data达到此种效果,然而在DM dexp工具中,并未搜索到类似的功能或参数。然而,在DM仍旧可以使用其他方式达到实现dexp脱敏的效果。

使用DBMS_RLS处理脱敏数据

关于DBMS_RLS,可以查看官方内部手册,那里有较为详细的描述,这里根据DBMS_RLS包指南,创建测试数据。

  • 测试用户与测试表
conn sysdba/SYSDBA SP_CREATE_SYSTEM_PACKAGES(1,'DBMS_RLS'); create user TEST1 identified by 123456789; grant dba to test1; conn TEST1/123456789 create table TEST(id int,name varchar(20)); insert into TEST values(1,'AAA'); insert into TEST values(2,'BBB'); insert into TEST values(3,'CCC');--敏感用户数据 COMMIT;
  • 创建策略函数
CREATE OR REPLACE FUNCTION FN_GETPOLICY( P_SCHEMA IN VARCHAR2, P_OBJECT IN VARCHAR2 ) RETURN VARCHAR2 IS RESULT VARCHAR2(1000); BEGIN RESULT:='id !=3'; RETURN(RESULT); END; /
  • 加入策略
DBMS_RLS.ADD_POLICY( OBJECT_SCHEMA =>'TEST1', //数据表(或视图)所在的SCHEMA名称 OBJECT_NAME =>'TEST', //数据表(或视图)的名称 POLICY_NAME =>'TEST_POLICY', //POLICY的名称,主要用于将来对POLICY的管理 FUNCTION_SCHEMA =>'TEST1', //返回WHERE子句的函数所在SCHEMA名称 POLICY_FUNCTION =>'FN_GETPOLICY', //返回WHERE子句的函数名称 STATEMENT_TYPES =>'SELECT,INSERT,UPDATE,DELETE', //要使用该POLICY的DML类型 UPDATE_CHECK =>1, //仅适用于STATEMENT_TYPE为'INSERT,UPDATE',值为1或 0 ENABLE =>1 //是否启用,值为1或0 );
  • 验证数据
    使用TEST1查询如下:
    image.png
    至此,初步得到带有脱敏策略的测试表。

使用exp导出测试

建立如上脱敏策略后,使用dexp导出并导入到其他环境测试。
image.png
导入到其他环境(这里导入到linux测试环境):
image.png
验证数据:
image.png
可以看到,使用RLS策略导出数据可以做到针对表的脱敏处理。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服