重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1494|回复: 1
打印 上一主题 下一主题

Oracle Database 12c Data Redaction

[复制链接]
跳转到指定楼层
楼主
发表于 2019-8-7 18:12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 郑全 于 2019-8-7 18:13 编辑

什么是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登录应用的效果:




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2019-8-7 18:13:54 | 只看该作者
本帖最后由 郑全 于 2019-8-7 18:15 编辑

手工的一个例子
本身数据:
SQL> select * from hr.emp;
        ID NAME                     SALARY
---------- -------------------- ----------
         1 top                        6000
         2 mary                       9000



begin
     dbms_redact.add_policy(object_schema=>'HR', object_name=>'EMP', policy_name=>'p1', column_name=>'salary', function_type=>dbms_redact.full, expression=>'1=1', enable=>true);
   end;

之后:
SQL> select * from emp;
        ID NAME                     SALARY
---------- -------------------- ----------
         1 top                          0
         2 mary                        0




回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-1 05:58 , Processed in 0.090692 second(s), 18 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表