教学第7章数据库的安全保护课件_第1页
教学第7章数据库的安全保护课件_第2页
教学第7章数据库的安全保护课件_第3页
教学第7章数据库的安全保护课件_第4页
教学第7章数据库的安全保护课件_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

第7章数据库的安全保护第7章数据库的安全保护17.1数据库的安全性及SQLServer的安全保护技术用户DBMSOSDB用户标识和鉴别存取控制操作系统安全保护密码存储数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。7.1.1数据库安全性控制的一般方法图1数据库系统的安全模型7.1数据库的安全性及SQLServer的安全保护技术21.用户标识与鉴别(1)用输入用户名(用户标识号)来标明用户身份。

系统内部记录着所有合法用户的标识。系统对输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。(2)通过回答口令标识用户身份。

系统常常要求用户输入口令,只有口令正确才能进入系统。为保密起见,口令由用户自己定义并可以随时变更。为防止口令被人窃取,用户在终端上输入口令时,不把口令的内容显示在屏幕上,而用字符“*”替代其内容。(3)通过回答对随机数的运算结果表明用户身份。

系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输给到计算机。系统根据用户计算结果判定用户是否合法。

1.用户标识与鉴别(1)用输入用户名(用户标识号)来标明32.存取控制授权定义

具有授权资格的用户,如数据库管理员DBA或建表户DBO,通过数据控制语言DCL,将授权决定告知数据库管理系统。(1)数据库系统通过以下3步来实现数据控制:存权处理数据库管理系统DBMS把授权的结果编译后存入数据字典中。查权操作当用户提出操作请求时,系统要在数据字典中查找该用户的数据操作权限,当用户拥有该操作权时才能执行其操作,否则系统将拒绝其操作。2.存取控制授权定义(1)数据库系统通过以下3步来实现数据4(2)关系中的用户权限

用户权限主要包括数据对象和操作类型两个要素。通过授权规定用户可以对哪些数据对象进行哪些类型的操作。数据对象操作类型模式、外模式、内模式建立、修改、检索表或者记录、字段查找、插入、修改、删除(3)SQL的数据控制功能SQL的数据控制功能为GRANT语句(授权)和REVOKE语句(收权)。系统特权:GRANT

CREATEDATABASE,BACKUPDATABASETO

王平对象特权:GRANTselect,update(s#)onsto王平(2)关系中的用户权限

用户权限主要包括数据对象和操作类型两5(4)授权机制

授权粒度:用户权限定义中数据对象范围。在关系数据库中,授权粒度包括关系、记录或属性。授权粒度越细,授权子系统就越灵活,但系统定义与检查权限的开销也会相应地增大。

DBA不需要进行授权就可进行数据库内的任何操作。数据对象的创建者(dbo)自动获得对于该数据对象的所有操作权限。获得数据操作权的用户可以通过GRANT语句把权限转授给其他用户。(4)授权机制

授权粒度:用户权限定义中数据对象范围。D6T-SQL语句权限说明CREATEDATABASE创建数据库,只能由SA授予SQL服务器用户CREATEPROCETURE创建存储过程CREATERULE创建规则CREATETABLE创建表CREATEVIEW创建视图BACKUPDATABASE备份数据库BACKUPLOG备份日志文件SQLSERVER中系统特权适用的语句和权限说明T-SQL语句权限说明CREATEDATABASE创建数7对象特权:类似于数据库操作语言DML的语句权限,它指用户对数据库中的表、视图、存储过程等对象的操作权限。对象对象特权语义表、视图Select,insert,update,delete对表或视图的查询、插入、修改和删除操作表和视图的字段Select(<字段名>),update(<字段名>)允许对指定的字段查看或修改存储过程execute运行存储过程对象特权:类似于数据库操作语言DML的语句权限,它指用户对数83.视图视图:为不同的用户定义不同的视图,通过视图把数据对象限制在一定范围内,把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。4、审计审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志中。一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。3.视图视图:为不同的用户定义不同的视图,通过视图把数据对9

加密是根据一定的算法将原始数据(明文,Plaintext)变换为不可直接识别的格式(密文,Ciphertext),从而使得不知道解密算法的人无法获得数据的内容。加密方法主要有两种:替换方法。使用密钥将明文中的每一个字符转换为密文中的字符。置换方法。仅将明文的字符按不同的顺序重新排列。

5、数据加密机制加密是根据一定的算法将原始数据(明文,Plaintex107.1.2SQLServer的安全体系结构和安全认证模式

1.SQLServer的安全体系结构

(1)操作系统的安全防线:网络管理员负责建立用户组,设置帐号并注册,决定不同的用户对不同系统资源的访问级别。(2)SQLServer的运行安全防线:通过另一种帐号设置来创建附加安全层。(3)SQLServer数据库的安全防线:特定数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。(4)SQLServer数据库对象的安全防线:对权限进行管理,TSQL的DCL功能保证合法用户既使进入了数据库也不能有超越权限的数据存取操作。7.1.2SQLServer的安全体系结构和安全认证模112.SQLServer的安全认证模式(1)Windows(S)安全认证模式

SQL服务器通过使用Windows网络用户的安全性来控制用户对SQL服务器的登录访问。它允许一个网络用户登录到一个SQL服务器上时不必再提供一个单独的登录帐号及口令,从而实现SQL服务器与Windows(S)登录的安全集成。(2)混合安全认证模式

使用Windows(S)安全认证模式或SQLServer安全认证模式。SQLServer安全认证模式要求用户必须输入有效的SQLServer登录帐号及口令。在混合安全模式下,可以使用Windows网络服务器的用户账号或SQLServer自身验证身份的登录帐号,两者均有效。2.SQLServer的安全认证模式(1)Window122.数据库用户的管理

(1)dbo用户

dbo用户即数据库拥有者或数据库创建者,dbo在其所拥有的数据库中拥有所有的操作权限。dbo的身份可被重新分配给另一个用户,系统管理员Sa可以作为他所管理系统的任何数据库的dbo用户。(2)guest用户

如果guest用户在数据库存在,则允许任意一个登录用户作为guest用户访问数据库,其中包括那些不是数据库用户的SQL服务器用户。除系统数据库master和临时数据库tempdb的guest用户不能被删除外,其他数据库都可以将自己guest用户删除,以防止非数据库用户的登录用户对数据库进行访问。2.数据库用户的管理(1)dbo用户

db137.2.1完整性约束条件及完整性控制7.2数据库完整性及SQLServer的完整性控制根据约束条件针对的数据库对象不同,可以分为:表级约束,若干元组间、关系中以及关系之间联系的约束;元组级约束,元组中各个字段间联系的约束;属性级约束,针对列的类型、取值范围、精度、排序等而制定的约束条件。数据库的完整性:指数据的正确性和相容性。完整性检查:系统用一定的机制来检查数据库中的数据是否满足规定的条件(完整性约束条件),这些完整性约束条件将作为模式的一部分存入数据库中。7.2.1完整性约束条件及完整性控制7.2数据库完整141、静态约束,数据库每一确定状态时的数据对象所应满足的约束条件;(1)对数据类型的约束。包括数据类型、长度、精度等。(2)对数据格式的约束:如规定学号的前两位表示入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。(3)对取值范围的约束:如学生的成绩取使范围为0一100。大学生的年龄为大于14等。(4)对空值的约束:

(5)静态元组级约束:

是元组中各个字段之间联系的约束

。如:开始日期小于结束日期,发货数量小于等于订货数量等,职工的最低工资不能低于规定的最低值等。(6)静态表级约束:指若干元组之间、关系之间联系的约束。约束条件所涉及对象的状态不同,完整性约束可分为:1、静态约束,数据库每一确定状态时的数据对象所应满足的约束条15

数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。如:将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。又:职工的工龄只能增加,职工工资在更改时,规定新值不得少于旧值。2、动态约束:数据库从一种状态转变为另一种状态时,新、旧值之间所应满足16

7.2.2DBMS的完整性控制功能定义功能,提供定义完整性约束条件的机制。2)检查功能,检查用户发出的操作请求,看其是否违背了完整性约束条件。3)控制功能,监视数据操作的整个过程,如果发现有违背了完整性约束条件的情况,则采取一定的动作来保证数据的完整性。

7.2.2DBMS的完整性控制功能定义功能,提供定义177.2.3SQLServer数据完整性实现方法1.SQLServer的数据完整性的种类实体完整性。实体完整性为表级完整性,它要求表中所有的元组都应该有一个惟一的标识符(主码)。(2)参照完整性。

参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。

如:在SC表中,有学号为’98001’的选课记录,则S表中不允许删除该学生的记录。(3)域完整性。

域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。7.2.3SQLServer数据完整性实现方法1.S182.SQLServer实现数据完整性的两种方式完整性类型约束类型完整性功能描述域完整性DEFAULT插入数据时,如果没有明确提供列值,则用缺省值作为该列的值CHECK指定某个列或列组可以接受值的范围,或指定数据应满足的条件实体完整性PRIMARYKEY指定主码,确保主码值不重复,并不允许主码为空值UNIQUE指出数据应具有惟一值,防止出现冗余参照完整性FOREIGNKEY定义外码、被参照表和其主码(1)声明数据完整性。

通过在定义表时声明数据完整性。包括各种约束、缺省和规则。(2)过程数据完整性。

编写触发器和存储过程来实现。2.SQLServer实现数据完整性的两种方式完整性类型197.3数据库的并发控制事务是用户定义的一个数据库操作序列,是一个完整的工作单元。一个事务可以是一条或一组SQL语句、或整个应用程序。

数据库是可供多个用户共享的信息资源,允许多个用户同时使用的数据库系统为多用户数据库系统。数据库的并发控制就是控制数据库,防止多用户并发存取同一数据时造成的数据错误,保证数据库的一致性。7.3.1事务及并发控制的基本概念

1.事务的概念7.3数据库的并发控制事务是用户定义的一个数据库操作20事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行,是不可分割的工作单位。例1:一个交付业务活动:账户A支付给账户B若干元钱(假设为N元)。这个支付操作包含两个动作:·第一个:账户A一N·第二个:账户B十N账户A支付给账户B若干元钱(假设为N元),如果在第一个动作完成之后,在第二个动作还没有完成时,系统突然停电了,那么这个支付活动实际上是不成功的。这时正确状态应该是能够撤消掉第—个动作,即回到交付活动开始前的状态。(事务是由系统自动维护的。)事务是一个用户定义的完整的工作单元,一个事务内的所有语句21BEGINTRANSACTION:表示事务的开始。COMMIT:表示事务的提交,即将事务中所有对数据的更新写回到磁盘上的物理数据库中。ROLLBACK:表示事务的回滚,即事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。在SQL语言中,定义事务的语句有三条:BEGINTRANSACTION:表示事务的开始。在SQL22事务的特性当事务进行到中间出现异常时,系统会自动地撤消事务中已完成的部分,从而保证数据库中的数据总是处于正确的状态。事务作为一个完整的操作单元,具有如下特性:1.原子性:事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。2.一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。3.隔离性:一个事务的执行不能受其他事务的干扰。在多用户的并发情况下,保证数据库中的数据总是正确的。4.永久性:事务一旦结束,则其对数据库中数据的影响就是永久的。事务的特性当事务进行到中间出现异常时,系统会自动地撤消事务23例如用事务完成如下操作:在S表中添加一条学生记录,然后将这个学生的修课情况插入到SC表中。BEGINTRANSACTION

insertintos(s#,sn,sex)values('983103','吴天玲','女')insertintosc(s#,c#,score)values('983103','A001',null)COMMIT执行完此事务后查看一下s表和sc表中的数据,我们发现新插入的数据均在数据库中。如果我们将此事务最后的COMMIT改为ROLLBACK,s表和sc表中的数据有什么变化?例如用事务完成如下操作:在S表中添加一条学生记录,然后将242.事务并发操作可能产生的数据不一致性时间甲事务数据库中R的值乙事务t01000t1读R=1000t2

读R=1000t3R=R-200t4R=R-300t5UPDATERt6800UPDATERt7700(1)丢失更新当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。2.事务并发操作可能产生的数据不一致性时间甲事务数据库中25时间甲事务T1数据库中R的值乙事务T2t01000t1读R=1000t2

R=R-200t3UPDATERt4800读R=800t5Rollbackt61000(2)脏读事务T2读取了T1更新后的数据,其后T1由于某种原因撤消修改,数据R恢复原值,导致T2得到的数据与数据库的内容不一致。时间甲事务T1数据库中R的值乙事务T2t01000t1读26(3)不可重读时间甲事务T1数据库中R的值乙事务T2t01000t1读R(1000)t2

读R=1000t3R=R-300t4updateRt5700t6读R同一数据库中往往有多个事务并发执行,如果不进行并发控制,就会产生不一致性。

事务T1读取数据R后,T2读取并且更新了R,当T1再次读取R时,得到的两次读取值不一致,这种现象为不可重读。

(3)不可重读时间甲事务T1数据库中R的值乙事务T2t0277.3.2封锁及封锁协议一个环节是申请加锁,即事务在操作前要对它将使用的数据提出加锁请求;第二个环节是获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权;第三个环节是释放锁,即完成操作后事务放弃数据的控制权。封锁是使事务对它要操作的数据有一定的控制能力。封锁具有3个环节:并发控制:就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。并发控制的主要方法是采用封锁机制(Locking)。7.3.2封锁及封锁协议一个环节是申请加锁,即事务在操作281.锁的类型(1)

排它锁(ExclusiveLocks,简称X锁)。

排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。(2)

共享锁(ShareLocks,简称S锁)。

共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。

1.锁的类型(1)排它锁(ExclusiveLocks292.封锁协议(1)一级封锁协议。

事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。(2)二级封锁协议。

事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。(3)三级封锁协议。

事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。在对数据对象加锁时,还需要约定一些规则,如何时申请X锁或S锁、持锁时间、何时释放等。2.封锁协议(1)一级封锁协议。

事务T在修改数据之前必30事务并发操作可能产生的数据不一致问题

T1T2T1T2T1T21)读A=20

1)读A=50读B=100求和=150

1)读C=100C←C*2写回C

2)读A=203)A←A-1写回A=19

2)

读B=100B←B*2写回B=2002)

读C=2004)A←A-1写回A=19(A少减一次)3)读A=50读B=200和=250(验算不对)

3)ROLLBACKC恢复为100(错误的C值已读出)(a)丢失数据(b)不可重复读(c)读“脏”数据事务并发操作可能产生的数据不一致问题T1T2T1T2T1T31T1T2T1T2T1T21)XlockA获得

1)SlockASlockB读A=50读B=100A+B=150

1)XlockC读C=100C←C*2写回C=200

2)读A=20

XlockA等待3)A←A-1写回A=19CommitUnlockA等待等待等待

2)

XlockB等待等待2)

SlockC等待等待3)读A=50读B=100A+B=150CommitUnlockAUnlockB等待

3)ROLLBACK(C恢复为100)UnlockC

等待等待

4)

获得XlockA读A=19A←A-1写回A=18CommitUnlock

4)

获得Xlock读B=100B←B*2写回B=200CommitUnlockB4)

获得SlockC读C=100CommitCUnlockC(a)没有丢失修改(b)可重复读(c)不读“脏”数据T1T2T1T2T1T21)XlockA

1)Sloc32用封锁机制解决三种数据不一致性的例子

X锁S锁一致性保证

操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读“脏”数据可重复读一级协议

二级协议

√√

√√

三级协议

√√√√用封锁机制解决三种数据不一致性的例子

X锁S锁一致性保证

337.3.3封锁出现的问题及解决方法活锁和死锁活锁。

如:事务T1封锁了数据R,T2事务又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的锁后,系统又批准了T4的请求…,T2可能永远等待。在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。解决方法:采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。7.3.3封锁出现的问题及解决方法活锁和死锁34(2)死锁如果事务T1和T2都需要数据R1和R2,T1封锁了数据R1,T2封锁了数据R2;然后T1又请求封锁R2,T2请求封锁R1,事务T1、T2都等待对方释放R1或R2上的锁,但由于T1、T2都没有获得必要的数据,所以它们不会结束,只能继续等待。多事务交错等待的僵持局面称为死锁。

解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定手段定期诊断系统中有无死锁,若有则解除之。(撤消事务)预防死锁的方法:1)一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。(2)死锁357.4数据库恢复技术

7.4.1故障的种类1.事务内部的故障

事务未运行到正常终止点前被终止的情况。

事务内部的故障有的是可以通过事务程序本身发现的,但是更多的则是非预期的,它们不能由事务处理程序处理。例如运算溢出、并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。2.系统故障

系统故障是指造成系统停止运转的任何事件,从而使得系统必须重新启动。3.介质故障

介质故障指外存故障,例如磁盘损坏、磁头碰撞,瞬时磁场干扰等。7.4数据库恢复技术

7.4.1故障的种类1.事务364.计算机病毒

计算机病毒是一种人为的故障或破坏。5.用户操作错误

由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。4.计算机病毒

计算机病毒是一种人为的故障或破坏。377.4.2数据库恢复策略1、事务故障的恢复利用日志文件撤消(undo)此事务数据库进行的修改。事务故障的恢复一般是由系统自动完成的。2、系统故障的恢复系统故障的恢复也是利用日志文件:撤消(undo)未完成的事务和重做(REDO)已完成的事务。系统故障的恢复是由系统在重新启动时自动完成的。3、介质故障的恢复重装数据库的后备副本,并重做已完成的事务。7.4.2数据库恢复策略1、事务故障的恢复2、系统故障的恢387.4.3数据恢复的实现技术1.数据转储是数据库恢复中采用的基本技术,即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这种备用的数据文本称为后备副本。

数据转储有以下几类:(1)静态转储和动态转储

数据库转储过程中,是否允许其他事务对数据库进行存取或修改操作。

静态转储优点:能得到数据一致性的副本。缺点:降低了数据库的可用性。动态转储优点:不影响事务的运行,但副本上的数据可能是过时的数据。7.4.3数据恢复的实现技术1.数据转储39(2)海量转储和增量转储。

海量转储是每次转储全部数据库。(对数据量大和更新频率高的数据库,不适合频繁地进行。)增量转储是每次只转储上一次更新过的数据。(适合对数据量较大,且事务处理频繁地DBS。)(2)海量转储和增量转储。海量转储是每次转储全部数402.登记日志文件(Logging)

日志文件是用来记录对数据库的更新操作的文件。

(1)日志文件的作用。

日志文件的主要用于数据库恢复。

当数据库文件毁坏后,可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,再利用日志文件,把已完成的事务进行重做处理。对未完成的事务做撤消处理。(2)登记日志文件为保证数据库的可恢复性,登记日志文件时必须遵守两条原则:一是登记的次序严格按事务执行的时间次序,二是必须先写日志文件,后写数据库。2.登记日志文件(Logging)

日志文件是用来记录417.4.3SQLServer的数据备份和恢复机制SQLServer的三种备份形式:1)完全备份:将数据库中的全部信息进行备份,它是恢复的基线。不但备份数据库的数据文件、日志文件,而且还备份文件的存储位置信息以及数据库中的全部对象。2)事务日志备份:备份发生在数据库上的事务。3)增量备份:差异备份是备份从最近的完全备份之后对数据所作的修改,它以完全备份为基准点,即备份完全备份之后变化了的数据文件、日志文件以及数据库中其他被修改了的对象。完全备份差异备份1差异备份2t图6.2差异备份示意图7.4.3SQLServer的数据备份和恢复机制SQ422.SQLServer的数据备份或恢复策略使用完全备份的策略:将最近一次的备份恢复。在完全备份基础上使用事务日志备份的策略。备份步骤是:

1)定期进行完全备份,例如一天一次或两天一次。

2)更频繁地进行事务日志备份,如一小时一次或两小时一次。恢复步骤是:

1)用最近一次完全备份恢复数据库。

2)用最近一次完全备份之后创建的所有事务日志备份,按顺序恢复完全备份之后发生在数据库上的所有操作。2.SQLServer的数据备份或恢复策略使用完全备份的43同时使用三种备份的策略:在使用数据库完全备份和事务日志备份的基础上,再以增量备份作为补充。备份步骤是:

1)定期进行完全备份,例如一天一次或两天一次。

2)进行增量备份,如六小时一次3)进行事务日志备份,如两小时一次。

恢复步骤是:

1)用最近一次完全备份恢复数据库。

2)用最近一次的增量备份恢复数据库。3)用最近一次完全备份之后创建的所有事务日志备份,按顺序恢复完全备份之后发生在数据库上的所有操作。同时使用三种备份的策略:在使用数据库完全备份和事务日志备份的44本章结束本章结束45第7章数据库的安全保护第7章数据库的安全保护467.1数据库的安全性及SQLServer的安全保护技术用户DBMSOSDB用户标识和鉴别存取控制操作系统安全保护密码存储数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。7.1.1数据库安全性控制的一般方法图1数据库系统的安全模型7.1数据库的安全性及SQLServer的安全保护技术471.用户标识与鉴别(1)用输入用户名(用户标识号)来标明用户身份。

系统内部记录着所有合法用户的标识。系统对输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。(2)通过回答口令标识用户身份。

系统常常要求用户输入口令,只有口令正确才能进入系统。为保密起见,口令由用户自己定义并可以随时变更。为防止口令被人窃取,用户在终端上输入口令时,不把口令的内容显示在屏幕上,而用字符“*”替代其内容。(3)通过回答对随机数的运算结果表明用户身份。

系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输给到计算机。系统根据用户计算结果判定用户是否合法。

1.用户标识与鉴别(1)用输入用户名(用户标识号)来标明482.存取控制授权定义

具有授权资格的用户,如数据库管理员DBA或建表户DBO,通过数据控制语言DCL,将授权决定告知数据库管理系统。(1)数据库系统通过以下3步来实现数据控制:存权处理数据库管理系统DBMS把授权的结果编译后存入数据字典中。查权操作当用户提出操作请求时,系统要在数据字典中查找该用户的数据操作权限,当用户拥有该操作权时才能执行其操作,否则系统将拒绝其操作。2.存取控制授权定义(1)数据库系统通过以下3步来实现数据49(2)关系中的用户权限

用户权限主要包括数据对象和操作类型两个要素。通过授权规定用户可以对哪些数据对象进行哪些类型的操作。数据对象操作类型模式、外模式、内模式建立、修改、检索表或者记录、字段查找、插入、修改、删除(3)SQL的数据控制功能SQL的数据控制功能为GRANT语句(授权)和REVOKE语句(收权)。系统特权:GRANT

CREATEDATABASE,BACKUPDATABASETO

王平对象特权:GRANTselect,update(s#)onsto王平(2)关系中的用户权限

用户权限主要包括数据对象和操作类型两50(4)授权机制

授权粒度:用户权限定义中数据对象范围。在关系数据库中,授权粒度包括关系、记录或属性。授权粒度越细,授权子系统就越灵活,但系统定义与检查权限的开销也会相应地增大。

DBA不需要进行授权就可进行数据库内的任何操作。数据对象的创建者(dbo)自动获得对于该数据对象的所有操作权限。获得数据操作权的用户可以通过GRANT语句把权限转授给其他用户。(4)授权机制

授权粒度:用户权限定义中数据对象范围。D51T-SQL语句权限说明CREATEDATABASE创建数据库,只能由SA授予SQL服务器用户CREATEPROCETURE创建存储过程CREATERULE创建规则CREATETABLE创建表CREATEVIEW创建视图BACKUPDATABASE备份数据库BACKUPLOG备份日志文件SQLSERVER中系统特权适用的语句和权限说明T-SQL语句权限说明CREATEDATABASE创建数52对象特权:类似于数据库操作语言DML的语句权限,它指用户对数据库中的表、视图、存储过程等对象的操作权限。对象对象特权语义表、视图Select,insert,update,delete对表或视图的查询、插入、修改和删除操作表和视图的字段Select(<字段名>),update(<字段名>)允许对指定的字段查看或修改存储过程execute运行存储过程对象特权:类似于数据库操作语言DML的语句权限,它指用户对数533.视图视图:为不同的用户定义不同的视图,通过视图把数据对象限制在一定范围内,把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。4、审计审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志中。一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。3.视图视图:为不同的用户定义不同的视图,通过视图把数据对54

加密是根据一定的算法将原始数据(明文,Plaintext)变换为不可直接识别的格式(密文,Ciphertext),从而使得不知道解密算法的人无法获得数据的内容。加密方法主要有两种:替换方法。使用密钥将明文中的每一个字符转换为密文中的字符。置换方法。仅将明文的字符按不同的顺序重新排列。

5、数据加密机制加密是根据一定的算法将原始数据(明文,Plaintex557.1.2SQLServer的安全体系结构和安全认证模式

1.SQLServer的安全体系结构

(1)操作系统的安全防线:网络管理员负责建立用户组,设置帐号并注册,决定不同的用户对不同系统资源的访问级别。(2)SQLServer的运行安全防线:通过另一种帐号设置来创建附加安全层。(3)SQLServer数据库的安全防线:特定数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。(4)SQLServer数据库对象的安全防线:对权限进行管理,TSQL的DCL功能保证合法用户既使进入了数据库也不能有超越权限的数据存取操作。7.1.2SQLServer的安全体系结构和安全认证模562.SQLServer的安全认证模式(1)Windows(S)安全认证模式

SQL服务器通过使用Windows网络用户的安全性来控制用户对SQL服务器的登录访问。它允许一个网络用户登录到一个SQL服务器上时不必再提供一个单独的登录帐号及口令,从而实现SQL服务器与Windows(S)登录的安全集成。(2)混合安全认证模式

使用Windows(S)安全认证模式或SQLServer安全认证模式。SQLServer安全认证模式要求用户必须输入有效的SQLServer登录帐号及口令。在混合安全模式下,可以使用Windows网络服务器的用户账号或SQLServer自身验证身份的登录帐号,两者均有效。2.SQLServer的安全认证模式(1)Window572.数据库用户的管理

(1)dbo用户

dbo用户即数据库拥有者或数据库创建者,dbo在其所拥有的数据库中拥有所有的操作权限。dbo的身份可被重新分配给另一个用户,系统管理员Sa可以作为他所管理系统的任何数据库的dbo用户。(2)guest用户

如果guest用户在数据库存在,则允许任意一个登录用户作为guest用户访问数据库,其中包括那些不是数据库用户的SQL服务器用户。除系统数据库master和临时数据库tempdb的guest用户不能被删除外,其他数据库都可以将自己guest用户删除,以防止非数据库用户的登录用户对数据库进行访问。2.数据库用户的管理(1)dbo用户

db587.2.1完整性约束条件及完整性控制7.2数据库完整性及SQLServer的完整性控制根据约束条件针对的数据库对象不同,可以分为:表级约束,若干元组间、关系中以及关系之间联系的约束;元组级约束,元组中各个字段间联系的约束;属性级约束,针对列的类型、取值范围、精度、排序等而制定的约束条件。数据库的完整性:指数据的正确性和相容性。完整性检查:系统用一定的机制来检查数据库中的数据是否满足规定的条件(完整性约束条件),这些完整性约束条件将作为模式的一部分存入数据库中。7.2.1完整性约束条件及完整性控制7.2数据库完整591、静态约束,数据库每一确定状态时的数据对象所应满足的约束条件;(1)对数据类型的约束。包括数据类型、长度、精度等。(2)对数据格式的约束:如规定学号的前两位表示入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。(3)对取值范围的约束:如学生的成绩取使范围为0一100。大学生的年龄为大于14等。(4)对空值的约束:

(5)静态元组级约束:

是元组中各个字段之间联系的约束

。如:开始日期小于结束日期,发货数量小于等于订货数量等,职工的最低工资不能低于规定的最低值等。(6)静态表级约束:指若干元组之间、关系之间联系的约束。约束条件所涉及对象的状态不同,完整性约束可分为:1、静态约束,数据库每一确定状态时的数据对象所应满足的约束条60

数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。如:将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。又:职工的工龄只能增加,职工工资在更改时,规定新值不得少于旧值。2、动态约束:数据库从一种状态转变为另一种状态时,新、旧值之间所应满足61

7.2.2DBMS的完整性控制功能定义功能,提供定义完整性约束条件的机制。2)检查功能,检查用户发出的操作请求,看其是否违背了完整性约束条件。3)控制功能,监视数据操作的整个过程,如果发现有违背了完整性约束条件的情况,则采取一定的动作来保证数据的完整性。

7.2.2DBMS的完整性控制功能定义功能,提供定义627.2.3SQLServer数据完整性实现方法1.SQLServer的数据完整性的种类实体完整性。实体完整性为表级完整性,它要求表中所有的元组都应该有一个惟一的标识符(主码)。(2)参照完整性。

参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。

如:在SC表中,有学号为’98001’的选课记录,则S表中不允许删除该学生的记录。(3)域完整性。

域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。7.2.3SQLServer数据完整性实现方法1.S632.SQLServer实现数据完整性的两种方式完整性类型约束类型完整性功能描述域完整性DEFAULT插入数据时,如果没有明确提供列值,则用缺省值作为该列的值CHECK指定某个列或列组可以接受值的范围,或指定数据应满足的条件实体完整性PRIMARYKEY指定主码,确保主码值不重复,并不允许主码为空值UNIQUE指出数据应具有惟一值,防止出现冗余参照完整性FOREIGNKEY定义外码、被参照表和其主码(1)声明数据完整性。

通过在定义表时声明数据完整性。包括各种约束、缺省和规则。(2)过程数据完整性。

编写触发器和存储过程来实现。2.SQLServer实现数据完整性的两种方式完整性类型647.3数据库的并发控制事务是用户定义的一个数据库操作序列,是一个完整的工作单元。一个事务可以是一条或一组SQL语句、或整个应用程序。

数据库是可供多个用户共享的信息资源,允许多个用户同时使用的数据库系统为多用户数据库系统。数据库的并发控制就是控制数据库,防止多用户并发存取同一数据时造成的数据错误,保证数据库的一致性。7.3.1事务及并发控制的基本概念

1.事务的概念7.3数据库的并发控制事务是用户定义的一个数据库操作65事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行,是不可分割的工作单位。例1:一个交付业务活动:账户A支付给账户B若干元钱(假设为N元)。这个支付操作包含两个动作:·第一个:账户A一N·第二个:账户B十N账户A支付给账户B若干元钱(假设为N元),如果在第一个动作完成之后,在第二个动作还没有完成时,系统突然停电了,那么这个支付活动实际上是不成功的。这时正确状态应该是能够撤消掉第—个动作,即回到交付活动开始前的状态。(事务是由系统自动维护的。)事务是一个用户定义的完整的工作单元,一个事务内的所有语句66BEGINTRANSACTION:表示事务的开始。COMMIT:表示事务的提交,即将事务中所有对数据的更新写回到磁盘上的物理数据库中。ROLLBACK:表示事务的回滚,即事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。在SQL语言中,定义事务的语句有三条:BEGINTRANSACTION:表示事务的开始。在SQL67事务的特性当事务进行到中间出现异常时,系统会自动地撤消事务中已完成的部分,从而保证数据库中的数据总是处于正确的状态。事务作为一个完整的操作单元,具有如下特性:1.原子性:事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。2.一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。3.隔离性:一个事务的执行不能受其他事务的干扰。在多用户的并发情况下,保证数据库中的数据总是正确的。4.永久性:事务一旦结束,则其对数据库中数据的影响就是永久的。事务的特性当事务进行到中间出现异常时,系统会自动地撤消事务68例如用事务完成如下操作:在S表中添加一条学生记录,然后将这个学生的修课情况插入到SC表中。BEGINTRANSACTION

insertintos(s#,sn,sex)values('983103','吴天玲','女')insertintosc(s#,c#,score)values('983103','A001',null)COMMIT执行完此事务后查看一下s表和sc表中的数据,我们发现新插入的数据均在数据库中。如果我们将此事务最后的COMMIT改为ROLLBACK,s表和sc表中的数据有什么变化?例如用事务完成如下操作:在S表中添加一条学生记录,然后将692.事务并发操作可能产生的数据不一致性时间甲事务数据库中R的值乙事务t01000t1读R=1000t2

读R=1000t3R=R-200t4R=R-300t5UPDATERt6800UPDATERt7700(1)丢失更新当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。2.事务并发操作可能产生的数据不一致性时间甲事务数据库中70时间甲事务T1数据库中R的值乙事务T2t01000t1读R=1000t2

R=R-200t3UPDATERt4800读R=800t5Rollbackt61000(2)脏读事务T2读取了T1更新后的数据,其后T1由于某种原因撤消修改,数据R恢复原值,导致T2得到的数据与数据库的内容不一致。时间甲事务T1数据库中R的值乙事务T2t01000t1读71(3)不可重读时间甲事务T1数据库中R的值乙事务T2t01000t1读R(1000)t2

读R=1000t3R=R-300t4updateRt5700t6读R同一数据库中往往有多个事务并发执行,如果不进行并发控制,就会产生不一致性。

事务T1读取数据R后,T2读取并且更新了R,当T1再次读取R时,得到的两次读取值不一致,这种现象为不可重读。

(3)不可重读时间甲事务T1数据库中R的值乙事务T2t0727.3.2封锁及封锁协议一个环节是申请加锁,即事务在操作前要对它将使用的数据提出加锁请求;第二个环节是获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权;第三个环节是释放锁,即完成操作后事务放弃数据的控制权。封锁是使事务对它要操作的数据有一定的控制能力。封锁具有3个环节:并发控制:就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。并发控制的主要方法是采用封锁机制(Locking)。7.3.2封锁及封锁协议一个环节是申请加锁,即事务在操作731.锁的类型(1)

排它锁(ExclusiveLocks,简称X锁)。

排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。(2)

共享锁(ShareLocks,简称S锁)。

共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。

1.锁的类型(1)排它锁(ExclusiveLocks742.封锁协议(1)一级封锁协议。

事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。(2)二级封锁协议。

事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。(3)三级封锁协议。

事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。在对数据对象加锁时,还需要约定一些规则,如何时申请X锁或S锁、持锁时间、何时释放等。2.封锁协议(1)一级封锁协议。

事务T在修改数据之前必75事务并发操作可能产生的数据不一致问题

T1T2T1T2T1T21)读A=20

1)读A=50读B=100求和=150

1)读C=100C←C*2写回C

2)读A=203)A←A-1写回A=19

2)

读B=100B←B*2写回B=2002)

读C=2004)A←A-1写回A=19(A少减一次)3)读A=50读B=200和=250(验算不对)

3)ROLLBACKC恢复为100(错误的C值已读出)(a)丢失数据(b)不可重复读(c)读“脏”数据事务并发操作可能产生的数据不一致问题T1T2T1T2T1T76T1T2T1T2T1T21)XlockA获得

1)SlockASlockB读A=50读B=100A+B=150

1)XlockC读C=100C←C*2写回C=200

2)读A=20

XlockA等待3)A←A-1写回A=19CommitUnlockA等待等待等待

2)

XlockB等待等待2)

SlockC等待等待3)读A=50读B=100A+B=150CommitUnlockAUnlockB等待

3)ROLLBACK(C恢复为100)UnlockC

等待等待

4)

获得XlockA读A=19A←A-1写回A=18CommitUnlock

4)

获得Xlock读B=100B←B*2写回B=200CommitUnlockB4)

获得SlockC读C=100CommitCUnlockC(a)没有丢失修改(b)可重复读(c)不读“脏”数据T1T2T1T2T1T21)XlockA

1)Sloc77用封锁机制解决三种数据不一致性的例子

X锁S锁一致性保证

操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读“脏”数据可重复读一级协议

二级协议

√√

√√

三级协议

√√√√用封锁机制解决三种数据不一致性的例子

X锁S锁一致性保证

787.3.3封锁出现的问题及解决方法活锁和死锁活锁。

如:事务T1封锁了数据R,T2事务又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的锁后,系统又批准了T4的请求…,T2可能永远等待。在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。解决方法:采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。7.3.3封锁出现的问题及解决方法活锁和死锁79(2)死锁如果事务T1和T2都需要数据R1和R2,T1封锁了数据R1,T2封锁了数据R2;然后T1又请求封锁R2,T2请求封锁R1,事务T1、T2都等待对方释放R1

温馨提示

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

评论

0/150

提交评论