数据库第16讲数据库保护.ppt
《数据库第16讲数据库保护.ppt》由会员分享,可在线阅读,更多相关《数据库第16讲数据库保护.ppt(43页珍藏版)》请在装配图网上搜索。
1,第16讲数据库保护,教学目标:使学生了解和掌握数据库的安全和完整控制的重要性和和可行性教学内容:安全性控制的一般方法、完整性约束条件和控制机制教学重点:存取控制动态完整性约束参照完整性条件教学难点:动态完整性约束参照完整性条件教学方法:多媒体演示举例法教学时间:2学时教学过程:,2,随着社会信息化的不断深化,各种数据库的使用也越来越广泛。例如,一个企业管理信息系统的全部数据、国家机构的事务管理信息、国防情报机密信息、基于WEB动态发布的网上购物信息等等,它们都集中或分布地存放在大大小小的数据库中。我们知道数据库系统中的数据是由DBMS统一进行管理和控制的。为了适应和满足数据共享的环境和要求,DBMS要保证数据库及整个系统的正常运转,防止数据意外丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是数据库的安全保护。DBMS对数据库的安全保护功能是通过四方面来实现的,即安全性控制、完整性控制、并发性控制和数据库恢复。,3,数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、更改或破坏。安全性问题有许多方面,其中包括:(1)法律、社会和伦理方面,例如请求查询信息的人是不有合法的权力;(2)物理控制方面,例如计算机机房或终端是否应该加锁或用其他方法加以保护;(3)政策方面,确定存取原则,允许哪些用户存取哪些数据;(4)运行与技术方面,使用口令时,如何使口令保持秘密;,4,(5)硬件控制方面,CPU是否提供任何安全性方面的功能,诸如存储保护键或特权工作方式;(6)操作系统安全性方面,在主存储器和数据文件用过以后,操作系统是否把它们的内容清除掉;(7)数据库系统本身安全性方面。,5,16.1.2安全性控制的一般方法,安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。用户非法使用数据库可以有很多种情况。例如,编写合法的程序绕过DBMS授权机制,通过操作系统直接存取、修改或备份有关数据。用户访问非法数据,无论它们是有意的还是无意的,都应该加以严格控制,因此,系统还要考虑数据信息的流动问题并加以控制,否则有潜在的危险性。因为数据的流动可能使无权访问的用户获得访问权利。,6,例如,甲用户可以访问表T1,但无权访问表T2,如果乙用户把表T2的所有记录添加到表T1中之后,则由于乙用户的操作,使甲用户获得了对表T2中记录的访问。此外,用户可以多次利用允许的访问结果,经过逻辑推理得到他无权访问的数据。为防止这一点,访问的许可权还要结合过去访问的情况而定。可见安全性的实施是要花费一定代价,并需缜密考虑的。安全保护策略就是要以最小的代价来最大程度防止对数据的非法访问,通常需要层层设置安全措施。实际上,数据库系统的安全性问题,类似于整个计算机系统一级级层层设置安全的情况,其安全控制模型一般如图16.1所示。,16.1.2安全性控制的一般方法,7,16.1.2安全性控制的一般方法,根据图16.1的安全模型,当用户进入计算机系统时,系统首先根据输入的用户标识进行身份的鉴定,只有合法的用户才准许进入系统。对已进入系统的用户,DBMS还要进行存取控制,只允许用户进行合法的操作,8,DBMS是建立在操作系统之上的,安全的操作系统是数据库安全的前提。操作系统应能保证数据库中的数据必须由DBMS访问,而不允许用户越过DBMS,直接通过操作系统或其它方式访问。数据最后可以通过密码的形式存储到数据库中。能做到非法者即使得到了加密数据,也无法识别它的安全效果。下面,本书就同数据库有关的用户标识和鉴定、存取控制、定义视图、数据加密和审计等几类安全性措施作一讨论。,16.1.2安全性控制的一般方法,9,1、用户标识和鉴别用户标识和鉴定是系统提供的最外层的安全保护措施,其方法是由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。用户标识和鉴定的方法有:(1)单用户名鉴别法:用一个用户名或用户标识符来标明用户的身份,系统以此来鉴别用户的合法性.,16.1.2安全性控制的一般方法,10,16.1.2安全性控制的一般方法,(2)用户名与口令联合鉴别法:用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。(3)透明公式鉴别法:每个用户都预先约定好一个过程或者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据计算结果辨别用户身份的合法性。,11,2、用户存取权限控制用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。存取权限由两个要素组成,数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义用户存取权限称为授权.授权有两种:(1)系统权限:由DBA授予某些数据库用户,只有得到系统权限,才能成为数据库用户.,12,16.1.2安全性控制的一般方法,(2)对象权限:可以由DBA授予,也可以由数据对象的创建者授予,使数据库用户具有对某些数据对象进行某些操作的权限.这些授权定义经过编译后以一张授权表的形式存放在数据字典中。授权表主要有三个属性,用户标识、数据对象和操作类型。,13,16.1.2安全性控制的一般方法,3、视图机制为不同的用户定义不同的视图,可以限制各个用户的访问范围。通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。4、数据加密数据加密是防止数据库中数据在存储和传输中失密的有效手段.加密的基本思想是根据一定的算法将原始数据加密成为不可直接识别的格式,数据以密码的形式存储和传输.,14,16.1.2安全性控制的一般方法,加密方法有两种:(1)替换方法:该方法使用密钥将明文中的每一个字符转换为密文中的一个字符.(2)转换方法:该方法将明文中的字符按不同的顺序重新排列.用密码存储数据,在存入时需加密,在查询时需解密,这个过程会占用较多的系统资源,降低了数据库的性能。5、审计实际上任何系统的安全性措施都不是绝对可靠的,窃密者总有办法打破这些控制.审计功能是一种监视措施,跟踪记录有关数据的访问活动.,15,16.1.3安全性控制的其它方法,1、强制存取控制(MAC)有些数据库系统的数据要求很高的保密性,通常具有静态的严格的分层结构,强制存取控制能实现这种高保密性要求.这种方法的基本思想在于每个数据对象(文件、记录记录或宇段等)赋予一定的密级,级别从高到低有:绝密级、机密级、秘密级和公用级.每个用户也具有相应的级别,称为许可证级别.在系统运行时,采用如下两条简单规则:(1)用户U只能查看比它级别低或同级的数据.(2)用户U只能修改和它同级的数据.强制存取控制是一种独立于值的控制方法.它的优点是系统能执行“信息流控制”.,16,2、统计数据库的安全性查询仅仅是某些记录的统计值,例如求记录数、和、平均值等。在统计数据库中,虽然不允许用户查询单个记录的信息,但是用户可以通过处理足够多的汇总信息来分析出单个记录的信息.在统计数据库中,对查询应作下列限制:一个查询查到的记录个数至少是n;两个查询查到的记录的“交”数目至多是m.保证数据库安全性的另一个方法是“数据污染”,也就是在回答查询时,提供一些偏离正确值的数据,以免数据泄露.,17,16.1.4SQLServer2000安全性概述,SQLServer2000安全系统的构架建立在用户和用户组的基础上.SQLServer提供了3种安全管理模式,即标准模式、集成模式和混合模式,数据库设计者和数据库管理员可以根据实际情况进行选择.1、两个安全性阶段:身份验证和授权.2、用户权限:登录创建在Windows中,而非SQLServer中.,18,16.1.4SQLServer2000安全性概述,当用户连接到SQLServer2000实例后,他们可以执行的活动由授予以下帐户的权限确定:(1)用户的安全帐户;(2)用户的安全帐户所属Windows组或角色层次结;(3)用户若要进行任何涉及更改数据库定义或访问数据的活动,则必须有相应的权限.,19,16.1.4SQLServer2000安全性概述,3、视图安全机制SQLServer2000通过限制可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。4、加密方法SQLServer2000支持加密或可以加密的内容为:SQLServer中存储的登录和应用程序角色密码;作为网络数据包而在客户端和服务器端之间发送的数据;SQLServer2000中如下对象的定义内容:存储过程、用户定义函数、视图、触发器、默认值、规则等。,20,16.1.4SQLServer2000安全性概述,5、审核活动SQLServer2000提供审核功能,用以跟踪和记录每个SQLServer实例上已发生的活动(如成功和失败的记录)。SQLServer2000还提供管理审核记录的接口,即SQL事件探查器。只有sysadmin固定安全角色的成员才能启用或修改审核,而且审核的每次修改都是可审核的事件。,21,16.2.1数据库完整性概述,数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。显然,维护数据库的完整性非常重要,数据库中的数据是否具备完整性关系到数据能否真实地反映现实世界。数据库的完整性和安全性是数据库保护的两个不同的方面。安全性是保护数据库,以防止非法使用所造成数据的泄露、更改或破坏,安全性措施的防范对象是非法用户和非法操作;完整性是防止合法用户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对象是不合语义的数据。,22,16.2.2完整性规则的组成,完整性规则主要由以下三部分构成:(1)触发条件:规定系统什么时候使用规则检查数据;(2)约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件;(3)违约响应:规定系统如果发现用户的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。完整性规则从执行时间上可分为立即执行约束(ImmediateConstraints)和延迟执行约束(DeferredConstraints)。立即执行约束是指在执行用户事务过程中,某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查;延迟执行约束是指在整个事务执行结束后,再对约束条件进行完整性检查,结果正确后才能提交。,23,16.2.2完整性规则的组成,一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示。其中:D(data):代表约束作用的数据对象;O(operation):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则;A(assertion):代表数据对象必须满足的语义约束,这是规则的主体;C(condition):代表选择A作用的数据对象值的谓词;P(procedure):代表违反完整性规则时触发执行的操作过程。,24,16.2.2完整性规则的组成,例如,对于“学号不能为空”的这条完整性约束,D:代表约束作用的数据对象为SNO属性;O(operation):当用户插入或修改数据时需要检查该完整性规则;A(assertion):SNO不能为空;C(condition):A可作用于所有记录的SNO属性;P(procedure):拒绝执行用户请求。,25,16.2.3完整性约束条件的分类,在数据库领域中,有四种最常用的数据模型,它们是:被称为非关系模型的层次模型、网状模型、关系模型和面向对象模型。本章简要介绍层次模型、网状模型、关系模型。层次模型是数据库系统中最早出现的数据模型,它用树形结构表示各类实体以及实体间的联系。层次模型数据库系统的典型代表是IBM公司的IMS(InformationManagementSystems)数据库管理系统,这是一个曾经广泛使用的数据库管理系统。现实世界中有一些的实体之间的联系本来就呈现出一种很自然的层次关系,如家庭关系,行政关系。,26,16.2.3完整性约束条件的分类,1、值的约束和结构的约束从约束条件使用的对象来分,可把约束分为值的约束和结构的约束。值的约束:即对数据类型、数据格式、取值范围等进行规定。(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。例如,规定学生性别的数据类型应为字符型,长度为2。(2)对数据格式的约束。例如,规定出生日期的数据格式为YYYY.MM.DD。(3)对取值范围的约束。例如,月份的取值范围为112,日期131。,27,16.2.3完整性约束条件的分类,(4)对空值的约束。空值表示未定义或未知的值,它与零值和空格不同。有的列值允许空值,有的则不允许。例如,学号和课程号不可以为空值,但成绩可以为空值。结构约束:即对数据之间联系的约束。数据库中同一关系的不同属性之间,应满足一定的约束条件,同时,不同关系的属性之间也有联系,也应满足一定的约束条件。,28,16.2.3完整性约束条件的分类,常见的结构约束有如下四种:(1)函数依赖约束:说明了同一关系中不同属性之间应满足的约束条件。如:2NF,3NF,BCNF这些不同的范式应满足不同的约束条件。大部分函数依赖约束都是隐含在关系模式结构中的,特别是对于规范化程度较高的关系模式,都是由模式来保持函数依赖的。(2)实体完整性约束:说明了关系主键(或主码)的属性列必须唯一,其值不能为全空或部分为空。(3)参照完整性约束:说明了不同关系的属性之间的约束条件,即外部键(外码)的值应能够在被参照关系的主键值中找到或取空值。,29,16.2.3完整性约束条件的分类,(4)用户自定义完整性:从实际应用系统出发,按需定义属性之间要满足的约束条件。(5)统计约束,规定某个属性值与关系多个元组的统计值之间必须满足某种约束条件。例如,规定系主任的奖金不得高于该系的平均奖金的50%,不得低于该系的平均奖金的15%。这里该系平均奖金的值就是一个统计计算值。其中,实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,被称为关系的两个不变性。而统计约束实现起来开销很大。,30,16.2.3完整性约束条件的分类,2、静态约束和动态约束完整性约束从约束对象的状态可分为静态约束和动态约束。静态约束静态约束是指在数据库每一个确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。上面介绍的值的约束和结构的约束均属于静态约束。动态约束动态约束是指数据库从一种状态转变为另一种状态时(数据库数据变动前后),新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。,31,16.2.4SQLServer2000完整性概述,SQLServer2000中数据完整性可分为四种类型:实体完整性、域完整性、引用完整性、用户定义完整性。另外,触发器、存储过程等也能以一定方式控制数据完整性。1、实体完整性实体完整性将行定义为特定表的唯一实体。SQLServer2000支持如下实体完整性相关的约束:(1)PRIMARYKEY约束:在一个表中不能有两行包含相同的主键值,不能在主键内的任何列中输入NULL值。(2)UNIQUE约束:UNIQUE约束在列集内强制执行值的唯一性,对于UNIQUE约束中的列,表中不允许有两行包含相同的非空值。,32,(3)IDENTITY属性:IDENTITY属性能自动产生唯一标识值,指定为IDENTITY的列一般作为主键。2、域完整性:是指给定列的输入正确性与有效性。SQLServer2000中强制域有效性的方法有:限制类型,如通过数据类型、用户自定义数据类型等实现;格式限制,如通过CHECK约束和规则等实现;列值的范围限定,如通过PRIMARYKEY约束、UNIQUE约束、FOREIGNKEY约束、CHECK约束、DEFAULT定义、NOTNULL定义等实现。,33,3、引用完整性(即参照完整性)SQLServer2000引用完整性主要由FOREIGNKEY约束体现,它标识表之间的关系,一个表的外键指向另一个表的候选键或唯一键。强制引用完整性时,SQLServer禁止用户进行下列操作:(1)当主表中没有关联的记录时,将记录添加到相关表中。(2)更改主表中的值并导致相关表中的记录孤立。,34,(3)从主表中删除记录,但仍存在与该记录匹配的相关记录。在DELETE或UPDATE所产生的所有级联引用操作的诸表中,每个表只能出现一次。多个级联操作中只要有一个表因完整性原因操作失败,整个操纵将失败而回滚。4、用户定义完整性SQLServer2000用户定义完整性主要由Check约束所定义的列级或表级约束体现,用户定义完整性还能由规则、触发器、客户端或服务器端应用程序灵活定义。,35,5、触发器SQLServer2000触发器是一类特殊的存储过程,被定义为在对表或视图发出UPDATE、INSERT或DELETE语句时自动执行。触发器可以扩展SQLServer约束、默认值和规则的完整性检查逻辑,一个表可以有多个触发器。6、其它机制SQLServer2000支持存储过程中制定约束规则,SQLServer2000的并发控制机制能保障多用户存取数据时的完整性。,36,16.3.1数据库并发性概述,每个用户在存取数据库中的数据时,可能是串行执行,即每个时刻只有一个用户程序运行,也可能是多个用户并行地存取数据库。数据库的最大特点之一就是数据资源是共享的,串行执行意味着一个用户在运行程序时,其他用户程序必须等到这个用户程序结束才能对数据库进行存取,这样数据库系统的利用率会极低。数据库的并发控制机制能解决这类问题,以保持数据库中数据的在多用户并发操作时的一致性、正确性。,37,16.3.2事务的基本概念,1、事务(Transaction)的定义事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列组成。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS按照缺省规定自动划分事务。,38,16.3.2事务的基本概念,在SQL语言中,定义事务的语句有三条:(1)BEGINTRANSACTION表示事务的开始;(2)COMMIT表示事务的提交,即将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,此时事务正常结束;(3)ROLLBACK表示事务的回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,再回滚到事务开始时的状态。,39,16.3.2事务的基本概念,2、事务的特征事务是由有限的数据库操作序列组成,但并不是任意的数据库操作序列都能成为事务,为了保护数据的完整性,一般要求事务具有以下四个特征:(1)原子性(Atomic):一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(nothingorall)的原则,即不允许事务部分的完成。即使因为故障而使事务未能完成,它执行的部分操作要被取消。(2)一致性(Consistency):事务对数据库的操作使数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指事务操作后数据库中的数据要满足各种完整性约束要求。,40,16.3.2事务的基本概念,例如,银行企业中,“从帐号A转移资金额M到帐号B”是一个典型的事务,这个事务包括两个操作,从帐号A中减去资金额M和在帐号B中增加资金额M,如果只执行其中一个操作,则数据库处于不一致状态,帐务会出现问题。也就是说,两个操作要么全做,要么全不做,否则就不能成为事务。可见事务的一致性与原子性是密切相关的。3、隔离性(Isolation):如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的。并发控制就是为了保证事务间的隔离性。,41,16.3.2事务的基本概念,4、持久性(Durability):指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。事务上述四个性质的英文术语的第一个字母分别为A、C、I、D。因此,这四个性质也称为事务的ACID准则。,42,16.3.2事务的基本概念,BEGINTRANSACTIONREADAAA-MIFA0/*A款不足*/THENBEGINDISPLAY“A款不足”ROLLBACK,ENDELSE/*拨款*/BEGINBB+MDISPLAY“拨款完成”COMMITEND,下面是一个事务的例子,从帐号A转移资金额R到帐号B:,43,这是对一个简单事务的完整的描述。该事务有两个出口:当A帐号的款项不足时,事务以ROLLBACK(撤销)命令结束,即撤销该事务的影响;另一个出口是以COMMIT(提交)命令结束,完成从帐号A到帐号B的拨款。在COMMIT之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。只有在COMMIT之后,事务对数据库所产生的变化才对其他事务开放,这就可以避免其他事务访问不一致或不存在的数据。,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 16 保护
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文