目录ORACLE安全管理在数据库设计与开发中的应用研究...........................................1一Oracle安全性能................................................................................................21.1合法用户的帐户安全性............................................................................21.2数据库对象的访问安全性........................................................................21.3管理全局权限的系统级安全性................................................................2二Oracle系统级角色...........................................................................................32.1CONNECT角色........................................................................................32.2RESOURCE角色...................................................................................32.3DBA角色..................................................................................................42.4其它系统级角色........................................................................................4三用户、角色及其权限管理...............................................................................53.1建立和修改用户........................................................................................53.2删除用户....................................................................................................53.3对象级权限管理及角色应用....................................................................5四登陆期间的口令安全.......................................................................................6五安全审计...........................................................................................................6六数据库应用系统的设计与开发.......................................................................76.1应用设计...................................................................................................76.2应用开发...................................................................................................8ORACLE安全管理在数据库设计与开发中的应用究摘要:数据库安全性问题一直是围绕着数据库管理员的噩梦,数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。围绕数据库的安全性问题提出了一些安全性策略,包括用户、角色的使用以及安全审计等,希望对数据库管理员有所帮助。关键字:Oracle技术权限用户角色安全管理一Oracle安全性能1.1合法用户的帐户安全性要访问一个Oracle数据库中的数据,必须先是访问该数据库的一个帐户。这个访问可以是直接访问—通过到一个数据库的用户连接—或间接访问。间接连接访问包括通过在数据库链接中预设权限的访问。每个帐户必须有一个与其相关的口令。一个数据库帐户也可以连接到一个操作系统帐户上。1.2数据库对象的访问安全性对数据库中一个对象的访问是通过权限(privilege)来完成的。可以通过grant命令向特定帐户分配访问权限,也可以创建角色(role即权限组)来简化权限的管理。由于角色可以用口令保护且能被动态地允许和禁止,所以它们给数据库增加了一个附加安全层。1.3管理全局权限的系统级安全性可以使用角色来管理对用户有效的系统级命令。这些命令包括createtable和alterindex等,对于每种数据库对象的操作都是由各自的权限授权的。例如,一个用户可以被授予CREATETABLE权限,而不是CREATETYPE权限。可以创建一些自定义的系统级角色,这些角色只向用户授予他们在数据库中所需的权限而不是过多的特权。CONNECT和RESOURCE角色分别是最终用户和开发人员所要求的基本系统权限。具有RESOURCE角色的用户还被授予UNLIMITEDTABLESPACE系统权限,使他们在数据库的任何地方都能创建对象。由于有这个附加权限,所以应限制把RESOURCE角色用于开发和测试环境。二Oracle系统级角色2.1CONNECT角色CONNECT角色不只给予用户能够在数据库中创建会话的权限。除了CREATESESSION系统权限外,CONNECT角色还给予用户以下权限:ALTERSESSION、CREATECLUSTER、CREATEDATABASELINK、CREATESEQUENCE、CREATESYNONYM、CREATETABLE和CREATEVIEW等。然而,用户不具有创建表和簇的能力(这些对象都会占用数据库空间),除非授予用户相应的表空间定额,或被授予RESOURCE角色。通常CONNECT角色已能够满足所有环境中的最终用户。对于某些开发人员,它也可能满足需求。例如,如果开发人员并不需要创建诸如进程、包、触发器及各种抽象数据类型等数据库对象,那么CONNECT角色就可以满足他的需要。2.2RESOURCE角色RESOURCE角色具有以下系统权限:CREATECLUSTER、CREATEINDEXTYPE、CREATEOPERATOR、CREATEPROCEDURE、CREATESEQUENCE、CREATETABLE、CREATETRIGGER和CREATETYPE。具有RESOURCE角色的用户还被授予UNLIMITEDTABLESPACE权限,因此这些用户可超越为他们定义的空间定额。应该把RESOURCE角色授那些需要创建进程和触发器等PL/SQL对象的开发人员。如果开发人员使用了ObjectsOption,RESOURCE角色将给予他们CREATETYPE权限,该权限允许他们创建和执行类型和方法。如果想要限制开发人员的权限,可以创建自己的角色并授予它某些系统级权限。例如,可以限制开发人员创建表和簇的能力,而允许他们创建索引和过程对象。在这种情况下,便可以创建系统级角色并授予它RESOURCE角中除被拒绝的权限之外的所有系统级权限。通常,只须在开发阶段授予开发人员RESOURCE角色,而在测试和产品阶段,CONNECT角色就足够了。如果给予开发人员对产品数据库的RESOURCE访问权,你就将失去对数据库的控制并对你实施改动控制过程的能力有重大影响。2.3DBA角色DBA角色拥有带withadminoption的所有系统权限,withadminoption意味着DBA可以授予其他用户系统权限。在任何开发、测试、产品数据库中,不应授予用户或开发人员DBA角色。如果在开发中授予了开发人员DBA角色,那么在应用程序交付给产品环境时,开发人员将假设他们仍拥有相同的系统权限而编制他们的应用程序。如果不能严格限定DBA权限帐号的访问,那么也就不能保证数据库中数据的安全,而这是DBA人员的一项重要任务。2.4其它系统级角色当执行整个数据库的导入或导出操作时,在导出和导入期间分别使用IMP_FULL_DATABASE和EXP_FULL_DATABASE角色。这些角色是DBA角色的一部分,可以使用这些角色授予用户有限的数据库管理权限。SELECT_CATALOG_ROLE、EXECUTE_CATALOG_ROLE和DELETE_CATALOG_ROLE角色,DELETE_CATALOG_ROLE是这三种角色中最简单的角色。如果授予用户这个角色,该用户就可以从SYS.AUD$表中删除记录(SYS.AUD$表是写审计记录的表)。给一个用户授予这个角色,该用户不再需要其他DBA级命令就能从审计跟踪表中删除记录。使用这种角色可以简化计跟踪管理进程。SELECT_CATALOG_ROLE和EXECUTE_CATALOG_ROLE角色授予用户选择或执行可导出的数据字典对象的权限。不是每个数据库对象在整个系统导出时都要被导出,例如动态性能视图就不导出。因此,SELECT_CATALOG_ROLE不给予用户从动态性能表中选择的能力,而是给予用户从大多数数据字典中查询的能力。同样,EXECUTE_CATALOG_ROLE给予用户执行数据字典中部分过程和函数的能力。三用户、角色及其权限管理3.1建立和修改用户建立一个用户,创建一个安全、有用的帐户,并且这个帐户要有充分的权限和正确的缺省设置值。可以使用createuser命令来创建一个新的数据库帐户。该帐户创建后,在授权前它没有任何效力,用户甚至不能注册。所有用户帐户所需的设置值都可以在一个createuser命令中指定由于没有指定环境文件,所以必须使用数据库的缺省环境文件。实际的环境文件名为DEFAULT;其初始设置值是设置所有资源消耗的限值为UNLIMITED由于没有指定定额,所以用户不能在数据库中创建对象。除用户名外,createuser命令中的全部参数都可以由alteruser命令来更改。创建用户,也可以通过OracleDBAStudio进行。3.2删除用户可以用dropuser命令从数据库中撤消一个用户。这个命令只有一个参数——cascade,在撤消该用户之前,它撤消用户模式中的所有对象。如果用户拥有对象,就必须指定cascade以撤消用户。引用被撤消的用户模式中对象的任何视图、同义词、过程、函数或数据包都被标上INVALID。如果以后用相同的名字创建另一个用户,他从具有相同名称的前任用户继承不到任何东西。撤消用户,也可以通过OracleDBAStudio进行。3.3对象级权限管理及角色应用对象级权限(object-levelprivilege)使用户可以访问不属于自己的数据。可以使用角色来减少权限的管理。显式权限也可以使用,并且在一些情况下是必须的。权限通过grant命令创建,存于数据字典中。对表、视图、序列(以及它们的同义词)的访问,加上执行过程、函数、软件包及类型的能力都可以授权给用户。可以使用withgrantopti