数据库的安全保护.ppt_第1页
数据库的安全保护.ppt_第2页
数据库的安全保护.ppt_第3页
数据库的安全保护.ppt_第4页
数据库的安全保护.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/9/16,第7章 数据库的安全保护,7.1 数据库的安全性及SQL Server的安全保护技术,用户标识和鉴别 存取控制 操作系统安全保护 密码存储,数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。,7.1.1 数据库安全性控制的一般方法,图1 数据库系统的安全模型,1. 用户标识与鉴别,(1) 用输入用户名(用户标识号)来标明用户身份。 系统内部记录着所有合法用户的标识。系统对输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。 (2) 通过回答口令标识用户身份。 系统常常要求用户输入口令,只有口令正确才能进入系统。为保密起见,口令由用户自己定义并可以随时变更。为防止口令被人窃取,用户在终端上输入口令时,不把口令的内容显示在屏幕上,而用字符“*”替代其内容。 (3) 通过回答对随机数的运算结果表明用户身份。 系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输给到计算机。系统根据用户计算结果判定用户是否合法。,2. 存取控制,授权定义 具有授权资格的用户,如数据库管理员DBA或建表户DBO,通过数据控制语言DCL,将授权决定告知数据库管理系统。,(1)数据库系统通过以下3步来实现数据控制:,存权处理 数据库管理系统DBMS把授权的结果编译后存入数据字典中。,查权操作 当用户提出操作请求时,系统要在数据字典中查找该用户的数据操作权限,当用户拥有该操作权时才能执行其操作,否则系统将拒绝其操作。,(2)关系中的用户权限 用户权限主要包括数据对象和操作类型两个要素。通过授权规定用户可以对哪些数据对象进行哪些类型的操作。,(3) SQL的数据控制功能 SQL的数据控制功能为GRANT语句(授权)和REVOKE语句(收权)。,系统特权:GRANT CREATE DATABASE,BACKUP DATABASE TO 王平 对象特权:GRANT select,update(s#) on s to 王平,(4) 授权机制 授权粒度:用户权限定义中数据对象范围。 在关系数据库中,授权粒度包括关系、记录或属性。 授权粒度越细,授权子系统就越灵活,但系统定义与检查权限的开销也会相应地增大。,DBA不需要进行授权就可进行数据库内的任何操作。 数据对象的创建者(dbo)自动获得对于该数据对象的所有操作权限。 获得数据操作权的用户可以通过GRANT语句把权限转授给其他用户。,SQL SERVER中系统特权适用的语句和权限说明,对象特权:类似于数据库操作语言DML的语句权限,它指用户对数据库中的表、视图、存储过程等对象的操作权限。,3. 视图,视图:为不同的用户定义不同的视图,通过视图把数据对象限制在一定范围内,把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。,4、审计,审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志中。 一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。,加密是根据一定的算法将原始数据(明文,Plain text)变换为不可直接识别的格式(密文,Cipher text),从而使得不知道解密算法的人无法获得数据的内容。 加密方法主要有两种: 替换方法。使用密钥将明文中的每一个字符转换为密文中的字符。 置换方法。仅将明文的字符按不同的顺序重新排列。,5、数据加密机制,7.1.2 SQL Server的安全体系结构和安全认证模式,1. SQL Server的安全体系结构 (1) 操作系统的安全防线:网络管理员负责建立用户组,设置帐号并注册,决定不同的用户对不同系统资源的访问级别。 (2) SQL Server的运行安全防线: 通过另一种帐号设置来创建附加安全层。 (3) SQL Server数据库的安全防线: 特定数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。 (4) SQL Server数据库对象的安全防线: 对权限进行管理,TSQL的DCL功能保证合法用户既使进入了数据库也不能有超越权限的数据存取操作。,2. SQL Server的安全认证模式,(1) Windows(S)安全认证模式 SQL服务器通过使用Windows网络用户的安全性来控制用户对SQL服务器的登录访问。它允许一个网络用户登录到一个SQL服务器上时不必再提供一个单独的登录帐号及口令,从而实现SQL服务器与Windows(S)登录的安全集成。 (2) 混合安全认证模式 使用Windows(S)安全认证模式或SQL Server安全认证模式。SQL Server安全认证模式要求用户必须输入有效的SQL Server登录帐号及口令。 在混合安全模式下, 可以使用Windows网络服务器的用户账号或SQL Server自身验证身份的登录帐号,两者均有效。,2. 数据库用户的管理,(1) dbo用户 dbo用户即数据库拥有者或数据库创建者,dbo在其所拥有的数据库中拥有所有的操作权限。dbo的身份可被重新分配给另一个用户,系统管理员Sa可以作为他所管理系统的任何数据库的dbo用户。 (2) guest用户 如果guest用户在数据库存在,则允许任意一个登录用户作为guest用户访问数据库,其中包括那些不是数据库用户的SQL服务器用户。 除系统数据库master和临时数据库tempdb的guest用户不能被删除外,其他数据库都可以将自己guest用户删除,以防止非数据库用户的登录用户对数据库进行访问。,7.2.1 完整性约束条件及完整性控制,7.2 数据库完整性及SQL Server的完整性控制,根据约束条件针对的数据库对象不同,可以分为: 表级约束,若干元组间、关系中以及关系之间联系的约束; 元组级约束,元组中各个字段间联系的约束; 属性级约束,针对列的类型、取值范围、精度、排序等而制定的约束条件。,数据库的完整性:指数据的正确性和相容性。 完整性检查:系统用一定的机制来检查数据库中的数据是否满足规定的条件(完整性约束条件),这些完整性约束条件将作为模式的一部分存入数据库中。,1、静态约束,数据库每一确定状态时的数据对象所应满足的约束条件; (1)对数据类型的约束。包括数据类型、长度、精度等。 (2)对数据格式的约束:如规定学号的前两位表示入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。 (3)对取值范围的约束:如学生的成绩取使范围为0一100。大学生的年龄为大于14等。 (4)对空值的约束: (5)静态元组级约束: 是元组中各个字段之间联系的约束 。如:开始日期小于结束日期,发货数量小于等于订货数量等,职工的最低工资不能低于规定的最低值等。 (6)静态表级约束:指若干元组之间、关系之间联系的约束。,约束条件所涉及对象的状态不同,完整性约束可分为:,数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。 如:将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。 又:职工的工龄只能增加,职工工资在更改时,规定新值不得少于旧值。,2、动态约束:,7.2.2 DBMS的完整性控制功能,定义功能,提供定义完整性约束条件的机制。 2) 检查功能,检查用户发出的操作请求,看其是否违背了完整性约束条件。 3) 控制功能,监视数据操作的整个过程,如果发现有违背了完整性约束条件的情况,则采取一定的动作来保证数据的完整性。,7.2.3 SQL Server数据完整性实现方法,1. SQL Server的数据完整性的种类 实体完整性。 实体完整性为表级完整性,它要求表中所有的元组都应该有一个惟一的标识符(主码)。 (2) 参照完整性。 参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。 如:在SC表中,有学号为98001的选课记录,则S表中不允许删除该学生的记录。 (3) 域完整性。 域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。,2. SQL Server实现数据完整性的两种方式,(1) 声明数据完整性。 通过在定义表时声明数据完整性。包括各种约束、缺省和规则。,(2) 过程数据完整性。 编写触发器和存储过程来实现。,7.3 数据库的并发控制,事务是用户定义的一个数据库操作序列,是一个完整的工作单元。 一个事务可以是一条或一组SQL语句、或整个应用程序。,数据库是可供多个用户共享的信息资源,允许多个用户同时使用的数据库系统为多用户数据库系统。 数据库的并发控制就是控制数据库,防止多用户并发存取同一数据时造成的数据错误,保证数据库的一致性。,7.3.1 事务及并发控制的基本概念 1. 事务的概念,事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行,是不可分割的工作单位。,例1:一个交付业务活动:账户A支付给账户B若干元钱(假设为N元)。这个支付操作包含两个动作: 第一个:账户A一N 第二个:账户B十N,账户A支付给账户B若干元钱(假设为N元),如果在第一个动作完成之后,在第二个动作还没有完成时,系统突然停电了,那么这个支付活动实际上是不成功的。这时正确状态应该是能够撤消掉第个动作,即回到交付活动开始前的状态。 (事务是由系统自动维护的。),BEGIN TRANSACTION:表示事务的开始。 COMMIT:表示事务的提交,即将事务中所有对数据的更新写回到磁盘上的物理数据库中。 ROLLBACK:表示事务的回滚,即事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。,在SQL语言中,定义事务的语句有三条:,事务的特性,当事务进行到中间出现异常时,系统会自动地撤消事务中已完成的部分,从而保证数据库中的数据总是处于正确的状态。 事务作为一个完整的操作单元,具有如下特性:,1原子性:事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。 2一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 3隔离性:一个事务的执行不能受其他事务的干扰。在多用户的并发情况下,保证数据库中的数据总是正确的。 4永久性:事务一旦结束,则其对数据库中数据的影响就是永久的。,例如用事务完成如下操作:在S表中添加一条学生记录,然后将这个学生的修课情况插入到SC表中。,BEGIN TRANSACTION insert into s(s#,sn,sex) values(983103,吴天玲,女) insert into sc(s#,c#,score) values(983103,A001,null) COMMIT,执行完此事务后查看一下s表和sc表中的数据,我们发现新插入的数据均在数据库中。 如果我们将此事务最后的COMMIT改为ROLLBACK,s表和sc表中的数据有什么变化?,2. 事务并发操作可能产生的数据不一致性,(1)丢失更新,当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。,(2)脏读,事务T2读取了T1更新后的数据,其后T1由于某种原因撤消修改,数据R恢复原值,导致T2得到的数据与数据库的内容不一致。,(3)不可重读,同一数据库中往往有多个事务并发执行,如果不进行并发控制,就会产生不一致性。,事务T1读取数据R后,T2读取并且更新了R,当T1再次读取R时,得到的两次读取值不一致,这种现象为不可重读。,7.3.2 封锁及封锁协议,一个环节是申请加锁,即事务在操作前要对它将使用的数据提出加锁请求; 第二个环节是获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权; 第三个环节是释放锁,即完成操作后事务放弃数据的控制权。,封锁是使事务对它要操作的数据有一定的控制能力。封锁具有3个环节:,并发控制:就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。并发控制的主要方法是采用封锁机制(Locking)。,1. 锁的类型,(1) 排它锁(Exclusive Locks,简称X锁)。 排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。 (2) 共享锁(Share Locks,简称S锁)。 共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。,2. 封锁协议,(1)一级封锁协议。 事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。 (2) 二级封锁协议。 事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。 (3) 三级封锁协议。 事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。,在对数据对象加锁时,还需要约定一些规则,如何时申请X锁或S锁、持锁时间、何时释放等。,事务并发操作可能产生的数据不一致问题,T1,(a)丢失数据 (b)不可重复读 (c)读“脏”数据,(a) 没有丢失修改 (b) 可重复读 (c) 不读“脏”数据,用封锁机制解决三种数据不一致性的例子,7.3.3 封锁出现的问题及解决方法,活锁和死锁 活锁。 如:事务T1封锁了数据R,T2事务又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的锁后,系统又批准了T4的请求, T2可能永远等待。 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。 解决方法:采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。,(2) 死锁 如果事务T1和T2都需要数据R1和R2, T1封锁了数据R1,T2封锁了数据R2;然后T1又请求封锁R2, T2请求封锁R1,事务T1、T2都等待对方释放R1或R2上的锁,但由于T1、T2都没有获得必要的数据,所以它们不会结束,只能继续等待。 多事务交错等待的僵持局面称为死锁。 解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定手段定期诊断系统中有无死锁,若有则解除之。(撤消事务) 预防死锁的方法: 1) 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。 2) 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。,7.4 数据库恢复技术 7.4.1 故障的种类,1. 事务内部的故障 事务未运行到正常终止点前被终止的情况。 事务内部的故障有的是可以通过事务程序本身发现的,但是更多的则是非预期的,它们不能由事务处理程序处理。例如运算溢出、并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。 2. 系统故障 系统故障是指造成系统停止运转的任何事件,从而使得系统必须重新启动。 3. 介质故障 介质故障指外存故障,例如磁盘损坏、磁头碰撞,瞬时磁场干扰等。,4. 计算机病毒 计算机病毒是一种人为的故障或破坏。 5. 用户操作错误 由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。,7.4.2 数据库恢复策略,1、事务故障的恢复 利用日志文件撤消(undo)此事务数据库进行的修改。事务故障的恢复一般是由系统自动完成的。,2、系统故障的恢复 系统故障的恢复也是利用日志文件:撤消(undo)未完成的事务和重做(REDO)已完成的事务。系统故障的恢复是由系统在重新启动时自动完成的。,3、介质故障的恢复 重装数据库的后备副本,并重做已完成的事务。,7.4.3 数据恢复的实现技术,1. 数据转储 是数据库恢复中采用的基本技术,即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这种备用的数据文本称为后备副本。 数据转储有以下几类: (1) 静态转储和动态转储 数据库转储过程中,是否允许其他事务对数据库进行存取或修改操作。 静态转储优点:能得到数据一致性的副本。缺点:降低了数据库的可用性。 动态转储优点:不影响事务的运行,但副本上的数据可能是过时的数据。,(2) 海量转储和增量转储。,海量转储是每次转储全部数据库。(对数据量大和更新频率高的数据库,不适合频繁地进行。) 增量转储是每次只转储上一次更新过的数据。(适合对数据量较大,且事务处理频繁地DBS。),2. 登记日志文件(Logging) 日志文件是用来记录对数据库的更新操作的文件。 (1) 日志文件的作用。 日志文件的主要用于数据库恢复。 当数据库文件毁坏后,可重新装入后援副本把数据库恢复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论