Oracle Data Redaction数据加密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

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:随机加密,每次展现的加密结果是不一定一样;

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

4e2031978ad4beb091247291bbfeaa5f9308c113

Oracle Redaction加密测试

1、环境测试准备

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

45e19771ee792ae2f8ad1993a339997c68a7bf52

2、对表的某些字段加密

调用DBMS_REDACT包创建policy策略

1f0193cfd6cfaf78c8ffec9a6e0772082d31076f

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

24c8051869a38621f5b1d28eb6b4b0e70fd28fdc

3、Redaction的权限控制

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

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

60d9449d56b10896dee3f10815b008a43576f723

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

d65153c1fccf1f573cfaa5251187c80438fbf593

创建角色和用户用于模拟

b32f23ede76b71c7a4a3d6082ad0f116e430d1e7

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

1df8c0bad5dbe0846099301283666b29666b35fc

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

be64bd8150ff67cc261881865a242f1363cc18c7

4、Redaction的使用限制

通过测试得出以下结论:

  1. 对加密的列不能同时使用distinct和order by,如果使用,必须加一层select,无论对于使用的用户是否是加密可见;
  2. 加密的结果优先级高于函数,比如distinct;
  3. 对于group by不影响结果的准确性,与未加密结果一致;
  4. 加密后的表无法进行CTAS(create table as select)操作;

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

166c3f0fa9708bb5cbc7b87bea7f5679cf6df3ac

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

fc7d0b48523f18a3495fbf41892d43d28116be50

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

399477ff04593aa29e4961c999887f44e3ada0e4

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

a1290392eb4c232038f13f2d3a533a9266a0f4ea

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

6992c245f2cc74b6b49706d75019662e7a2486ea

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


原文发布时间为:2018-01-12

本文作者:葛龙

本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”微信公众号

目录
打赏
0
0
0
0
73530
分享
相关文章
关系型数据库Oracle 的Data Guard:
【7月更文挑战第7天】
112 3
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
mstsc连接远程服务器CredSSP加密数据库修真、加密Oracle修正报错解决办法
mstsc连接远程服务器CredSSP加密数据库修真、加密Oracle修正报错解决办法
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
最近有个做Java开发的网友问我,怎么在Oracle进行数据加密呢?我给他推荐了Data Redaction。Oracle Database 12c中加入了Data Redaction这个新的安全特性。当然在11g的Database Advanced Security Administrator’s Guide官方文档中就介绍了。
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等