暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
数据加密步骤_oracle实现
1006
3页
11次
2020-08-29
免费下载
环境: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.对列中的数据全部 redactnumber 类型的列将全部返回为 0character 类型
的列将全部返回为空格,日期类型返回为 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. 加密准备工作:
-- 1.建测试用户
create user liudi identified by 123;
-- 2.授权
GRANT CONNECT, resource, unlimited tablespace TO liudi;
GRANT SELECT ON sys.redaction_policies TO liudi;
GRANT SELECT ON sys.redaction_columns TO liudi;
GRANT EXECUTE ONdbms_redact TO liudi;
查询约束和加密策略
SQL> select policy_name from redaction_policies;
2. 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 以后,只能使用 ALTER_POLICY 再添加,除非 drop
policy
partial 方式加密,注意事项 1:只需修改 function_type 就可以更改为其他加密方式。
注意事项 2function_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;
/
注意:!!!
1.对加密的列不能同时使用 distinct order by,如果使用,必须加一层 select,无论对于使用的用
户是否是加密可见;当对加密列同时使用 distinct order by,报语法错误,该问题已确认为 bug,而
且没有补丁,Bug 19558306
of 3
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜