4数据库的安全性与完整性数据库在各种信息系统中得到广泛的应用,数据在信息系统中的价值越来越重要,数据库系统的安全与保护成为一个越来越值得重要关注的方面。数据库系统中的数据由DBMS统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,要求对数据库实施保护,使其免受某些因素对其中数据造成的破坏。一般说来,对数据库的破坏来自以下4个方面:(1)非法用户非法用户是指那些未经授权而恶意访问、修改甚至破坏数据库的用户,包括那些超越权限来访问数据库的用户。一般说来,非法用户对数据库的危害是相当严重的。(2)非法数据非法数据是指那些不符合规定或语义要求的数据,一般由用户的误操作引起。(3)各种故障各种故障指的是各种硬件故障(如磁盘介质)、系统软件与应用软件的错误、用户的失误等。(4)多用户的并发访问数据库是共享资源,允许多个用户并发访问(ConcurrentAccess),由此会出现多个用户同时存取同一个数据的情况。如果对这种并发访问不加控制,各个用户就可能存取到不正确的数据,从而破坏数据库的一致性。针对以上4种对数据库破坏的可能情况,数据库管理系统(DBMS)核心已采取相应措施对数据库实施保护,具体如下:(1)利用权限机制,只允许有合法权限的用户存取所允许的数据,这就是本章4.1节“数据库安全性”应解决的问题。(2)利用完整性约束,防止非法数据进入数据库,这是本章4.2节“数据库完整性”应解决的问题。(3)提供故障恢复(Recovery)能力,以保证各种故障发生后,能将数据库中的数据从错误状态恢复到一致状态,此即本章4.3节“故障恢复技术”的内容。(4)提供并发控制(ConcurrentControl)机制,控制多个用户对同一数据的并发操作,以保证多个用户并发访问的顺利进行,此即本章4.4节“并发控制”的内容。4.1数据库安全性4.1.1数据库安全性问题的概述1.数据库安全问题的产生数据库的安全性是指在信息系统的不同层次保护数据库,防止未授权的数据访问,避免数据的泄漏、不合法的修改或对数据的破坏。安全性问题不是数据库系统所独有的,它来自各个方面,其中既有数据库本身的安全机制如用户认证、存取权限、视图隔离、跟踪与审查、数据加密、数据完整性控制、数据访问的并发控制、数据库的备份和恢复等方面,也涉及到计算机硬件系统、计算机网络系统、操作系统、组件、Web服务、客户端应用程序、网络浏览器等。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出,每一个方面产生的安全问题都可能导致数据库数据的泄露、意外修改、丢失等后果。例如,操作系统漏洞导致数据库数据泄漏。微软公司发布的安全公告声明了一个缓冲区溢出漏洞(),WindowsNT、Windows2000、Windows2003等操作系统都受到影响。有人针对该漏洞开发出了溢出程序,通过计算机网络可以对存在该漏洞的计算机进行攻击,并得到操作系统管理员权限。如果该计算机运行了数据库系统,则可轻易获取数据库系统数据。特别是MicrosoftSQLServer的用户认证是和Windows集成的,更容易导致数据泄漏或更严重的问题。又如,没有进行有效的用户权限控制引起的数据泄露。Browser/Server结构的网络环境下数据库或其他的两层或三层结构的数据库应用系统中,一些客户端应用程序总是使用数据库管理员权限与数据库服务器进行连接(如MicrosoftSQLServer的管理员SA),在客户端功能控制不合理的情况下,可能使操作人员访问到超出其访问权限的数据。在安全问题上,DBMS应与操作系统达到某种意向,理清关系,分工协作,以加强DBMS的安全性。数据库系统安全保护措施是否有效是数据库系统的主要指标之一。为了保护数据库,防止恶意的滥用,可以从低到高的五个级别上设置各种安全措施。(1)环境级:计算机系统的机房和设备应加以保护,防止有人进行物理破坏。(2)职员级:工作人员应清正廉洁,正确授予用户访问数据库的权限。(3)OS级:应防止未经授权的用户从OS处着手访问数据库。(4)网络级:由于大多数DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性至关重要。(5)DBS级:DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确。本章只讨论与数据库系统中的数据保护密切相关的内容。2.数据库的安全标准目前,国际上及我国均颁布有关数据库安全的等级标准。最早的标准是美国国防部(DOD)1985年颁布的《可信计算机系统评估标准》(ComputerSystemEvaluationCriteria,TCSEC)。1991年美国国家计算机安全中心(NCSC)颁布了《可信计算机系统评估标准关于可信数据库系统的解释》(TrustedDatebaseInterpreation,TDI),将TCSEC扩展到数据库管理系统。1996年国际标准化组织ISO又颁布了《信息技术安全技术——信息技术安全性评估准则》(InformationTechnologySecurityTechniques——EvaluationCriteriaForItSecruity)。我国政府于1999年颁布了《计算机信息系统评估准则》。目前国际上广泛采用的是美国标准TCSEC(TDI),在此标准中将数据库安全划分为4大类,由低到高依次为D、C、B、A。其中C级由低到高分为C1和C2,B级由低到高分为B1、B2和B3。每级都包括其下级的所有特性,各级指标如下:(1)D级标准:为无安全保护的系统(2)C1级标准:只提供非常初级的自主安全保护。能实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。(3)C2级标准:提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。很多商业产品已得到该级别的认证。(4)B1级标准:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。一个数据库系统凡符合B1级标准者称之为安全数据库系统或可信数据库系统。(5)B2级标准:结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。(6)B3级标准:安全域。满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。(7)A级标准:验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证,以确信各安全保护真正实现。我国的国家标准的基本结构与TCSEC相似。我国标准分为5级,从第1级到第5级依次与TCSEC标准的C级(C1、C2)及B级(B1B2B3)一致。4.1.2数据库的安全性机制在一般计算机系统中,安全措施是一级一级层层设置的,如图6-1所示。在图6.1的安全模型中,用户要进入计算机系统,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统。对已经进入系统的用户,DBMS要进行存取控制,只允许用户执行合法操作。操作系统一级也会有自己的保护措施。数据最后还可以以密码形式存储在数据库中。在本节中对数据库的一些逻辑安全机制进行介绍,包括用户认证、存取权限,视图隔离、数据加密、跟踪与审查等内容作介绍。1.用户认证数据库系统不允许一个未经授权的用户对数据库进行操作。用户标识与鉴别,即用户认证,是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份,每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。对于获得上机权的用户若要使用数据库时,数据库管理系统还要进行用户标识和鉴定。用户标识和鉴定的方法有很多种,而且在一个系统中往往多种方法并用,以得到更强的安全性。常用的方法是用户名和口令。通过用户名和口令来鉴定用户的方法简单易行,但其可靠程度极差,容易被他人猜出或测得。因此,设置口令法对安全强度要求比较高的系统不适用。近年来,一些更加有效的身份认证技术迅速发展起来。例如使用某种计算机过程和函数、智能卡技术,物理特征(指纹、声音、手图等)认证技术等具有高强度的身份认证技术日益成熟,并取得了不少应用成果,为将来达到更高的安全强度要求打下了坚实的理论基础。2.存取控制数据库安全性所关心的主要是DBMS的存取控制机制。数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现。存取控制是数据库系统内部对已经进入系统的用户的访问控制,是安全数据保护的前沿屏障,是数据库安全系统中的核心技术,也是最有效的安全手段。在存取控制技术中,DBMS所管理的全体实体分为主体和客体两类。主体(Subject)是系统中的活动实体,包括DBMS所管理的实际用户,也包括代表用用户DBMSOSDB用户标识和鉴别存取控制操作系统安全保护数据密码存储户的各种进程。客体(Object)是存储信息的被动实体,是受主体操作的,包括文件、基本表、索引和视图等。数据库存取控制机制包括两个部分:一是定义用户权限,并将用户权限登记到数据字典中。用户权限是指不同的用户对不同的数据对象允许执行的操作权限。系统必须提供适当的语言定义用户权限,这些定义经过编译后存放在数据字典中,被称作系统的安全规则或授权规则。二是合法性权限检查。当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象、操作用户等信息),数据库管理系统查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义权限,系统将拒绝执行此操作。存取控制包括自主型存取控制(DAC)和强制型存取控制(MAC)两种类型。(1)自主存取控制(DiscretionaryAccessControl,DAC)自主型存取控制是用户访问数据库的一种常用安全控制方法,较为适合于单机方式下的安全控制,大型数据库管理系统几乎都支持自主存取控制。在自主型存取控制中,用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。用户权限由数据对象和操作类型这两个因素决定。定义一个用户的存取权限就是要定义这个用户在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权。自主型存取控制的安全控制机制是一种存取矩阵的模型,此模型由主体、客体与存/取操作构成,矩阵的列表示主体,矩阵的行表示客体,而矩阵中的元素表示存/取操作(如读、写、修改和删除等),如图6-2所示。主体客体主体1主体2……主体n客体1writedelete……update客体2deleteread……Write/read…………………………客体mupdateread……update图6-2授权存/取矩阵模型在这种存取控制模型中,系统根据对用户的授权构成授权存取矩阵,每个用户对每个信息资源对象都要给定某个级别的存取权限,例如读、写等。当用户申请以某种方式存取某个资源时,系统就根据用户的请求与系统授权存取矩阵进行匹配比较,通过则允许满足该用户的请求,提供可靠的数据存取方式,否则,拒绝该用户的访问请求。目前的SQL标准也对自主存取控制提供支持,主要是通过SQL的GRANT语句和REVOKE语句来是实现权限的授予和收回,这部分内容将在下节中作祥细介绍。自主存取控制能够通过授权机制有效地控制其他用户对敏感数据的存取,但是由于用户对数据的存取权限是“自主”的,用户可以自由地决定将数据的存取权限授予别的用户,而无需系统的确认。这样,系统的授权存取矩阵就可以被直接或间接地进行修改,可能导致数据的“无意泄漏”,给数据库系统造成不安全因素。要解决这一问题,就需要对系统控制下的所有主体、客体实施强制型存取控制策略。(2)强制存取控制(MandatoryAccessControl,MAC)所谓MAC是指系统为保证更高程度的安全性,按照TCSEC(TDI)标准中安全策略的要求,所采取的强制存取检查手段,较为适用于网络环境,对网络中的数据库安全实体作统一的、强制性的