快捷搜索:

Oracle数据库安全(三)虚拟私有数据库 (VPD)

Oracle的安然分为四大年夜部分,分手是用户治理、造访节制、数据保护和监控,详细可参考http://www.fengfly.com/plus/view-213568-1.html

本日着重讲讲造访节制中一种常见的技巧VPD,VPD的全称是Virtual Private Database 虚拟私稀有据库,它在Oracle 8i时就呈现了,是Oracle对照早期的一种数据安然手段。

它是指经由过程指定策略,对用户的SQL自动添加过滤谓词,以达到对结果集进行过滤的目的,其示意图如下:

3)添加安然策略后,现在造访该表,发明只能得到deptno=30的数据:

SQL> select * from scott.emp;

EMPNO ENAMEJOBMGR HIREDATESALCOMMDEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------7499 ALLENSALESMAN7698 20-2月 -81160030030

7521 WARDSALESMAN7698 22-2月 -811250500307654 MARTINSALESMAN7698 28-9月 -811250140030

7698 BLAKEMANAGER7839 01-5月 -812850307844 TURNERSALESMAN7698 08-9月 -811500030

7900 JAMESCLERK7698 03-12月-8195030

已选择6行。

4)这里要留意的是,只有当造访安然策略中指定字段时,安然策略才起感化,假如select的字段中不包孕这些字段,安然策略是不会起感化的:

SQL> select ename,deptno from scott.emp;

ENAMEDEPTNO

---------- ----------SMITH20

ALLEN30WARD30

JONES20MARTIN30

BLAKE30CLARK10

SCOTT20KING10

TURNER30ADAMS20

ENAMEDEPTNO

---------- ----------JAMES30

FORD20MILLER10

已选择14行。

5)上面定义的安然策略有个毛病,便是会把所有的字段都暗藏,假如你只想暗藏敏感字段,可以设置sec_relevant_cols_opt:

SQL> exec dbms_rls.drop_policy('scott','emp','hide_sal_policy');

PL/SQL 历程已成功完成。

SQL> begin

2dbms_rls.add_policy(3object_schema=> 'scott',

4object_name=> 'emp',5policy_name=> 'hide_sal_policy',

6policy_function=> 'hide_sal_comm',7sec_relevant_cols=> 'sal,comm',

8sec_relevant_cols_opt=> dbms_rls.ALL_ROWS);9end;

10/

PL/SQL 历程已成功完成。

6)这时再履行同样的语句,可以发明返回所有行,只是敏感字段的数据被暗藏了(就似乎NULL一样):

SQL> select * from scott.emp order by deptno;

EMPNO ENAMEJOBMGR HIREDATESALCOMMDEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------7782 CLARKMANAGER7839 09-6月 -8110

7839 KINGPRESIDENT17-11月-81107934 MILLERCLERK7782 23-1月 -8210

7566 JONESMANAGER7839 02-4月 -81207902 FORDANALYST7566 03-12月-8120

7876 ADAMSCLERK7788 23-5月 -87207369 SMITHCLERK7902 17-12月-8020

7788 SCOTTANALYST7566 19-4月 -87207521 WARDSALESMAN7698 22-2月 -81125050030

7844 TURNERSALESMAN7698 08-9月 -8115000307499 ALLENSALESMAN7698 20-2月 -81160030030

EMPNO ENAMEJOBMGR HIREDATESALCOMMDEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------7900 JAMESCLERK7698 03-12月-8195030

7698 BLAKEMANAGER7839 01-5月 -812850307654 MARTINSALESMAN7698 28-9月 -811250140030

已选择14行。

您可能还会对下面的文章感兴趣: