什么是VPD
note:从8i开始,Oracle提供Virtual private database来进行安全访问限制。从12c开始,Oracle介绍了RAS(Real Application Security),是VPD的替代产品。Oracle建议使用RAS。
Oracle VPD可以创建安全策略,来控制对行或列的访问权限。
本质上说,应用了VPD策略后,会给相应SQL语句动态的添加where条件。
根据条件控制隐藏策略
使用sys账户或其他具有dbms_rls权限的用户进行创建函数及添加策略
隐藏行
隐藏列
添加/删除 示例
--只有应用系统发起的查询才能看到密码列 --以下操作需要在sys或其他具有dbms_rls执行权限的用户中进行, --创建函数 create or replace function hide_ldap_pwd_column(v_schema in varchar2, v_objname in varchar2) return varchar2 as v_where varchar2(200); begin return ' SYS_CONTEXT(''USERENV'',''SESSION_USER'')=''APEX_PUBLIC_USER'' and SYS_CONTEXT(''USERENV'',''MODULE'') like ''BCSCM/APEX:APP 100:%'' and conf_name = ''LDAP'' '; end hide_ldap_pwd_column; / --添加策略 begin dbms_rls.add_policy( object_schema => 'bcscm', object_name => 'sys_configuration', policy_name => 'hide_pwd', policy_function => 'hide_ldap_pwd_column', sec_relevant_cols => 'p9_value', sec_relevant_cols_opt => dbms_rls.ALL_ROWS); end; / --删除策略方法: begin dbms_rls.drop_policy( object_schema => 'bcscm', object_name => 'sys_configuration', policy_name => 'hide_pwd'); end; /
- 4
- 5
- 6
- 7
- 8
- 9
- 0
- 11
- 12
- 13