Oracle Data Redaction实验记录

2024-02-12 01:30

本文主要是介绍Oracle Data Redaction实验记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Oracle从11.2.0.4以后新增了数据校订作为一个新的安全特性。Oracle Data Redaction(Oracle数据校订),它提供了一个有效且易于实现的方法来屏蔽敏感信息。该工具能够实时地从数据校订得出的查询结果会返回到它们原来的应用程序。当你想要隐藏一个字段的所有值或部分值,但同时还要为用户提供他们需要的信息的时候,Data Redaction便有了用武之地。诸如社会保险号,信用卡号和客户端IP地址之类的个人标识未经许可是不能发布的。通过允许你隐藏个人信息并同时仍允许访问关
键文件,Data Redaction将帮助你遵循法规和行业标准,同时保证不中断业务的正常流程。

下面以TT.DEPT表为例,对DNAME列进行data redaction,这意味着除了TT自己,其它用户在对tt.dept表进行查询时将看不会看到真实数据(当然这不包括SYS及SYSTEM用户),以下是我的操作记录:

登录Cloud Control 12c,选择测试数据库-->Security-->Data Redaction

在Data Redaction页面中点击Create按钮,新建一个Data Redaction Policies

这里我选择对TT.DEPT表进行data redaction. 在策略中我写入的是该策略对非TT用户生效。


点击上面的Edit按钮后,选择ADD添加DNAME列。

点击OK按钮以后,Data Redaction Policy就创建好了,下面通过查询具体验证下效果。


--TT用户登录后可以查看真实的数据
TT@BWC2(dm02db02)> show user
USER is "TT"
TT@BWC2(dm02db02)> select * from tt.dept;

DEPTNO DNAME LOC
---------- ---------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

--T2用户登录后,虽然对tt.dept表有查询权限,但他看到的DNAME列却为空,并不是真实的数据。
SYS@BWC2(dm02db02)> conn t2/t2
Connected.
SYS@BWC2(dm02db02)> select * from tt.dept;

DEPTNO DNAME   LOC
---------- ----------     --------------------
10                           NEW YORK
20                           DALLAS
30                           CHICAGO
40                           BOSTON


如果没有Cloud Control 12c的环境,还是通过PLSQL方式来管理data redaction的,下面是一些记录:
--有关data redaction的几个视图
REDACTION_COLUMNS
REDACTION_POLICIES
REDACTION_VALUES_FOR_TYPE_FULL


create table employee(id number,name varchar2(10),salary number,jobdate date,mobile varchar2(20));
insert into employee values(1,'tom',6000,to_date('01-07-2012','dd-mm-yyyy'),'135-2009-1146');
insert into employee values(2,'mary',9000,to_date('01-07-2013','dd-mm-yyyy'),'135-2009-1111');
commit;
select * from employee;

--针对NUMBER类型的列进行redaction
begin 
dbms_redact.add_policy(
object_schema=>'tt',
object_name=>'employee',
policy_name=>'p1',
column_name=>'salary',
function_type=>dbms_redact.full,
enable=>true,
expression=>'1=1');
end;
/

--针对varchar2类型的列进行redaction
begin 
dbms_redact.alter_policy(
object_schema=>'tt',
object_name=>'employee',
policy_name=>'p1',
column_name=>'name',
action=>dbms_redact.add_column,
function_type=>dbms_redact.full,
expression=>'1=1');
end;
/

--针对date类型的列进行redaction
begin 
dbms_redact.alter_policy(
object_schema=>'tt',
object_name=>'employee',
policy_name=>'p1',
column_name=>'jobdate',
action=>dbms_redact.add_column,
function_type=>dbms_redact.full,
expression=>'1=1');
end;
/

--添加一条策略,使不是TT的用户查看该表时数据被redaction
begin 
dbms_redact.alter_policy(
object_schema=>'tt',
object_name=>'employee',
policy_name=>'p1',
action=>dbms_redact.modify_expression,
expression=>'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ''TT''');
end;
/

删除遮罩保护策略 
EXEC DBMS_REDACT.DROP_POLICY('TT','EMPLOYEE','p1'); 
启用遮罩保护策略 
EXEC DBMS_REDACT.ENABLE_POLICY ('TT','EMPLOYEE','p1');
禁用遮罩保护策略 
EXEC DBMS_REDACT.DISABLE_POLICY ('TT','EMPLOYEE','p1');

--通过授予以下权限达到访问真实数据目的

SQL> grant exempt redaction policy to user1;
Grant succeeded.

SQL> revoke exempt redaction policy from user1;
Revoke succeeded.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26753337/viewspace-2121057/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26753337/viewspace-2121057/

这篇关于Oracle Data Redaction实验记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701330

相关文章

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用