Oracle数据库安全解决方案及技术综述学院:电子与信息工程学院专业:xxxxxxxx学号:xxxxxx学生姓名:xxxxx指导教师:xxxxxx日期:xxxxxxxOracle数据库安全解决方案及技术综述1.背景介绍随着网络技术的飞速发展。网络安全问题日渐突出。数据库技术自20世纪60年代产生至今,也已得到了快速的发展和广泛应用,数据库中由于数据大量集中存放,且为众多用户直接共享,安全性问题尤为突出。数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。经过几十年的发展,数据库技术在理论上得到不断完善的同时,也广泛地投入到财务、教育、电子政务、金融等领域中得到大规模的应用。目前,市场上不仅有能满足个人用户需要的桌面小型数据库管理系统,也有能提供大规模数据管理功能、应用在网络环境的大中型数据库管理系统。2.数据库系统安全概述安全威胁当前对数据库的主要安全威胁有物理威胁和逻辑威胁:①物理威胁主要是像各种外力,如:恐怖事件,火灾等造成的数据库服务器故障或数据库中存储介质的损坏造成的数据丢失。②逻辑威胁主要是指对信息的未授权存取,如:恶意用户侵入某银行数据库系统窃取信用卡数据信息。数据库安全技术目前对数据库安全物理威胁的主要解决方案包括数据备份/恢复、数据导入/导出、数据库的灾难恢复,计算机的集群和磁盘阵列等技术,在此本文不进行讨论。本文以Oracle数据库为例阐述对逻辑威胁的主要解决方法,包括身份认证、存取控制、网络加密、数据加密、审计等技术。数据库系统的安全需求数据库的完整性主要包括物理完整性和逻辑完整性。物理完整性主要包括物理完整性和逻辑完整性。物理完整性是指保证数据库的数据不受物理故障,如硬件故障、掉电的影响,并有可能在灾难毁坏时重建和恢复数据库。逻辑完整性是指对数据库逻辑结构的保护,包括数据的语义完整性和操作完整性。前者主要指数据存取在逻辑上满足完整性约束,后者主要指在并发事务中保证数据的逻辑一致性。数据库的保密性指不允许未经授权的用户存取数据;数据库的可用性则是指不应拒绝授权用户对数据库的正常操作,同时保证系统的运行效率并提供用户友好的人机交互。一般而言,数据库的保密性和可用性是一对矛盾。对这一矛盾的分析与解决构成了数据库系统的安全模型和一系列安全机制的主要目标。数据库系统的安全需求3.Oracle的安全策略3.1系统安全性策略系统安全策略的定义[1]为:系统安全策略是数据库系统为达到安全目标和相应的安全级别所定义的安全技术、方法、机制的总和。DBMS将系统安全策略体现在其软件之中,最后由DBA给予实现,主要体现在安全管理。Oracle9i的系统安全策略主要功能如下:(1)系统与数据的安全性策略数据库用户管理(DBU)。数据库主要是由DBU访问的。DBA可授权DBU应用Create、Alter、Drop语句对数据库对象的操作权限,用户身份验证。数据库用户可以通过操作系统、网络服务、数据库或者安全套接字层SSL进行身份确认。(2)操作系统(IOS安全性由于Oracle数据库和应用程序是运行在网络操作系统(NOS)之上,然后进行安全认证的。所以前两者的安全性需要与操作系统安全一同考虑。DBA必须具有对NOS的文件进行Create和Delete的权限而数据库用户却不具有。如果操作系统为数据库用户分配角色,则DBA必须有修改操作系统账户安全区域的操作系统权限。3.2用户验证:Oracle采用数据库验证、外部验证和企业验证三种用户验证方式。数据库验证当创建用户和指定口令时,便使用数据库验证,同时具有了口令管理能力。Oracle通过在一个概要文件中设置参数并把该文件分配给一个用户的方式来实现的。一个概要文件可以限制会话的数量、每个会话使用的CPU时间、调用次数、读的次数、空闲时间以及连接时间。概要文件可以防止破坏者利用所有的资源以拒绝服务的攻击方式破坏系统。外部验证外部验证是指在Oracle之外的验证,即网络操作系统(NOS)和网络验证服务。使用外部验证后在Oracle就无需再验证。若选此项,则在init.ora文件设置相关参数通知Oracle。使用NOS进行验证的优点是,用户更快更方便地连接数据库;对用户验证进行集中控制;用户信息只有一份副本并保存在NOS中,Oracle中无需保存,当然两者用户应是相同的,同时审计信息只保存在NOS中。网络验证服务属于高级安全技术。主要应用网络安全服务,例如Kerberos或PKI等。企业验证企业验证应用于网络环境下的分布式数据库。分布式环境存在多个数据库服务器,它们组成资源的总和定义为全局资源。可以使用全局资源(任何一个数据库服务器)的用户定义为全局用户。企业验证是全局用户使用全局资源的验证,即Oracle安全服务(OSS)。由Oracle安全服务器完成。用安全信息和全局资源存储在网络(LAN/Intranet/Internet)的目录中,存储该目录的服务器称为目录服务器。通常使用轻量目录协议(LDAP)访问该服务器,使用全局口令登录到Oracle分布式数据库的用户称为全局用户。可将全局用户的权限定义为不同的角色即全局角色。全局角色的全体组成企业角色。Oracle安全服务器OSS实现全局用户的登录过程:(1)全局用户登录到Oracle分布式数据库系统中;(2)OSS动态地将某个全局角色分配给该用户;(3)该全局角色所具有的权限即可访问该权限的数据库服务器。换言之,系统中的多个数据库服务器具有不同的权限,它们与全局角色存在对应(映射)关系。最简单的是一对一映射,最复杂的是多对多映射。用户许可用户登录到一个数据库服务器到退出期间称为会话。Oracle可通过设置来限制会话数量。会话数量的设置称为并发许可(协议)。许可是并发使用的,由此许可指定的是并发用户的最大数量,即同时连接到数据库(服务器)的用户会话数量。通过命名用户的许可,可以限制可访问一个数据库的命名用户数量。系统运行期间可以跟踪实际会话数量,也能改变并发会话的最大数量。当达到上限时,只有DBA能够连接到数据库。而对于一般用户,Oracle会给他发送一条消息,显示到达最大数量的限制,同时将该消息写入到警告文件中。除此之外,还可以设置并发会话的警告限制数量。在到达该值时,一般用户还可以继续建立新的会话直到达到最大限制值。然后,Oracle给每个连接的警告文件写一条消息,并且给一般用户发送一条快要达到最大限制的消息。通过命名用户许可,限制指定的数据库服务器上使用Oracle的命名用户数量。使用这个许可就是在启动实例以前,设置在数据库可以创建的用户数量。当实例运行时,也可以改变这个最大值或完全停用这个限制。4.数据安全性策略主要包括在对象级控制数据库访问和使用的机制。主要有决定哪个用户访问特定的模式对象,在对象上允许每个用户的特定类型操作,也可以定义审计每个模式对象的操作。为数据库建立安全等级,例如,如果允许其他用户建立任何模式对象,或将对象的存取权限授予系统中的其他用户,这样的安全性是很差的。另外,当希望只有DBA有权限建立对象,并向角色和用户授予对象的存取权限时,必须严格控制数据库的安全。数据的重要性决定了数据和数据库的安全性。如果数据的重要性差,那么数据的安全性略差一些。反之,就应该有严格的安全性策略。用户来维护对数据对象访问的有效控制。数据安全的实现方法主要有:用户账号、对象授权、角色、细粒度存取控制和相关应用程序上下文控制。细粒度存取控制最简单的情况是在SQL语句中加了一个WHERE条件,用它来限制用户对表和视图里元组数据的存取。应用程序上下文是一个安全数据缓冲,用来存储存取控制决定的信息。5.用户安全性策略在Oracle数据库中,将用户分为一般用户、最终用户、管理员(DBA)、应用程序员和应用程序管理员。由于一般用户和管理员具有相对的普遍性,在次只针对一般用户和管理员的安全性策略进行介绍。5.1DBA的安全性策略当系统规模较小时,只需一个DBA,则系统安全管理员SSA也是DBA。当系统规模很大时,系统拥有多个DBA,这时两者是分开的。安全管理员将相关管理权限分成几个组,然后将不同的角色授予相应的DBA。当创建数据库后,立即更改有管理权限的sys和system用户的口令,防止非法用户访问数据库。当作为sys和system用户连入数据库后,用户有强大的权限用各种方式对数据库进行改动。只有DBA能用管理权限连入数据库,并保证只有DBA能作SYSDBA角色的成员,因为SYSDBA可以没有任何限制地操作和恢复数据库及数据库对象。6.Oracle提供的安全机制数据库的安全性可以分为两类,即数据库系统安全性和数据库数据安全性6.1系统安全性层面系统安全性是指在系统级控制数据库的存取和使用的机制。包括:①用户名/口令的组合是否有效;②用户是否具有连接数据库的授权;③用户以执行哪些操作;④用户可用的磁盘空间的数量:⑤用户的资源限制;⑥数据库审计是否有效。数据备份Oracle提供了比较完备的数据备份技术。具体请参见Oracle9i使用手册。身份认证在网络环境下多用户系统中,身份认证是安全机制中重要环节。身份认证包括标识和验证,标识是指用户向系统出示自己的身份证明,常用的方法是输入用户名和口令;验证则是系统验证用户的身份证明。Oracle允许不同类型的验证,以Oracle数据库为基础的验证允许拥有用户账户ID和密码,密码以加密的格式存储在数据字典中。Oracle也支持基于主机操作系统的用户账号转为Oracle账户的验证。此外,Oracle高级安全选件还提供更加安全的验证方法[3],如:NTS、KERBEROSS、RADIUS等验证方式。存取控制数据库的存取控制机制是定义和控制用户对数据库数据的存取访问权限,以确保只授权给有资格的用户访问数据库的权限并防止和杜绝对数据库中数据的非授权访问。数据库管理系统需要对精细的数据粒度加以控制,数据库中的粒度有记录、表格、属性、字段和值等。Oracle可利用权限、角色、概要文件、细粒度访问等技术提供存取控制支持。权限默认情况下新的Oracle用户不具备任何权限。新用户在登录数据库以及运行数据库操作前必须被授予权限。Oracle数据库包含系统权限和对象权限。系统权限允许用户建立和使用对象,但不授权访问真正的数据库对象。系统权限允许用户运行如:ALTERTABLE,CREATETABLE等权限。对象权限被用来允许访问特殊的数据库对象,如表或视图。Oracle允许对象的拥有者将他们拥有的针对这些对象的权限授予其他用户或角色。角色角色是用来简化用户权限分派的管理任务,用户可以被指派多个角色。将权限组织到角色中后再利用角色对一个或多个用户授权使授权管理变得更加容易。Oracle拥有一些特定权限的默认角色。如:Connect角色允许用户登录和建立自己的表、索引等;Resource角色允许用户建立触发器和存储过程等对象。数据库管理员DBA角色被授予所有管理数据库和用户的系统权限。用户为方便管理可以建立自定义的角色。概要文件Oracle利用概要文件来允许管理员针对一些系统资源,密码的利用。这些概要文件可以被定义、命名、然后指派给特定的用户或用户组。概要文件可以用来设置用户在特定的系统资源上的限制,如CPU时间、同时建立的有效会话数、特定用户建立会话的最大时间等。此外,概要文件也可以用来强制定义密码规则,如密码有效期、密码格式、在若干次登录失败尝试后锁定账户,也可以利用自定义密码格式规则函数来限制密码的设置规则。细粒度访问Oracle提供了细粒度访问控制机制OracleLabelSecurity[5],可实施对单个表或整个模式上的行级访问控制。要利用OracleLabelSecurity,需要创建一个或多个安全策略,其中每一个安全策略都包含一组标签。标签用来标明哪些用户能够访问什么类型数据。在创建了一个策略之后,将该策略应用于需要保护的表,并将这些标签授予用户。当Oracle数据库在解析SQL语句时会检测表是否受到某个安全策略的保护,根据用户的访问权限数据库向该SQL。语句的