SYS_R12 MOAC多协会底层技术完毕技术分析(Oracle VPD) (案例)

2014-05-30 Created By BaoXinjian

图片 1一、
介绍


前边一直留存对Oracle R12
多组织走访的有些迷惑,所以查询了一些连锁材料,并介绍落成R12 MOAC的Oracle
VPD技术

Oracle VPD全称Virtual Private Database,
Oracle的一种控制数据访问的里边安全策略之一

Oracle数据安全策略访问完毕方式

  •  Role-based security
    • create role cust_role;
    • grant select on customer to cust_role;
    • grant select, update on orders to cust_role;
    • grant cust_role to scott;
  •  Grant-execute security
    • grant execute on procedure to cust_role;
  •  Virtual private databases
    • 以下为详细介绍

 

图片 2二、
案例 – 完毕模仿R12
MOAC对客制化的表添加标准多社团访问控制安全策略


例如, ap_invoices_all 和 
ap_inovices访问的界别

当没有先河化mo_global.set_policy_context之前,ap_invoices_all
是可以访问具有的数码, 而ap_invoices是尚未其余数据再次回到的

这会儿始化mo_global.set_policy_context之后,ap_invoices_all
还是能访问具有的数码,
而ap_invoices可以回去对应协会的记录,而任何团队的笔录并从未被重临

原因是,在视图ap_invoices添加了一个安全性策略,
mo_golbal.org_security

图片 3

为此在模拟标准的MOAC功用建立对客制化表的多协会走访,可以参见上述例子

创立一个基表(bxj_vpd_invoices_b),
用以存放所有数据,不管有没有经过mo_global初阶化session都足以回到数据,
类似于基表ap_invoices_all的功能

创立一个视图(bxj_vpd_invoices_v),
此视图建立在基表之上,再开展添加安全性策略,完成多社团走访,类似于视图ap_invoices的功能

Step1. 起家基表

CREATE TABLE
bxj_vpd_invoices_b(

  invoice_id NUMBER,

  invoice_num VARCHAR(100),

  invoice_description
VARCHAR(240),

  org_id NUMBER

)

 Step2. 赤手空拳视图

CREATE VIEW bxj_vpd_invoices_v
AS

  SELECT invoice_id, invoice_num,
invoice_description, org_id

FROM bxj_vpd_invoices_b;

 Step3. 备选测试资料,一笔的org为204,
一笔的org为889

INSERT INTO bxj_vpd_invoices_b VALUES
(1, ‘BXJ_20140520_01′,’BXJ_VPD_Show_With ORG204’, 204)

INSERT INTO bxj_vpd_invoices_b VALUES
(2, ‘BXJ_20140520_02′,’BXJ_VPD_Show_With ORG889’, 889)

Step4.
查询基表和视图都是足以回到所有两条记下

 图片 4

Step5.
最根本的一步,对客制化视图bxj_vpd_invoics_v添加安全性策略dbms_rls.add_policy

图片 5

Step6. 产看安全性策略是还是不是建立成功

图片 6

Test1. 策略建立成功,举行测试,直接select
table bxj_vpd_invoics_v, 查询未再次回到任何结果

图片 7

Test2. 对session举办开首化

图片 8

Test3. 再度直接select table
bxj_vpd_invoics_v,查询只回去一条ORG204的笔录,而ORG889的笔录则并没呈现,完成了对客制化表的多社团走访

图片 9

 

图片 10三、
案例 – 已毕一个简短的客制的VPD安全策略对表数据访问的管控


急需:
对数据表bxj_invoice_total不显示invoice total > 1000的记录

Step1.成立一个简练的表,并准备4笔测试数据

图片 11

Step2. 查看原始数据,有4笔资料

图片 12

Step3.最要紧的一步,建立VPD
Function,系统再次来到以下字段,作为VPD策略,其实个人感觉就是依据分歧的尺码和条件去分别所要加的规格构成,来达成数据的访问控制

图片 13

Step4. 通过API
dbms_rls.add_policy付给VPD策略

图片 14

Step5. 反省VPD策略是还是不是赋值成功

图片 15

Test1.
直接询问已进入客制化VPD策略的表,已按VPD策略,只显示金额小于1000的笔录

图片 16

 

Thanks and Regards

图片 17

相关文章