网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle电子商务套件11i10首次亮相.
.PXE Remote Boot --Linux.
.修改默认的undo_retention参数设.
.关于shared pool的深入探讨(二).
.一起学习在linux下使用汇编语言(.
.oracle的update问题.
.必须要熟悉的V$视图.
.深入分析Oracle数据库日志文件(.
.把Oracle数据库移植到Microsoft .
.[Oracle 10g] 大文件表空间.
.用Linux轻松建立内部“因特网”.
.字符集问题的初步探讨.
.VB调用Oracle返回数据集.
.Oracle数据库最优化参数缩短反应.
.怎样自动将数据导入 Oracle数据库.
.Oracle网格计算中文资料—企业管.
.详细介绍 Oracle 9i 的各个技术特.
.Digital Unix Version 4.0下Orac.
.名字中包含了什么?:改善的表空.
.设置不使用spfile.

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

发表日期:2008-2-9


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为数据访问的控制提供了很多选择,而你的任务就是去选择和实现能够满足你设计要求的最佳访问控制法。

上一篇:Oracle Spatial临时表具体设计及功能 人气:682
下一篇:提高Oracle数据库系统Import的性能 人气:601
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐