什么是Data Redaction

Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM12c R3的中文界面中,这个功能被翻译成“数据编写”,我认为后一个翻译更贴切。

在12c发布前,某次以“数据库安全”为题目的技术交流中,有一个客户问我们,Oracle数据库里面能不能实现这么一个功能:符合条件的用户可以看到表里面的所有数据,而另外一些人(业务权限低的用户)虽然能查询表,但是某些敏感数据全部用星号替换。我当时的想法是在11g中没有能够完全满足这个客户需求的功能。

现在12c的Data Redaction就可以完全满足上面提到的客户的需求了。所以如果用一句话概括:Data Redaction就是根据策略(条件)原地(Oracle用了on-the-fly这个词)改写数据,以保护敏感数据。

Data Redaction和Database Vault都能保护敏感数据,他们的不同就是,在配置了Database Vault的环境中,如果访问不符合策略,会报错,提示没有足够的权限。而在Data Redaction环境中,符合策略的访问,会看到被改写的(星号遮蔽,随机转换)数据。另外,Database Vault还能限制特权用户,而Data Redaction对DBA用户无效。

Data Redaction配置

Data Redaction的配置是通过系统系统的PL/SQL包来实现的,简单的说,就是使用这些PL/SQL包定义“数据改写”策略,策略中要定义的内容有:

l 敏感数据所对应的SCHEMA,表,列

l 数据编写生效的条件

l 数据编写所使用的方式以及对应的参数

这些工作都可以使用PL/SQL包来完成,也可以使用EM12c通过web页面来配置。下面我们就以EM12c举例说明。

如果使用图形界面配置“数据改写”,需要使用EM12c R3(Oracle Enterprise Manager Cloud Control 12c Release 3),EM Express中没有对应的功能(11g的DBControl在12c 名字变为EM Express,界面用ADF从新实现的,但是功能似乎更少了)。

1. 登录EM12c,进入数据库实例的主页。我这里使用的是一个PDB(Pluggable Database),因为这个里面有示例数据,在CDB(Container Database)中配置的方法是一样的,需要进入CDB的主页进行操作。

2. 点击“管理”-〉“安全性”-〉“Oracle Data Redaction”,如果没有配置数据库的身份证明,系统会提示输入身份证明,我这里用的是SYS用户。

3. 进入“数据改写”页面,创建策略

选择方案(SCHEMA),希望改写的表,策略名:

修改策略表达式,也就是策略的生效条件,我在这里选择的是数据库会话用户为SCOTT。

在进行下一步之前,我们先要确认敏感数据的格式。在本例中,我们希望将HR用户下的EMPLOYEES表中的PHONE_NUMBER列进行改写。这个列的数据形式如下图所示:

假设我们希望将电话号码全部用*号代替,只保留前3位。

点击页面下方的“对象列”区域的“添加”,在弹出窗口中添加敏感数据列及编写方式,在界面上也有简单的示例,如图所示:

因为要保留前3个电话号码,所以从第4个字符开始改写,全部需改写的字符是10个,中间的“.”不算,所以“直到”第10个字符。

4. 测试策略:

使用SQL*PLUS登录HR用户,可以查看所有数据。

使用SCOTT用户登录,查看到的是这个样子:

如果我们把策略生效的条件改为“会话用户为HR”,那么即使HR是这个表的OWNER,也只能看到改写后的数据:

其他类型的策略表达式

现实环境中,许多应用都是使用一个数据库用户登录的,所以数据改写的生效条件也可以是根据Client端信息或应用程序信息进行判断。当然,在应用程序中,必须要设置相关的CONTEXT。注意,如果应用的用户拥有DBA权限,数据改写就无效了。

我们使用SQL*PLUS模拟应用使用同一个数据库用户,利用CONTEXT实现数据改写。(实际上是不同应用用户,使用不同的CONTEXT。)

我们使用HR登录,将MODULE手工设置成“HRMS”。

当我们MODULE设置为其他值时(模拟切换不同类型的应用用户),则数据改写策略不生效。

APEX环境下的例子

在安装了APEX环境的数据库中,配合APEX使用数据改写也非常简单,利用APEX的PL/SQL表达式写法,引用应用用户名,以下是例子:

其他用户登录应用效果:

Test_user1登录应用的效果:

Oracle Database 12c Data Redaction介绍的更多相关文章

  1. [翻译] Oracle Database 12c 新特性Multitenant

    译自官方白皮书http://www.oracle.com/technetwork/database/plug-into-cloud-wp-12c-1896100.pdf,包含新的云计算相关技术的介绍. ...

  2. Oracle Database 12c Release 2安装过程实录

    前言----------公司数据库用的是oracle,由于oracle数据库没有做监控,所有搭个环境用于测试zabbix通过orabbix插件监控oracle数据库,下面先搭建oracle数据库. 简 ...

  3. Oracle Database 12c 新特性 - Pluggable Database

    在Oracle Database 12c中,可组装式数据库 - Pluggable Database为云计算而生.在12c以前,Oracle数据库是通过Schema来进行用户模式隔离的,现在,可组装式 ...

  4. 《Oracle Database 12c DBA指南》第一章 - 基本技能简介

    当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 1 基本技能简介 作为一个数据库管理 ...

  5. Oracle Database 12c Release 1 Installation On Oracle Linux 6.4 x86_64

    Create groups and users [root@vmdb12c ~]# groupadd oinstall [root@vmdb12c ~]# groupadd dba [root@vmd ...

  6. 12 Things Developers Will Love About Oracle Database 12c Release 2

    by Chris Saxon-Oracle It's Here: Oracle Database 12c Release 2 (12.2) Is available on Oracle Cloud. ...

  7. Maclean Liu对Oracle Database 12c新特性研究汇总

    Maclean Liu关于DB 12c新特性的研究文章如下: [Oracle Database 12c新特性] In-Database Archiving数据库内归档 [Oracle Database ...

  8. [转]【Oracle Database 12c新特性】32k varchar2 max_string_size

    本文转自:https://blogs.oracle.com/askmaclean/entry/oracle_database_12c%E6%96%B0%E7%89%B9%E6%80%A7_32k_va ...

  9. RMAN RECOVER TABLE 功能是 Oracle Database 12c 的新增功能 (Doc ID 1521524.1)

    RMAN RECOVER TABLE Feature New to Oracle Database 12c (Doc ID 1521524.1) APPLIES TO: Oracle Database ...

随机推荐

  1. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  2. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  3. C#基础篇 - 理解委托和事件

    1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针.简单理解,委托是一种可以把函数当做参数传递的类型.很多情况下,某 ...

  4. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

    说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...

  5. ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求

    通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddlew ...

  6. 如何利用ansible callback插件对执行结果进行解析

    最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...

  7. git-2.10.2-64-bit介绍&&git下载&&git安装教程

    Git介绍 分布式:Git系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具. 保存点:Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目的状态:可以在该保存点将 ...

  8. Android如何制作漂亮的自适布局的键盘

    最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路. 这里最上面的titlebar高度固定,下面输入的金额高 ...

  9. C# await和async

    基础阅读:http://www.cnblogs.com/jesse2013/p/async-and-await.html 答疑阅读:http://www.cnblogs.com/heyuquan/ar ...

  10. 使用rowid抽取数据方法以及大数据量游标卡住的应对

    平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...