Oracle的虚拟私有数据库特性(也称作细颗粒度存取控制)对诸如SELECT等数据治理语言DML语句提供行级安全性检查。PL/SQL策略函数和某个数据表相关联,这个函数可以检查当前用户的上下文背景并添加查询中WHERE语句的条件(断言),一个用户或者应用可以这样来写: SELECT * FROM employees;
但是实际上oracle将会执行这样的语句: SELECT * FROM employees
WHERE department_id = 60;
因此,只有在查寻范围之内的行(在department数据表中的前60行)才会被查询语句返回。利用oracle 10g中的新选项可以让oracle返回所有行,而不仅仅是被授权的行。
然而,未被授权行中包含的某些列(称为安全相关列)将显示NULL来代替实际数据,而其它的列值将会正常显示。要想使用列值掩码必须在虚拟私有数据库策略中做两件事。首先必须创建一个列级策略来设计某些列为安全相关列.其次必须在查询中包含ALL_ROWS选项以用来返回所有行。这两个参数的结合就可以实现列值掩码。列表A显示了一个称为rls_dept的策略函数。它返回断言“department_id=60”,用来设...[ 查看全文 ]