【大数据开发运维解决方案】Oracle Data Redaction数据加密测试

简介: 最近有个做Java开发的网友问我,怎么在Oracle进行数据加密呢?我给他推荐了Data Redaction。Oracle Database 12c中加入了Data Redaction这个新的安全特性。当然在11g的Database Advanced Security Administrator’s Guide官方文档中就介绍了。

前言

最近有个做Java开发的网友问我,怎么在Oracle进行数据加密呢?
我给他推荐了Data Redaction。
Oracle Database 12c中加入了Data Redaction这个新的安全特性。当然在11g的Database Advanced Security Administrator's Guide官方文档中就介绍了。如果你想要隐藏一个字段所有值或部分值的话,而且还要为用户提供他们需要的信息的时候,或则换句话说,你想仅某些用户看到的一些数据是隐藏的,但是另一些用户看到的是正常的数据,就可以用Data Redaction~


一、介绍

官方链接:
对于列中的数据有以下几种redaction方式:

1、Full redaction

对列中的数据全部redact,number类型的列将全部返回为0,character类型的列将全部返回为空格,日期类型返回为2001-01-01。

2、Partial redaction

对列中的一部分数据进行redact,比如,可以对社会保险号的前几位设置返回为*,剩下的几位保持不变。只有列中的数据为固定宽度时才能使用这种方式,如果列中存储的是email地址,每个email地址的宽度不尽相同,此时要使用Regular expressions。

3、Regular expressions

可以使用正则表达式查找要编校的数据模式。例如,您可以使用正则表达式编校电子邮件地址,电子邮件地址可以具有不同的字符长度。它仅设计用于字符数据。

4、Random redaction

提供给查询用户的编校数据每次显示时都显示为随机生成的值,这取决于列的数据类型。

5、No redaction

此选项使您能够测试编校策略的内部操作,而不影响对定义了策略的表的查询结果。在将编校策略定义应用到生产环境之前,可以使用此选项测试它们。

`重点关注:
不能对sys和system用户进行数据的redact。因为他们都有EXP_FULL_DATABASE这个角色, 而这个角色又包含了EXEMPT REDACTION POLICY系统权限。同理,也不能直接赋予用户dba权限,dba自动包含EXP_FULL_DATABASE角色。`


二、部分功能测试

创建测试用户

create user zhaoyd identified by zhaoyd;
create user zhaojh identified by zhaojh;
grant connect,resource to zhaoyd;
grant select on sys.redaction_policies to zhaoyd;
grant select on sys.redaction_columns to zhaoyd;
grant execute on dbms_redact to zhaoyd;

给zhaoyd用户建一张表名为emp:
编辑策略:

1、将phone字段中间4位数值用*号替代

begin
  dbms_redact.add_policy(object_schema       => 'ZHAOYD',
                         object_name         => 'EMP',
                         policy_name         => 'test_zhaoyd_emp',
                         column_name         => 'PHONE',
                         function_type       => Dbms_Redact.PARTIAL,
                         expression          => '1=1',
                         function_parameters => 'vvvvvvvvvvv,vvvvvvvvvvv,*,4,7');
end;

2、将地址LOC字段给完全隐藏

begin
  dbms_redact.alter_policy(object_schema       => 'ZHAOYD',
                         object_name         => 'EMP',
                         policy_name         => 'test_zhaoyd_emp',
                         action => dbms_redact.ADD_COLUMN,                         
                         column_name         => 'LOC',
                         function_type       => Dbms_Redact.RANDOM);
end;

3、分别查询看效果

zhaoyd,zhaojh,sys用户分别查询这个表:
可以看到sys用户查询是不会受策略限制的。

创建角色,用角色来控制,只让被赋予这个角色的用户看到的数据是加密的:

create role redac_role;
grant redac_role to zhaojh;

接下来修改之前的策略:

begin 
    dbms_redact.alter_policy(object_schema       => 'ZHAOYD',
                         object_name         => 'EMP',
                         policy_name         => 'test_zhaoyd_emp',
                         action => dbms_redact.MODIFY_EXPRESSION,                       
                         column_name         => 'LOC',
                         expression => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''REDAC_ROLE'') = ''TRUE''');
end;

这时候再分别用zhaoyd,zhaojh,sys用户分别查询zhaoyd.emp:
给zhaoyd用户赋予角色redac_role:
zhaoyd用户看到的也是加密后的了。

总结

经过实际测试的出来的一些结果

  1. 对加密的列不能同时使用distinct和order by,如果使用,必须加一层select,无论对于使用的用户是否是加密可见;
  2. 加密的结果优先级高于函数,比如distinct;
  3. 对于group by不影响结果的准确性,与未加密结果一致;
  4. 加密后的表无法进行CTAS(create table as select)操作;
相关文章
|
SQL 安全 测试技术
网络安全的屏障与钥匙:漏洞防护与加密技术解析软件测试的艺术:探索性测试的力量
【8月更文挑战第27天】在数字时代的海洋中,网络安全是保护我们数据资产的灯塔和堤坝。本文将深入浅出地探讨网络安全领域的关键要素——安全漏洞、加密技术以及不可或缺的安全意识。通过实际案例分析,我们将了解如何识别和修补潜在的安全漏洞,掌握现代加密技术的工作原理,并培养起一道坚固的安全防线。文章旨在为读者提供实用的知识和技能,以便在日益复杂的网络环境中保持警惕,确保个人及组织信息的安全。
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
1070 60
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
13258 3
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
554 7
|
SQL 监控 Oracle
关系型数据库Oracle 的Data Guard:
【7月更文挑战第7天】
452 3
|
SQL Oracle 关系型数据库
关系型数据库Oracle Data Guard
【7月更文挑战第11天】
281 1
|
Oracle 关系型数据库 数据库
|
安全 测试技术 网络安全
探索自动化测试:从理论到实践网络防御的盾牌与剑:漏洞解析与加密技术实战
【7月更文挑战第31天】在软件工程领域,自动化测试是确保产品质量和提升开发效率的关键工具。本文将深入探讨自动化测试的核心概念、优势以及面临的挑战,并通过一个具体的代码示例来展示如何在实际项目中实施自动化测试。我们将看到,通过采用恰当的策略和技术,自动化测试不仅能够提高测试覆盖率,还可以缩短反馈周期,从而加速迭代速度。 【7月更文挑战第31天】在数字世界的无垠战场上,网络安全和信息安全是守护数据宝藏的盾牌与剑。本文将深入探讨网络安全的脆弱点,揭示加密技术的奥秘,并唤醒每一位数字时代居民的安全意识。通过代码示例和案例分析,我们将一起穿梭在信息的海洋中,学习如何铸造坚不可摧的防御,以及如何运用高超
382 0
|
安全 测试技术 网络安全
网络安全的盾牌:漏洞管理、加密技术和安全意识自动化测试中的神器:Selenium WebDriver
【7月更文挑战第31天】在数字化浪潮中,信息安全成为保护个人隐私和商业秘密不可或缺的一环。本文将探讨网络安全中的常见漏洞,介绍加密技术的基础原理,并强调培养良好的安全意识的重要性。通过实际代码示例,我们将展示如何在现实世界中应用这些概念来提高系统的安全性。 【7月更文挑战第31天】在软件开发的广阔天地中,自动化测试以其高效、准确的特点,成为了提升软件质量的关键一环。Selenium WebDriver,作为自动化测试领域的佼佼者,不仅简化了测试流程,还提升了测试效率。本文将深入探讨Selenium WebDriver的核心组件和工作原理,并通过实际代码示例,展示其在自动化测试中的应用价值。无
283 0

推荐镜像

更多