redact加密介绍和详细步骤

环境:oracle 11.2.0.4

一、     1. Oracle Data Redaction介绍

Oracle高级安全新组件,其成效是限量SQL语句的回到结果样式,对于特定的用户能够限制有些字段显示被活动改写过的值。

表达:不可能对sys和system用户实行数量的redact。因为他们都有EXP_FULL_DATABASE那一个剧中人物,而这一个剧中人物又饱含了EXEMPT
REDACTION
POLICY系统权限。同理,也不能够直接给予用户dba权限,dba自动包括EXP_FULL_DATABASE角色。

2. redact分类

(1).Full
redaction
.对列中的数据总体redact,number类型的列将全体回到为0,character类型的列将全部回去为空格,日期类型再次来到为2001-01-01

(2).Partial redaction. 对列中的一部分数据举行redact,比如,能够对社会保障号的前四个人设置再次回到为*,剩下的四位保持不变。唯有列中的数据为稳定宽度时才能选取那种艺术,假设列中存款和储蓄的是email地址,每个email地址的增长幅度不完全相同,此时要运用Regular expressions。

(3).Regular expressions. 对两样尺寸的剧情加密,例如e-mail,仅仅对字符类型有效。

(4).Random redaction. 随机乱码加密

(5).No redaction.测试加密的当中运营机制,并不会真的加密。

贰 、     oracle scott用户下建表进行加密(redact)实验

  1. 加密准备干活:

REVOKE dba FROM SCOTT;

GRANT CONNECT, resource, unlimited tablespace TO SCOTT;

GRANT SELECT ON sys.redaction_policies TO SCOTT;

GRANT SELECT ON sys.redaction_columns TO SCOTT;

GRANT EXECUTE ONdbms_redact TO SCOTT;

查询约束和加密政策

SQL> selectpolicy_name from redaction_policies;

  1. scott用户下成立2张表,并安装了主外键约束

create tablestudents(name varchar2(10) primary key not null,age
varchar2(10),countvarchar2(10));

insert intostudents (name,age,count) values
(‘xxxxxx’,’vvvvvv’,’nnnnnn’);

 

create tableclass(aa varchar2(10),name varchar2(10),cc varchar2(10));

insert intoclass (aa,name,cc) values (‘zzzzzz’,’xxxxxx’,’cccccc’);

alter tableclass ADD CONSTRAINT FK_name FOREIGN KEY(name) references
students(name);

3.上马加密(redact)(注意:在采纳add_policy未来,只可以利用ALTE奥迪Q7_POLICY再添加,除非drop掉policy。

partial格局加密,注意事项1:只需修改function_type就能够变更为其它加密方法。

注意事项2:function_parameters格式针对字符型,假如是数字则修改为
function_parameters  => ‘6,3,6’,

 BEGIN

DBMS_REDACT.ADD_POLICY (

   object_schema          => ‘SCOTT’,

   object_name            => ‘CLASS’,

   policy_name            => ‘REDACT_EMP’,

   column_name            => ‘NAME’,

   function_type          => DBMS_REDACT.PARTIAL,

   function_parameters    => ‘VVVVVV,VVVVVV,*,3,6’,

   expression             => ‘1=1’,

   enable                 => TRUE

   );

END;

/

 

添加一列policy

 BEGIN

 DBMS_REDACT.ALTER_POLICY(

  object_schema       => ‘SCOTT’,

  object_name         => ‘CLASS’,

  policy_name         => ‘REDACT_EMP’,

  action              => DBMS_REDACT.ADD_COLUMN,

  column_name         => ‘AA’,

  function_type       => DBMS_REDACT.PARTIAL,

  function_parameters    => ‘VVVVVV,VVVVVV,*,1,6’

 );

END;

/

钦赐只对hr用户有效

BEGIN

DBMS_REDACT.ALTER_POLICY (

   object_schema          => ‘SCOTT’,

   object_name            => ‘CLASS’,

   policy_name            => ‘REDACT_EMP’,

   column_name            => ‘AA’,

   action               => DBMS_REDACT.MODIFY_EXPRESSION,

   expression  => ‘SYS_CONTEXT (”USERENV”,”SESSION_社会保险,USER” )
=”HR”’

);

END;

/

除去一列policy(注意:固然去除全数policycolumn,但policy自个儿还存在)

 BEGIN 

 DBMS_REDACT.ALTER_POLICY(

  object_schema       => ”SCOTT”,

  object_name         => ‘CLASS’,

  policy_name         => ‘REDACT_EMP’,

  action              => DBMS_REDACT.DROP_COLUMN,

  column_name         => ‘NAME’

);

END;

/

 

去除编写策略(包含policy本人)

BEGIN

  DBMS_REDACT.DROP_POLICY (

    object_schema  => ‘SCOTT’,

    object_name    => ‘CLASS’,

    policy_name    => ‘REDACT_EMP’);

END;

/

发表评论

电子邮件地址不会被公开。 必填项已用*标注