VPD(virtual private database)是Oracle database增加安全性的工具,能够在用户访问table,view,synonyms对象动态应用安全性策略,实际上是在用户发出SQL statement之后,修改where 子句。VPD可以应用在select,insert,update,index,delete 语句。还可以在column-level 应用安全性策略,如果将sql查询到涉及VPD column level的字段,则会返回null值。
有两种方式:
1.使用DBMS_RLS
2.使用Oracle policy GUI
LAB:
Use DBMS_RLS.add_policy,DBMS_RLS.enable_policy创建安全性策略.
1. create test table: create table T as select * from dba_objects;
2. create policy_function
[@more@]create or replace function policy_fun(object_schema IN VARCHAR2, object_name VARCHAR2) RETURN VARCHAR2 is where_clause varchar2(2400); begin if object_schema = 'SYSTEM' and object_name = 'T' then where_clause := object_name||'.owner='||'''SYSTEM'''; return where_clause; end if; end; 3. execute dbms_rls.add_policy(object_schema => 'SYSTEM',object_name => 'T',policy_name => 'test_policy',policy_function => 'policy_fun',statement_types => 'SELECT'); 4. select * from t 5. select * from user_policies来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11301175/viewspace-969929/ ,如需转载,请注明出处,否则将追究法律责任。