暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 数据屏蔽

ASKTOM 2019-08-13
971

问题描述

亲爱的汤姆,

根据某些条件,我们要求屏蔽 (数据不应可读) 一行的某些列。
例如,在开发环境中,出于数据保护的目的,需要根据特定条件屏蔽表客户的信息。

CREATE TABLE customer (
    last_name    VARCHAR2(25),
    first_name   VARCHAR2(25),
    address      VARCHAR2(25),
    sensitive_Data char
);

insert into customer values('A', 'A', '10','N'); 
insert into customer values('B', 'B', '11','N'); 
insert into customer values('C', 'C', '12','Y'); 
复制

在生产环境中,如果我们对客户进行选择,结果将如下所示:
select *
from customer;

LAST_NAME  FIRST_NAME  ADDRESS SENSITIVE_DATA 
-------- ---------- ------- -------------
A   A 10    N 
B    B  11   N 
C    C  12   Y 
复制

在开发环境中,需要屏蔽相同的信息,如下所示:
LAST_NAME  FIRST_NAME  ADDRESS SENSITIVE_DATA 
-------- ---------- ------- -------------
A   A 10    N 
B    B  11   N 
XX    XX  12   Y 
复制

我们尝试使用DBMS_REDACT功能,这是屏蔽整个列而不是特定行,我们想了解oracle是否有任何实用程序/软件包共享以满足此要求

谢谢和问候,
德瓦拉姆·苏钦德拉

专家解答

密文应用于整个表 (或视图),所以要实现你想要使用密文,你可以做:

create view SENSITIVE as select * from CUSTOMER where SENSITIVE_DATA = 'Y';

create view V_CUSTOMER as
select * from SENSITIVE
union all
select * from CUSTOMER where SENSITIVE_DATA = 'N'
复制


然后将密文策略应用于称为敏感的视图。

如果您准备简单地将数据设为null,则可以为此使用DBMS_RLS。有关示例,请参见此处

https://asktom.oracle.com/pls/asktom/asktom.search?tag=column-masking

另一种选择实际上是更改数据以在将其复制到Dev时将其屏蔽。有关更多详细信息,请参见以下内容

https://www.oracle.com/technetwork/database/options/data-masking-subsetting/overview/ds-security-dms-2245926.pdf

或者用一些PLSQL构建一些东西,例如

https://connor-mcdonald.com/2019/04/15/quick-and-easy-masking/
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论