oracle vpd 虚拟专用数据库

CREATEORREPLACEfunction func_vpd(p_owner varchar2,p_objectname varchar2)

RETURNVARCHAR2

AS

 v_predicate varchar2(4000);

 BEGIN

    v_predicate :='last_name=initcap(sys_context(''userenv'',''session_user''))';

    RETURN v_predicate;

    end;

  

   

    select a.object_name,a.status

    from dba_objects a where a.object_name='FUNC_VPD'

   

 SELECT * FROM USER_ERRORS

 

BEGIN

 DBMS_RLS.ADD_POLICY (object_schema    => 'hr',

                       object_name       => 'employees',

                       policy_name       => 'sp_job',

                       function_schema   => 'sys',

                       policy_function   => 'FUNC_VPD',

                        statement_types=>'select,insert',

                       sec_relevant_cols =>'salary,commission_pct'

                       );

END;

 

SQL> update employees setlast_name='King2' where employee_id=100;

 

1 row updated.

 

SQL> commit;

 

SQL> create user king identified byoracle;

 

User created.

 

SQL> grant connect to king;

 

Grant succeeded.

 

SQL> grant select on hr.employees toking;

 

SQL> select count(last_name) fromhr.employees;

 

COUNT(LAST_NAME)

----------------

            107

 

Grant succeeded.

 

SQL> select last_name,salary  from hr.employees;

 

LAST_NAME                                                                      SALARY

-------------------------------------------------------------------------------------

King                                                                            10000

 

SQL> selectlast_name,commission_pct  fromhr.employees;

 

LAST_NAME                                                                  COMMISSION_PCT

-----------------------------------------------------------------------------------------

King                                                                                  .35

由于受到policy的影响,一旦查询到salary 或者是commissi_pct 时,查询

条件(谓语)会自动带有where  last_name=

 

下面演示如何从策略中豁免

SQL> conn / as sysdba                                                                                                   

Connected.

SQL> grant exempt access policy to king;

 

Grant succeeded.

 

SQL> conn king/oracle

Connected.

SQL> select last_name,commission_pct  from hr.employees;

.

.

.

Everett

McCain

Jones

Walsh

Feeney

 

107 rows selected.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值