Oracle Data Redaction数据加密

Oracle Database 12c中加入了Data Redaction作为一个新的安全特性。(实际在11g的官方Database Advanced Security Administrator's Guide文档中就已经有了具体介绍)。当你想要隐藏一个字段的所有值或部分值,但同时还要为用户提供他们需要的信息的时候,Data Redaction便有了用武之地。

Oracle Redaction概述

Oracle Data Redaction是Oracle安全加密类的高级功能,可用于对于敏感数据的加密处理,加密配置处理均在Oracle层面实现。这是一项和安全相关的技术类别,对于指定的用户可以限制某些表的某些列显示被加密改过的值。对于Redaction之前,可能需要自定义加密函数、创建特定的视图,或者在存储到数据库的时候就用加密算法进行加密。而Redaction可以直接对数据进行加密,不会影响到数据真实的存储,对应用透明,不需要改动。

对于权限,Redaction不能对sys和system用户进行数据的加密。因为他们都有EXP_FULL_DATABASE这个角色, 而这个角色又包含了EXEMPT REDACTION POLICY系统权限。同时,也不能直接赋予用户dba权限,dba自动包含EXP_FULL_DATABASE角色。测试过程中发现,对于拥有dba权限的用户来说,表的数据可以加密操作,但没有实际加密效果。

对于常用的加密类型说明:

1.Full redaction:对某字段数据全部加密,number类型的列将全部返回为0,character类型的列将全部返回为空格,日期类型返回为yyyy-mm-dd;

2.Partial redaction:对列中的一部分数据进行redact,比如,可以对身份证号或手机号的中间几位设置返回为*,剩下的几位保持不变,这种场景适用于固定长度;

3.Regular expressions:对于非固定长度的character类型数据进行部分加密;

4.Random redaction:随机加密,每次展现的加密结果是不一定一样;

本次加密测试环境介绍信息如下:

OS版本

Oracle 版本

是否RAC

RHEL6.5

11.2.0.4.170418

Oracle Redaction加密测试

1、环境测试准备

本次只模拟几种常用加密场景,创建用户、表,并赋予相应权限;若无特殊说明时,调用DBMS_REDACT所使用的均为zhangxg用户。

2、对表的某些字段加密

调用DBMS_REDACT包创建policy策略

基于某列加密的基础上,再增加一个乱码显示的列,即多列加密显示

3、Redaction的权限控制

对于权限的控制,我们可以直接选择用户去过滤,但用户过多时可以使用role来进行权限的控制。

nosee用户看到的结果也是加密的

更改策略,除zhangxg本身用户外,其他用户访问均为加密

创建角色和用户用于模拟

下面,我们尝试去掉一个列的加密效果,即去掉LAST_NAME字段的全加密策略。

再次更改策略,只让zhangxg和cansee用户查看,其他用户为加密结果;这里我们新建了REDAC_ROLE角色去控制,拥有该角色的用户可正常查看,没有该角色的用户查看结果为加密;

4、Redaction的使用限制

通过测试得出以下结论:

1.对加密的列不能同时使用distinct和order by,如果使用,必须加一层select,无论对于使用的用户是否是加密可见;

2.加密的结果优先级高于函数,比如distinct;

3.对于group by不影响结果的准确性,与未加密结果一致;

4.加密后的表无法进行CTAS(create table as select)操作;

对于加密后剩余字符不一样时,distinct结果是不影响的。

手动update,将SOCIAL_SECURITY后4位改成一致

此时,对于加密不限制用户来说,distinct结果是2行。

对于加密用户来说,distinct结果是1行,说明是先进行的加密,后进行distinct。

当对加密列同时使用distinct和order by,报语法错误,该问题已确认为bug,而且没有补丁,Bug 19558306 ;

做为workaround,可以将SQL改写为子查询。

对于group by,加密后的效果是不影响分组判断。

对于加密后的表无法进行CTAS操作,其实逻辑上是对的,既然加密了,如果能ctas成功那么加密就是去了意义

同时,有了该权限后加密也是去了意义。

附录

1.对于已添加的策略,可通过下面视图进行查询

2.删除加密策略

特别鸣谢

编写本文遇到了非常多的问题,同时参考了一些网络的博客。

官方文档参考文档:Database Advanced Security Administrator's Guide

作者介绍:葛龙,云和恩墨技术顾问,拥有6年数据库运维经验。擅长于数据库迁移、解决数据库故障和性能问题。在数据库故障诊断、运维监控、性能优化方面积累了丰富的经验。 个人博客地址:http://blog.itpub.net/26964624/

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2018-01-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

Linux系统LVM逻辑卷创建过程以及自动化脚本

最近在上海新建机房的时候,给了我 2 台 M2 机型服务器,在做初始化的时候发现有一堆磁盘: [root@Centos64:~]# fdisk -l | gre...

3499
来自专栏SDNLAB

从一个 Neutron DHCP 补丁谈起

前言 前几个星期,社区通过了一个 Patch 来解决一个遗留很久的 DHCP 相关的问题,这个 Patch 并不复杂(review 地址是 https://re...

3397
来自专栏老码农专栏

AAA - ActFramework的安全框架 I - 概念及简介

993
来自专栏黑白安全

Nmap的使用

精细扫描,可以查看更详细的信息,如包含服务版本,操作系统类型,甚至还有traceroute..

873
来自专栏你不就像风一样

警告:Establishing SSL connection without server's identity verification is not recommended

Mon Jun 04 00:53:48 CST 2018 WARN: Establishing SSL connection without server's ...

823
来自专栏编程坑太多

『中级篇』k8s基础网络Cluster Network(66)

k8s开源社区的插件太多了,支持插件的的,很早以前docker是不支持网络插件的,k8s的网络插件可以更方便的打通容器和节点。

933
来自专栏V站

PHP实现检测客户端是否使用代理服务器及其匿名级别

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。

19312
来自专栏Laoqi's Linux运维专列

浅谈CDN网络–之典型的CND架构与HTTP协议的缓存控制

1466
来自专栏杨建荣的学习笔记

PCIE的简单配置(r8笔记第82天)

最近测试了一下PCIE-SSD在数据库环境的迁移 和加压情况,IOPS无可置疑,比起机械硬盘确实是高了很多个量级,在数据环境中的IO方面确实有很稳定的提升,目...

3218
来自专栏唐维黎的专栏

Web 性能压测工具 ApacheBench(ab)使用总结

对于 web 服务,不管是上新,还是平时产品运营,节假日活动等,在这之前都需要评估现网压力承受能力,提前进行扩容,并做到防患于未然。所以对网站性能压力测试是必不...

1.2K0

扫描关注云+社区