Oracle的安全分为四大部分,分别是用户管理、访问控制、数据保护和监控,具体可参考《[Oracle] 数据库安全概述》http://blog.csdn.net/u010415792/article/details/9008089
今天着重讲讲访问控制中一种常见的技术VPD,VPD的全称是Virtual Private Database 虚拟私有数据库,它在Oracle 8i时就出现了,是Oracle比较早期的一种数据安全手段。
它是指通过指定策略,对用户的SQL自动添加过滤谓词,以达到对结果集进行过滤的目的,其示意图如下:
其大致过程如下:用户发出SQL语句访问表中数据,此时触发定义在该表上的安全策略,该安全策略会在相应的列上加上Where谓词条件,最终返回给用户的是过滤后的结果集。这样用户只能看到自己有权限看到的数据,其效果如下图所示:
用户1和用户2虽然发出了两个一模一样的SQL语句,但根据相应的安全策略,他们得到的结果有可能不一样,就像访问自己私有的数据库一样,这也是为什么这项技术叫虚拟私有数据库。下面看几个例子:
1)首先,创建一个函数,该函数定义要加哪些谓词条件: