数据库安全保护.ppt
《数据库安全保护.ppt》由会员分享,可在线阅读,更多相关《数据库安全保护.ppt(95页珍藏版)》请在三一办公上搜索。
1、1,第5章 数据库安全保护,2,本章概要,随着计算机的普及,数据库的使用也越来越广泛。例如,一个企业的全部信息,国家机构的事务管理信息,国防情报等机密信息,都集中地存放在数据库中。在前面我们已经讲到,数据库系统中的数据是由DBMS统一进行管理和控制的。为了适应和满足数据共享的环境和要求,DBMS要保证整个系统的正常运转,防止数据意外丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是数据库的安全保护。DBMS对数据库的安全保护功能是通过四方面实现的,即安全性控制、完整性控制、并发性控制和数据库恢复。本章就是从这四方面来介绍数据库的安全保护功能:要求掌握安全性、完整性、并发性和
2、数据库恢复的含义,掌握这四方面分别实现安全保护功能的方法。,3,5.1.1 数据库安全性的含义数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、更改或破坏。安全性问题有许多方面,其中包括:(1)法律、社会和伦理方面,例如请求查询信息的人是不有合法的权力。(2)物理控制方面,例如计算机机房或终端是否应该加锁或用其他方法加以保护。(3)政策方面,确定存取原则,允许哪些用户存取哪些数据。(4)运行方面,使用口令时,如何使口令保持秘密。(5)硬件控制方面,CPU是否提供任何安全性方面的功能,诸如存储保护键或特权工作方式。,5.1 数据库的安全性,4,(6)操作系统安全性方面,在主存储器和数
3、据文件用过以后,操作系统是否把它们的内容清除掉。(7)数据库系统本身安全性方面。这里讨论的是数据库本身的安全性问题,即主要考虑安全保护的策略,尤其是控制访问的策略。5.1.2 安全性控制的一般方法安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。用户非法使用数据库可以有很多种情况。例如,编写合法的程序绕过DBMS授权机制,通过操作系统直接存取、修改或备份有关数据。用户访问非法数据,无论它们是有意的还是无意的,都应该加以严格控制,因此,系统还要考虑数据信息的流动问题并加以控制,否则有隐蔽的危险性。,5,因为数据的流动可能使无权访问的用户获得访问权利。例如,甲用户可以访问文件F1,但无权访问文
4、件F2,如果乙用户把文件F2移至文件F1中之后,则由于乙用户的操作,使甲用户获得了对文件F2的访问权。此外,用户可以多次利用允许的访问结果,经过逻辑推理得到他无权访问的数据。为防止这一点,访问的许可权还要结合过去访问的情况而定。可见安全性的实施是要花费一定代价的,安全保护策略就是要以最小的代价来防止对数据的非法访问,层层设置安全措施。,6,实际上,安全性问题并不是数据库系统所独有的,所有计算机系统中都存在这个问题。在计算机系统中,安全措施是一级一级层层设置的,安全控制模型如图5.1所示。图5.1 安全控制模型,7,根据图5.1的安全模型,当用户进入计算机系统时,系统首先根据输入的用户标识进行身
5、份的鉴定,只有合法的用户才准许进入系统。对已进入系统的用户,DBMS还要进行存取控制,只允许用户进行合法的操作。DBMS是建立在操作系统之上的,安全的操作系统是数据库安全的前提。操作系统应能保证数据库中的数据必须由DBMS访问,而不允许用户越过DBMS,直接通过操作系统访问。数据最后可以通过密码的形式存储到数据库中。,8,5.1.2.1 用户标识和鉴定(Identification and Authentication)数据库系统是不允许一个未经授权的用户对数据库进行操作的。用户标识和鉴定是系统提供的最外层的安全保护措施,其方法是由系统提供一定的方式让用户标识自己的名字或身份,系统内部矛盾记录
6、着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。用户标识和鉴定的方法有多种,为了获得更强的安全性,往往是多种方法并举,常用的方法有以下几种:,9,1用一个用户名或用户标识符来标明用户的身份,系统以此来鉴别用户的合法性。如果正确,则可进入下一步的核实,否则,不能使用计算机。2用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。为了进一步核实用户身份,常采用用户名与口令(Password)相结合的方法,系统通过核对口令判别用户身份的真伪。系统有一张用户口令表,为每个用户保持一个记录,包括用户名和口令两部分数据。用户先输入用户名,然后系统要求用户输
7、入口令。为了保密,用户在终端上输入的口令不显示在屏幕上。系统核对口令以鉴别用户身份。3通过用户名和口令来鉴定用户的方法简单易行,但该方法在使用时,由于用户名和口令的产生和使用比较简单,也容易被窃取,因此还可采用更复杂的方法。,10,例如,每个用户都预先约定好一个过程或者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据计算结果辨别用户身份的合法性。例如,让用户记住一个表达式,如T=X+2Y,系统告诉用户X=1,Y=2,如果用户回答T=5,则证实了该用户的身份。当然,这是一个简单的例子,在实际使用中,还可以设计复杂的表达式,以使安全性更好。系统每次
8、提供不同的X,Y值,其他人可能看到的是X、Y的值,但不能推算出确切的变换公式T。,11,5.1.2.2 用户存取权限控制用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。在数据库系统中,每个用户只能访问他有权存取的数据并执行有权使用的操作。因此,必须预先定义用户的存取权限。对于合法的用户,系统根据其存取权限的定义对其各种操作请求进行控制,确保合法操作。存取权限由两个要素组成,数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。,12,在数据库系统中,定义用户存取权限称为授权(Authorization)。第三章讨论SQL的数据控制
9、功能时,我们已知道授权有两种:系统特权和对象特权。系统特权是由DBA授予某些数据库用户,只有得到系统特权,才能成为数据库用户。对象特权可以由DBA授予,也可以由数据对象的创建者授予,使数据库用户具有对某些数据对象进行某些操作的特权。在系统初始化时,系统中至少有一个具有DBA特权的用户,DBA可以通过GRANT语句将系统特权或对象特权授予其他用户。对于已授权的用户可以通过REVOKE语句收回所授予的特权。,13,这些授权定义经过编译后以一张授权表的形式存放在数据字典中。授权表主要有三个属性,用户标识、数据对象和操作类型。用户标识不但可以是用户个人,也可以是团体、程序和终端。在非关系系统中,存取控
10、制的数据对象仅限于数据本身。而关系系统中,存取控制的数据对象不仅有基本表、属性列等数据本身,还有内模式、外模式、模式等数据字典中的内容。下表列出了关系系统中的存取权限。,14,对于授权表,一个衡量授权机制的重要指标就是授权粒度,即可以定义的数据对象的范围;在关系数据库中,授权粒度包括关系、记录或属性。一般来说,授权定义中粒度越细,授权子系统就越灵活例如,表5.2是一个授权粒度很粗的表,它只能对整个关系授权。如USER1拥有对关系S的一切权限;USER2拥有对关系C的SELECT权和对关系SC的UPDATE权;USER3只可以向关系SC中插入新记录。,15,表5.2 授权表1,16,表5.3是一
11、个授权粒度较为精细,它可以精确到关系的某一属性。USER1拥有对关系S的一切权限;USER2只能查询关系C的CNO属性和修改关系SC的SCORE属性;USER3可以向关系SC中插入新记录。表5.3 授权表2,17,表5.3的授权表中的授权只涉及到数据名(关系、记录或属性的名字),而未提到具体的值。系统不必访问具体的数据本身,就可以执行这种控制。这种控制称为“值独立”的控制。表5.4中的授权表则不但可以对属性列授权,还可以提供与数值有关的授权,即可以对关系中的一组记录授权。比如,USER1只能对计算机系的学生进行操作。对于提供与数据值有关的授权,系统必须能够支持存取谓词的操作。表5.4 授权表3
12、,18,可见授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。但另一方面,如果用户比较多,数据库比较大,授权表将很大,而且每次数据库访问都要用到这张表做授权检查,这将影响数据库的性能。所幸的是,在大部分数据库中,需要保密的数据是少数,对于大部分公开的数据,可以一次性地授权给PUBLIC,而不必再对每个用户个别授权。对于表5.4中与数据值有关的授权,可以通过另外一种数据库安全措施,即定义视图。,19,5.1.2.3 定义视图为不同的用户定义不同的视图,可以限制各个用户的访问范围。通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。例如,U
13、SER1只能对计算机系的学生进行操作,一种方法是通过授权机制对USER1授权,如表5.5所示,另一种简单的方法就是定义一个计算机系的视图。但视图机制的安全保护功能太不精细,往往不能达到应用系统的要求,其主要功能在于提供了数据库的逻辑独立性。在实际应用中,通常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图上面再进一步定义存取权限。,20,5.1.2.4 数据加密(Data Encryption)前面介绍的几种数据库安全措施,都是防止从数据库系统窃取保密数据,不能防止通过不正常渠道非法访问数据,例如,偷取存储数据的磁盘,或在通信线路上窃取数据,为了防止这些窃密活动,
14、比较好的办法是对数据加密。数据加密是防止数据库中数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(术语为明文,Plain text)加密成为不可直接识别的格式(术语为密文,Clipher text),数据以密码的形式存储和传输。,21,加密方法有两种,一种是替换方法,该方法使用密钥(Encryption Key)将明文中的每一个字符转换为密文中的一个字符。另一种是转换方法,该方法将明文中的字符按不同的顺序重新排列。通常将这两种方法结合起来使用,就可以达到相当高的安全程度。例如美国1977年制定的官方加密标准,数据加密标准(Data Encryption Standar
15、d,简称DES)就是使用这种算法的例子。数据加密后,对于不知道解密算法的人,即使利用系统安全措施的漏洞非法访问数据,也只能看到一些无法辨认的二进制代码。合法的用户检索数据时,首先提供密码钥匙,由系统进行译码后,才能得到可识别的数据。,22,目前不少数据库产品提供了数据加密例行程序,用户可根据要求自行进行加密处理,还有一些未提供加密程序的产品也提供了相应的接口,通话用户用其他厂商的加密程序对数据加密。用密码存储数据,在存入时需加密,在查询时需解密,这个过程会占用大量系统资源,降低了数据库的性能。因此数据加密功能通常允许用户自由选择,只对那些保密要求特别高的数据,才值得采用此方法。,23,5.1.
16、2.5 审计(Audit)前面介绍的各种数据库安全性措施,都可将用户操作限制在规定的安全范围内。但实际上任何系统的安全性措施都不是绝对可靠的,窃密者总有办法打破这些控制。对于某些高度敏感的保密数据,必须以审计功作为预防手段。审计功能是一种监视措施,跟踪记录有关数据的访问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在一个特殊文件上中,即审计日志(Audit Log)中。记录的内容一般包括:操作类型,如修改、查询等;操作终端标识与操作者标识;操作日期和时间;,24,操作所涉及到的相关数据,如基本表、视图、记录、属性等;数据的前象和后象。利用这些信息,可以重现导致数据库现有状况的一系列事
17、件,以进一步找出非法存取数据的人、时间和内容等。使用审计功能会大大增加系统的开销,所以DBMS通常将其作为可选特征,提供相应的操作语句可灵活地打开或关闭审计功能。例如,可使用如下SQL语句打开对表S的审计功能,对表S的每次成功的查询、增加、删除、修改操作都作审计追踪:AUDIT SELECT,INSERT,DELETE,UPDATE,ON S WHENEVER SUCCESSFUL要关闭对表S的审计功能可以使用如下语句:NO AUDIT ALL ON S。,25,5.2.1 数据库完整性的含义数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。有关
18、完整性的含义在第一章中已作简要介绍。比如年龄属于数值型数据,只能含0,1,9,不能含字母或特殊符号;月份只能用112之间的正整数表示;表示同一事实的两个数据应相同,否则就不相容,如一个人不能有两个学号。显然,维护数据库的完整性非常重要,数据库中的数据是否具备完整性关系到数据能否真实地反映现实世界。,5.2 完整性控制,26,数据库的完整性和安全性是数据库保护的两个不同的方面。安全性是保护数据库,以防止非法使用所造成数据的泄露、更改或破坏,安全性措施的防范对象是非法用户和非法操作;完整性是防止合法用户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对象是不合语义的数据。但从数据库的安
19、全保护角度来讲,安全性和完整性又是密切相关的。,27,5.2.2 完整性规则的组成为了实现完整性控制,数据库管理员应向DBMS提出一组完整性规则,来检查数据库中的数据,看其是否满足语义约束。这些语义约束构成了数据库的完整性规则,这组规则作为DBMS控制数据完整性的依据。它定义了何时检查、检查什么、查出错误又怎样处理等事项。具体地说,完整性规则主要由以下三部分构成:1 触发条件:规定系统什么时候使用规则检查数据;2 约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件;3 违约响应:规定系统如果发现用户的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时
20、要做的事情。,28,完整性规则从执行时间上可分为立即执行约束(Immediate Constraints)和延迟执行约束(Deferred Constrainsts)。立即执行约束是指在执行用户事务过程中,某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查。延迟执行约束是指在整个事务执行结束后,再对约束条件进行完整性检查,结果正确后才能提交。某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查。,29,例如,银行数据库中“借贷总金额应平衡”的约束就应该属于延迟执行约束,从账号A转一笔钱到账号B为一个事务,从账号A转出去钱后,账就不平了,必须等转入账号B后,账才能重新平衡,这时
21、才能进行完整性检查。如果发现用户操作请求违背了立即执行约束,则可以拒绝该操作,以保护数据的完整性。如果发现用户操作请求违背了延迟执行约束,而又不知道是哪个事务的操作破坏了完整性,则只能拒绝整个事务,把数据库恢复到该事务执行前的状态。一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示。其中:D(data):代表约束作用的数据对象;O(operation):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则;,30,A(assertion):代表数据对象必须满足的语义约束,这是规则的主体;C(condition):代表选择A作用的数据对象值的谓词;P(p
22、rocdure):代表违反完整性规则时触发执行的操作过程。例如,对于“学号不能为空”的这条完整性约束,D:代表约束作用的数据对象为SNO属性;O(operation):当用户插入或修改数据时需要检查该完整性规则;A(assertion):SNO不能为空;C(condition):A可作用于所有记录的SNO属性;P(procdure):拒绝执行用户请求。,31,关系模型的完整性包括实体完整性,参照完整性和用户定义完整性。对于违反实体完整性和用户定义完整性规则的操作一般都是采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单的拒绝执行,一般在接受这个操作的同时,执行一些附加的操作,
23、以保证数据库的状态仍然是正确的。例如在删除被参照关系中的元组时,应该将参照关系中所有的外码值与被参照关系中要删除元组主码值相对应的元组一起删除。比如,要删除S关系中SNO=S1的元组,而SC关系中又有两个SNO=S1的元组。这时根据应用环境的语义,因为当一个学生毕业或退学后,他的个人记录从S关系中删除,选课记录也应随之从SC表中删除,所以应该将SC关系中两个SNO=S1的元组一起删除。,32,这些完整性规则都由DBMS提供的语句进行描述,经过编译后存放在数据字典中。一旦进入系统,就开始执行该组规则。其主要优点是违约由系统来处理,而不是由用户处理。另外,规则集中在数据字典中,而不是散布在各应用程
24、序之中,易于从整体上理解和修改,效率较高。数据库系统的整个完整性控制都是围绕着完整性约束条件进行的,从这个角度来看,完整性约束条件是完整性控制机制的核心。,33,5.2.3 完整性约束条件的分类5.2.3.1 从约束条件使用的对象分为值的约束和结构的约束1值的约束:即对数据类型、数据格式、取值范围等进行规定。(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。例如,规定学生姓名的数据类型应为字符型,长度为8。(2)对数据格式的约束。例如,规定出生日期的数据格式为YY.MM.DD。(3)对取值范围的约束。例如,月份的取值范围为112,日期131。(4)对空值的约束。空值表示未定义或未知的
25、值,它与零值和空格不同。有的列值允许空值,有的则不允许。例如,学号和课程号不可以为空值,但成绩可以为空值。,34,2结构约束:即对数据之间联系的约束。数据库中同一关系的不同属性之间,应满足一定的约束条件,同时,不同关系的属性之间也有联系,也应满足一定的约束条件。常见的结构约束有如下四种:(1)函数依赖约束:说明了同一关系中不同属性之间应满足的约束条件。如:2NF,3NF,BCNF这些不同的范式应满足不同的约束条件。大部分函数依赖约束都是隐含在关系模式结构中的,特别是对于规范化程度较高的关系模式,都是由模式来保持函数依赖的。,35,(2)实体完整性约束:说明了关系键的属性列必须唯一,其值不能为空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 安全 保护
链接地址:https://www.31ppt.com/p-5270370.html