分享
 
 
 

利用Oracle的许可执行安全模式实现更好的控制

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Oracle许可安全(grant security)有这样的一个缺点,要维护所有的访问角色并将这些角色分配给最终用户是非常困难的。为了解决这些问题并简化Oracle的安全模式,Oracle引入了许可执行方法(grant execute method)。使用许可执行方法,所有的数据访问代码都会被封装进Oracle的存储过程里,而最终用户会被赋予执行这段代码的能力。

许可执行安全模式的设计

同特定的许可模式(在这个模式下,特定的数据库权限被赋予特定的用户)不同,许可执行模式允许用户被赋予执行的访问权,而不需要任何数据库的权限。在Oracle里,这叫做定义者的权利(definer right)。当代码被执行的时候,最终用户就取得了存储过程定义者对数据库的访问权限。同标准的许可安全模式相比,定义者权利具有多个重要的优势,主要是访问规则的简化。

在Oracle里,你可能也会使用调用者权利(invoker right),通过它,最终用户将只能使用由标准许可安全模式所分配的权限来执行存储过程。调用者权利要更复杂一些(这也是很多Oracle设计者更不愿意看到的),因为还必须实现Oracle许可安全。

很明显,许可执行模式需要仔细的前期设计。开发人员必须被迫遵照设计标准,创建Oracle存储过程和函数,它们然后会被封装进程序包里。

从操作过程上讲,这要求Oracle的设计人员为系统预先确定过程码(process code),并定义一组执行所有数据库访问和处理的程序包。

许可执行安全模式的好处

许可执行模式尤其引起了Oracle设计者的关注,因为它还有其他几个好处:

所有的过程码和SQL都被保存在数据字典里――

许可执行模式允许所有的SQL和程序都驻留在数据字典里,在这里它们能够被很容易地找到、修改和调整。

很容易就能够通过过程码来实现快速执行――

在Oracle9i里,所有的存储过程都能够被编译,还能够使用dbms_shared_pool.keep过程被放在在Oracle的库缓冲区里。这就实现了应用程序代码的超高速执行。

数据和行为的耦合

将代码封装进Oracle的存储过程里使得Oracle的设计人员能够将数据库实体同作用于这些实体的代码紧密地耦合在一起。例如,Oracle的成员方法(member method)能够为客户表格而创建,这样Oracle就知道数据库同什么代码相关联。这同面向对象的模型是相同的,在面向对象的模型里,方法是同C++或者Java对象的类相关联的。

数据库代码的隔离

由于最终用户的屏幕上没有过程代码或者SQL,因此所有对数据库的访问都是通过调用标准的存储过程而实现的。这就使得应用程序不再依赖于数据库,这意味着该应用程序能够被轻易地移植到另一个数据库,而不要对前端的代码作出任何修改。

数据访问的严密控制

通过使用定义者权利,最终用户只有在使用存储过程和函数的情况下才能够访问数据库。这就使得过程代码能够严密地控制访问规则并消除任何从后门对数据库的访问。许可执行模式所能做到的还不止对Oracle表格的访问控制。由于存储过程会控制对数据库的访问,因此存储过程能够定义过程规则,而最终用户需要这些规则才能够看到Oracle的数据。行这一层、列这一层,以及依赖于数据的访问规则都是在Oracle存储过程的PL/SQL或者Java内被编码的。

拒绝后门

最终用户只有在其执行存储过程的时候才拥有对数据库的(访问)权限,超出了其过程的范围,他们就无法访问Oracle了。

和所有的Oracle安全模式一样,许可执行模式不是没有局限性的。现在让我们来看看其中的一些。

许可执行安全模式的局限性

许可执行安全模式最适合于正式的系统设计项目,在这样的项目里,项目分析人员会在开始编程之前仔细地规划访问代码和规则。许可执行模式的主要局限性有:

需要仔细的前期设计

专用系统的开发并不是很容易就能够实现的,因为其设计需要对主要的程序包、存储过程和函数预先进行定义。

可选的过程语言有限

Oracle的函数和存储过程的代码需要在PL/SQL或者Java里编写。但是,有些Oracle的设计人员要求只有SQL才能够被保存在存储过程里。这就使得开发人员能够使用他们所希望使用的任何过程语言。前端并没有被要求完全独立于代码,它包含有过程代码,但是所有的数据库SQL都会被存储过程和函数调用所替代。

难以审计

由于最终用户只有在执行存储过程的时候才能够具有访问数据库的权限,因此创建列表来包括数据库实体以及那些能够访问这些数据库实体的最终用户是很困难的。对定义者权利和许可执行安全的审计需要你编写复杂的审计程序,以剖析和解释这些存储过程。

许可的执行

正如你能够看到的,许可执行这一方法同传统的许可安全模式相比具有很多优势,但是它也存在某些不足之处。由于Oracle是世界上最强大和最灵活的数据库,所以你还有其他的方法来控制用户对数据的访问。Oracle为数据访问的控制提供了很多选择,而你的任务就是去选择和实现能够满足你设计要求的最佳访问控制法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有