第6章数据库安全保护【本章重点】理解数据库安全性控制含义,掌握数据库安全性控制方法;理解数据库的完整性控制;理解事务的概念,掌握数据库并发控制的方法;掌握数据库备份及恢复的原理和技术。36.1数据库的安全性控制6.2数据库完整性控制6.3事务和并发控制6.4数据库恢复46.1数据库的安全性数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一。一般来说,对数据库的破坏主要来自以下4个方面:(1)非法用户(2)非法数据(3)多用户的并发访问(4)各种故障针对以上四种对数据库破坏的可能情况,数据库管理系统(DBMS)已采取相应措施对数据库实施保护,具体如下:(1)利用权限机制。(2)利用完整性约束,防止非法数据进入数据库。(3)提供并发控制(ConcurrentControl)机制,控制多个用户对同一数据的并发操作,以保证多个用户并发访问的顺利进行。(4)提供故障恢复(Recovery)能力,以保证各种故障发生后,能将数据库中的数据从错误状态恢复到一致状态2、数据库的安全标准目前国际上广泛采用的是美国标准TCSEC(TDI),在此标准中将数据库安全划分为4大类,由低到高依次为D、C、B、A。其中C级由低到高分为C1和C2,B级由低到高分为B1、B2和B3。我国的国家标准的基本结构与TCSEC相似。我国标准分为5级,从第1级到第5级依次与TCSEC标准的C级(C1、C2)及B级(B1、B2、B3)一致。76.1.2安全性控制的方法数据库的安全性是指在信息系统的不同层次保护数据库,防止未授权的数据访问,避免数据的泄漏、不合法的修改或对数据的破坏。用户标识和鉴定用户用户存取权限控制DBMS操作系统安全保护操作系统密码存储数据库图6-1计算机系统的安全模型8安全性控制的一般方法用户认证存取权限控制视图隔离数据加密审计跟踪91、用户认证用户标识与鉴别,即用户认证,是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份,每次用户要求进入系统时,由系统进行核对,通过鉴定正确后才提供机器使用权。用户标识和鉴定的方法常用的方法是通过用户名和口令。系统内部会记录着所有合法用户的标识及口令,通过比对来核实是否为合法用户,用户口令的输入不显示在屏幕上。通过用户名和口令来鉴定用户的方法简单易行,但其可靠程度差。近年来,一些更加有效的身份认证技术迅速发展起来。例如使用某种计算机过程和函数、智能卡技术,物理特征(指纹、声音、手图等)等具有高强度的认证技术。102、存取权限控制用户存取权限确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法查看或操作数据。在存取控制技术中,DBMS所管理的全体实体分为主体和客体两类。数据库存取控制机制包括两个部分:1、定义用户权限,并将用户权限记录到数据字典中2、合法性权限检查存取控制包括自主型存取控制(DAC)和强制型存取控制(MAC)两种类型。3、视图隔离视图是是从一个或几个基表(或视图)导出的表,与基表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。在实际应用中,常将视图机制与存取控制机制结合起来使用,首先用视图机制屏蔽一部分保密数据,再在视图上进一步定义存取权限。通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。124、数据加密加密的基本思想是根据一定的算法将原始数据(术语为明文)变换为不可直接识别的格式(术语为密文),从而使得不知道解密算法的人无法获知数据的内容。数据解密是加密的逆过程,即将密文数据转变成可见的明文数据。一个密码系统包含明文集合、密文集合、密钥集合和算法,其中密钥和算法构成了密码系统的基本单元。算法是一些公式、法则或程序,它规定明文与密文之间的变换方法,密钥可以看作算法中的参数。加密方法可分为对称加密与非对称加密两种。135、审计跟踪审计功能是一种监视措施,它跟踪记录有关数据的访问活动。审计功能把用户对数据库的所有操作自动记录下来,存放在审计日志文件中。常用两种审计方式包括用户审计和系统审计。146.1.3SQLServer2012的安全性策略SQLServer2012的安全模型分为三层结构,分别为服务器安全管理、数据库安全管理和数据库对象的访问权限管理:第一层安全性是SQLServer服务器级别的安全性。建立在控制服务器登陆账号和密码的基础上。第二层安全性是数据库级别的安全性。即是否具有访问某个数据库的权利。第二层安全性是数据库对象级别的安全性。15SQLServer2012的身份验证模式Windows身份验证模式Windows身份验证模式使用由Windows授权的用户,并允许通过身份验证的用户登陆SQLServer2012。用户登录到SQLServer2012时,只需选择Windows身份验证模式,无需再提供登录帐户和密码,系统会从用户登录到Windows时提供的用户名和密码中查找用户的登录信息,以判断其是否为SQLServer2012的合法用户。该模式是SQLServer2012的默认登陆模式,支持Windows的密码策略和锁写策略。16TCP/IPSockets命名管道SQLServer身份验证模式Windows身份验证模式混合验证模式混合身份验证模式允许以SQLServer身份验证模式或者Windows身份验证模式来进行验证。如果在混合模式下选择使用SQLServer授权用户登录SQLServer2012,则用户必须提供登录名和密码,SQLServer使用这两部分内容来验证用户,SQLServer2012通过检查是否已设置SQLServer登录帐户,以及指定的密码是否与记录的密码匹配,进行身份验证。17SQLServer在安装时,会自动创建一个DB服务器的登录用户sa,即系统管理员,用以创建其他登录用户和授权。SQLServer2012保障服务器作用域安全可以通过管理登陆名来实现。创建服务器的登录账号利用EnterpriseManage利用存储过程EXECsp_addlogin'登录账号名称','密码','默认数据库名','使用的语言'[例]建立了一个名称为Jake的登录账号。EXECsp_addlogin'Jake',‘p2015','Teach',NULL18SQLServer的服务器角色角色(Role)是对权限集中管理的一种机制,将不同的权限组合在一起就形成了一种角色。服务器角色是执行服务器级管理操作的用户权限的集合。192、SQLServer的数据库用户数据库的用户账号用户账号要在特定的数据库内创建,并关联一个登录账号(当一个数据库的用户创建时,必须关联一个登录账号)。每个登录账号在一个数据库中只能有一个用户账号,但每个登录账号可以在不同的数据库中各有一个用户账号。注意:登录账号具有对某个数据库的访问权限,并不表示该登录账号对该数据库具有存取的权限。20查看数据库的用户账号利用存储过程EXECsp_helpuser创建数据库的用户账号使用存储过程sp_adduser'登录账号','用户账号','所属的数据库角色'设置数据库用户账号的权限对数据库对象的操作,具体含义如下SELECT:对表或者视图进行查询。INSERT:在表或者视图中插入记录。UPDATE:对表或者视图中的数据进行修改。DELETE:删除表或者视图中的数据。EXEC:执行存储过程。DRI:可对表的外键加以限制,以完成表的参照完整性。3、存取控制SQLServer对权限的管理包含如下三个内容:(1)授予权限:允许用户或角色具有某种操作权。(2)收回权限:删除以前在当前数据库内的用户上授予或拒绝的权限。(3)拒绝权限:拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员继承权限。在SQLServer2012中,权限分为对象权限、语句权限和隐含权限三种。(1)对象权限对象权限是指用户对数据库中的表、视图等对象的操作权,相当于数据操作语言的语句权限。表、视图的权限包括SELECT、INSERT、DELETE、UPDATE。列的权限包括SELECT和UPDATE。存储过程的权限包括EXECUTE。①授权语句:GRANT对象权限名[,…]ON{表名|视图名|存储过程名}TO{数据库用户名|用户角色名}[,…][WITHGRANTOPTION]例如GRANTSELECT,INSERTONCustomerTOuser1WITHGRANTOPTION.该语句把对Customer表的查询权和插入权授予给用户user1,user1同时获得将这些权限转授给别的用户的权限。②收回权限语句:REVOKE对象权限名[,…]ON{表名|视图名|存储过程名}FROM{数据库用户名|用户角色名}[,…][RESTRICT|CASCADE]例如REVOKEINSERTONStudentFROMuser1CASCADE该语句表示从用户user1处收回对Student表的插入权,若user1已把获得的对Student表的插入权转授给其他用户,则连锁收回。③拒绝权限语句:DENY对象权限名[,…]ON{表名|视图名|存储过程名}TO{数据库用户名|用户角色名}[,…]例如DENYUPDATEONCustomerTOuser1该语句表示拒绝用户user1对Customer表进行修改(2)语句权限语句权限是指创建数据库或数据库中的项目的权限,相当于数据定义语言的语句权限。语句权限包括CREATEDATABASE、CREATETABLE、CREATEVIEW、CREATEDEFAULT、CREATERULE、CREATEFUNCTION、CREATEPROCEDURE、BACKUPDATABASE、BACKUPLOG。①授予权限语句:GRANT语句权限名[,…]TO{数据库用户名|用户角色名}[,…]【例6-1】授予用户user1创建数据库表的权限GRANTCREATETABLETOuser1②收回权限语句:REVOKE语句权限名[,…]FROM{数据库用户名|用户角色名}[,…]【例6-2】收回用户user1创建数据库表的权限REVOKECREATETABLEFROMuser1③拒绝权限语句:DENY语句权限名[,…]TO{数据库用户名|用户角色名}[,…]【例6-3】拒绝用户user1创建视图的权限DENYCREATEVIEWTOuser1(3)隐含权限隐含权限是指由SQLServer预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限。隐含权限是由系统预先定义好的,相当于内置权限,不需要再明确地授予这些权限。例如,数据库拥有者自动地拥有对数据库进行一切操作的权限。4、视图通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。【例6-4】用户user1只能检索Customer表中性别为女的客户信息,可以先建立视图CS_Customer,再给user1授予对CS_Customer的查询权。CREATEVIEWCS_CustomerASSELECT*FROMCustomerWHEREcsex='女';GRANTSELECTONCS_CustomerTOuser1;5、数据加密MicrosoftSQLServer的加密机制可以对SQLSercer中存储的登录和应用程序角色密码、作为网络数据包而在客户端和服务器端之间发送的数据、存储过程定义、函数定义、视图定义、触发器定义、默认值定义、规则定义等数据库对象进行加密。6.审计MicrosoftSQLServer2012提供审计功能,用以跟踪和记录每个SQLServer实例上已发生的活动(如成功和失败的记录)。SQLServer2012还提供管理审计记录的