SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)
2014-05-30 Created By BaoXinjian
之前一直存在对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
- 以下为详细介绍
例如, 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
所以在仿照标准的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. 查询基表和视图都是可以返回所有两条记录
Step5. 最关键的一步,对客制化视图bxj_vpd_invoics_v添加安全性策略dbms_rls.add_policy
Step6. 产看安全性策略是否建立成功
Test1. 策略建立成功,进行测试,直接select table bxj_vpd_invoics_v, 查询未返回任何结果
Test2. 对session进行初始化
Test3. 再次直接select table bxj_vpd_invoics_v,查询只返回一条ORG204的记录,而ORG889的记录则并没显示,实现了对客制化表的多组织访问
需求: 对数据表bxj_invoice_total不显示invoice total > 1000的记录
Step1.创 建一个简单的表,并准备4笔测试数据
Step2. 查看原始数据,有4笔资料
Step3.最关键的一步,建立VPD Function,系统返回以下字段,作为VPD策略,其实个人感觉就是根据不同的条件和环境去区分所要加的条件组合,来实现数据的访问控制
Step4. 通过API dbms_rls.add_policy付给VPD策略
Step5. 检查VPD策略是否赋值成功
Test1. 直接查询已加入客制化VPD策略的表,已按VPD策略,只显示金额小于1000的记录
Thanks and Regards
SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)的更多相关文章
- SYS_R12 MOAC多组织的四个应用(案例)
2014-05-31 Created By BaoXinjian
- PLSQL_R12 MOAC多组织的四个应用(案例)
一.摘要 R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充 1. 开发时打开Form自动弹出组织选择实现方式(增加C ...
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
- 20151028整理罗列某种开发所包括对技术(技术栈),“较为全面”地表述各种技术大系的图表:系统开发技术栈图、Web前端技术栈图、数据库技术栈图、.NET技术栈图
———————————— 我的软件开发生涯 (10年开发经验总结和爆栈人生) 爆栈人生 现在流行说全栈.每种开发都有其相关的技术.您是否觉得难以罗列某种开发所包括对技术(技术栈)呢? 您是否想过: ...
- Azure底层架构的初步分析
之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...
- 图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize)
图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步 ...
- Docker 介绍以及其相关术语、底层原理和技术
https://ruby-china.org/topics/22004 Docker是啥 Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中 ...
- iOS底层音频处理技术(带源代码)
本文由论坛会员artgolff分享 前几天搜索资料时发现一个网站: iPhone Core Audio Development ,里面有iOS底层 音频 技术的几个源 代码 ,如果你要实现VoIP电话 ...
- Web---myAjax(自己写底层)-隐藏帧技术
讲解网站一般都有的一个功能,就是注册时候的,实现验证用户名是否存在的功能. 源代码演示: reg.jsp: <%@ page language="java" import=& ...
随机推荐
- 让 IE6, 7和 8支持CSS3的HTC文件补丁
让 IE6, 7和 8支持CSS3 IE6,7并不支持CSS3的属性,IE8也不能很好的支持CSS3.但是有一个小脚本能够做到,它可以让IE支持CSS3,包括:border-radius (round ...
- 关于一道JS面试题的思考
题目: ; i < ; i++) { setTimeout(function() { console.log(new Date, i); }, ); } console.log(new Date ...
- j2ee model1模型完成分页逻辑的实现 详解!
在显示用户全部信息的页面,在显示全部数据的时候,长长的滚动条,像是没有边界的天空一样, 让用户查看数据很不方便. 于是, 我们要把这些数据分页显示, 就像office的word一样,每页显示一定数量的 ...
- Design Your Own Protocol In Five Minutes
https://mayaposch.wordpress.com/2011/10/03/design-your-own-protocol-in-five-minutes ---------------- ...
- Reduce Task的学习笔记
MapReduce五大过程已经分析过半了.上次分析完Map的过程,着实花费了我的非常多时间.只是收获非常大,值得了额,这次用相同的方法分析完了Reduce的过程,也算是彻底摸透了MapReduce思想 ...
- ZOJ 3587 扩展KMP
思路:这题确实大帝做得非常机智!字符串先求最长前缀,反的字符串再求一次最长前缀.然后就能够搞了. 每一个子串出现的次数就是最长前缀的次数嘛! #pragma comment(linker, " ...
- Android 之 Android目录
Android的目录结构如图所示: 下面来分别说说各个目录: 1.src:存放应用程序中所有的(后台)源代码,代码的源文件一般存放在相应的包下面. 2.gen:该目录下一般有BuildConfig.j ...
- 【树莓派】制作树莓派所使用的img镜像(二)
树莓派制作的镜像,需要如何使用,这里直接引用目前树莓派官方的文章,不再重复描述: 参考:http://shumeipai.nxez.com/2013/08/31/usb-image-tool.html ...
- uva 701 - The Archeologists' Dilemma
题目链接:uva 701 - The Archeologists' Dilemma 题目大意:给出x,求一个e,使得x * 10 ^ y ≤ 2 ^ e < (x + 1) * 10 ^ y. ...
- 【CSS】瀑布流布局的两种方式:传统多列浮动和绝对定位布局
传统多列浮动 各列固定宽度,并且左浮动: 一列中的数据块为一组,列中的每个数据块依次排列即可: 更多数据加载时,需要分别插入到不同的列上: 优点: (1)布局简单,应该说没啥特别的难点: (2)不用明 ...