ch07数据库保护课件

上传人:风*** 文档编号:240745713 上传时间:2024-05-04 格式:PPT 页数:98 大小:497.50KB
返回 下载 相关 举报
ch07数据库保护课件_第1页
第1页 / 共98页
ch07数据库保护课件_第2页
第2页 / 共98页
ch07数据库保护课件_第3页
第3页 / 共98页
点击查看更多>>
资源描述
第七章数据库保护1.主要内容:n数据库的恢复n数据库的并发控制n数据库的完整性n数据库的安全性2.7.1.1事务的概念n事务定义事务定义n事务是由一系列操作序列构成的程序执行单元事务是由一系列操作序列构成的程序执行单元。这些操作要么都做,要么都不做,是一个不可分割的工作单位。例如银行转帐。nSQLSQL中事务的定义中事务的定义事务以Begin transaction开始,以Commit work或 Rollback work结束。Commit work表示提交,事务正常结束。Rollback work表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。3.7.1.2 事务的性质事务的性质事务的性质ACIDACIDn原子性(Atomicity)n一致性(Consistency)n隔离性(Isolation)n持久性(Durability)4.事务的性质原子性n事务中的操作,要么全做成,要么都不做n事务是不可拆分的n事务必须以 Commit/Rollback 结束由由DBMS的事务管理子系统完成。的事务管理子系统完成。5.事务的性质一致性n独立运行的事务,必须保证保持数据库的一致状态n即数据不会因为事务的执行而遭到破坏。数据库的一致性状态由编写事务程序的程序员编写事务程序的程序员来负责,也可以由系统测试完整性约束自动完成。由由DBMS的完整性子系统完成。的完整性子系统完成。6.事务的性质隔离性n系统必须保证事务不受其它并发执行事务的影响。n多个并发事务之间不能相互干扰n并发不影响事务的执行隔离性通过并发控制子系统实现。隔离性通过并发控制子系统实现。7.事务的性质持久性n一旦事务成功完成(Commit),它对数据库的更新应该是持久的n即使在写入磁盘之前,系统发生故障n在下次启动之后,也应保障数据更新的有效持久性通过恢复管理子系统实现。持久性通过恢复管理子系统实现。8.7.1.2 事务的性质对数据库的访问是建立在读和写两个操作的基对数据库的访问是建立在读和写两个操作的基础上。础上。read(X):从数据库传送数据项X到事务的工作区中。write(X):从事务的工作区中将数据项X写回数据库。9.7.1.2 事务的性质n举例:银行转帐:事务Ti从帐户A过户100¥到帐户B。T:read(A);A:=A 100;write(A);read(B);B:=B+100;write(B);read(X):从数据库传送数据项X到事务的工作区中。write(X):从事务的工作区中将数据项X写回数据库。10.练习:n、DMBS的并发控制子系统,保证了事务()的实现。n、事务的独立执行不会破坏DB的完整性,称为()n、DBMS中实现事务持久性的子系统是:n()、隔离性、隔离性、事务的一致性。、事务的一致性。、恢复管理子系统。、恢复管理子系统。11.7.1.3 故障类型和恢复方法n在运行数据库系统时,可能会出现各种各样的故障。发生故障时,可能丢失数据库中的数据。DBMS的恢复管理子系统采取一系列措施,保证在任何情况下保持事务的原子性和持久性,确保数据不被损坏。n1、数据库系统中可能发生的故障12.7.1.3 故障类型和恢复方法n(1)事务故障n非预期的事务故障n事务由于某些内部条件无法继续正常执行n如:非法输入、找不到数据、溢出等n可预期的事务故障n应用程序可以发现的事务故障n该事务可在以后的某个时间重新执行n此时数据库中的数据处于非一致状态13.7.1.3 故障类型和恢复方法n(2)系统故障n由于特殊的原因导致事务无法正常执行,而系统必须重新启动n如停电、CPU故障等n一般只影响正在执行的事务,而不会破坏数据库本身以及DBMS环境n系统重新启动时,数据库处于一种非一致性状态14.7.1.3 故障类型和恢复方法n()介质故障n外存发生故障,导致存储其中的数据、或数据库本身、或DBMS软件处于不正常状态n这类故障的破坏性较大n计算机病毒n破坏DBMS软件环境n破坏OS环境n导致数据库系统无法正常工作15.7.1.4 恢复的基本原则和实现方法n(1)定期对整个数据库进行复制和转储)定期对整个数据库进行复制和转储n冗余技术是数据库恢复的保障n建立数据的冗余n与数据库分别存储n利用冗余数据,重建数据,使其达到一致的状态n建立整个数据库的冗余n将整个数据库进行备份(冗余的数据库)n需要时将备份数据库恢复(重载)至系统中n解决数据库本身被破坏的场合n只能恢复到数据库被备份时的状态16.(1)定期对整个数据库进行复制和转储)定期对整个数据库进行复制和转储n转储可以分为:n静态转储:在存储期间不允许对数据库进行存取、修改。n动态转储:在存储期间允许对数据库进行存取、修改。n转储还可以分为:n海量存储:每次存储全部数据库n增量存储:每次只存储上次转储后更新过的数据。17.7.1.4 恢复的基本原则和实现方法n(2)、建立日志文件)、建立日志文件n以日志文件的形式,记录事务对数据库的更新操作n日志文件记录了数据库更新的所有日志记录的序列n常见的是以记录为单位的日志文件n利用日志记录,可对数据库做相应的恢复n日志内容n各个事务的开始标志n各个事务的数据更新操作n各个事务的结束(Commit/Rollback)18.7.1.4 恢复的基本原则和实现方法n()恢复()恢复n数据库本身(或DBMS)被破坏n重新安装DBMSnReload数据库副本(先前被转储的数据库)n用日志文件执行REDO操作,不丢失对数据库的更新。n需DBA人工处理19.数据库恢复技术恢复n数据库本身未被破坏,但有些数据不可靠n系统重启,扫描日志文件(耗时)n根据日志,作Undo:对更新的操作执行反向操作n系统自动完成20.7.1.5 运行记录优先原则n、至少要等相应运行记录已经写入“日志”文件后,才能允许事务往数据库中写记录。n、直至事务的所有运行记录都已写入运行“日志”文件后,才能允许事务完成“END TRANSACTION”处理。21.练习:n、为了能在出故障时,做好恢复,应在平时做好两件事情:()和()n、后备副本的主要作用是()n3、日志文件用于保存()、备份和日志、备份和日志、故障恢复、故障恢复、对数据库的更新操作、对数据库的更新操作22.7.1.6 SQL中的恢复操作nORACLE中的实现方法:nCOMMIT WORK RELEASEnROLLBACK WORK RELEASEnSET AUTOCOMMIT IMMEDIATE|ON|OFF23.7.2.1 数据库的并发操作带来的问题n数据库是一个共享资源,可以由多个用户使用。n这些用户程序可以一个一个的串行执行,每一时刻只有一个用户程序运行,执行对数据库的存取。其他程序必须等到这个用户程序结束后才能对数据库存取。n在多用户共享系统中,如果多个用户同时对同一数据进行操作称为并发操作。可能会互相干扰,破坏了事务的隔离性。24.1、丢失更新问题时间更新事务T1数据库中A的值更新事务T21502 read(A)read(A)34A:=A-15A:=A*26write(A)740write(A)8100A值100,错误,第8步丢失了T1对数据库的更新操作。25.2、不一致分析问题时间更新事务T1数据库中A的值读事务T31502 read(A)3read(A)4A:=A-105write(A)640在第6步时,由于T1已更新了A的值,此时T3使用的A值仍为50,因此造成了不一致。即读了过时的数据。26.3、“脏数据”的读出时间更新事务T1数据库中A的值读事务T41502 read(A)3A:=A-104write(A)540read(A)6ROLLBACK750数据库中A的值被恢复为50,事务T4读出的A的值为40,未提交随后又被撤销的数据称为“脏数据”。27.n并发控制需要靠数据库的并发控制子系统来解决。如时间更新事务T1数据库中A的值更新事务T21502 read(A)3read(A)4A:=A-15A:=A*26write(A)740write(A)81001、在第3步避免T2执行read,因为T1已经读了A的值,将要进行更新。2、应避免T1执行write,因为T2已经在使用A值。3、应避免T2执行write,因为T1已写了新的A值,事务T2的写操作将把T1的写操作冲掉。28.7.2.2 排它型锁(X封锁)n封锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用。n并发控制的基本方法就是封锁。n数据的互斥访问n当某事务访问某数据项时,其他任何事务均不得修改该数据项n对访问的数据项加锁n不同的加锁方式,产生不同的隔离层次,导致不同的一致性结果,获得不同的并发度29.7.2.2 排它型锁(X封锁)n封锁的类型n排它锁排它锁(X锁,eXclusive lock):事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。n共享锁共享锁(S锁,Share lock):事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功。30.、X封锁和PX协议nX封锁:事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。nPX协议:任何企图更新记录R的事务必须先执行LOCK X(R),以获得对它的寻址能力,并对它取得X封锁。31.举例:时间更新事务T1数据库中A的值更新事务T21502LOCK X(A)3read(A)4LOCK X(A)5A:=A-10wait6write(A)wait740wait8UNLOCK(A)wait9(重做)LOCK X(A)10read(A)11A:=A*212write(A)1380UNLOCK(A)利用PX协议,执行T1和T2。事务T1先对A封锁,写回新的A值后,T1执行解除封锁操作,并对A进行修改。这个过程能得到正确结果。32.7.2.2 排它型锁(X封锁)n对于删除操作,PX协议同样适用。要删除一个记录,首先也要执行LOCK(X)操作和read操作后才能删除。n对于插入操作,就不需要读记录,因此,可以假定“INSERT T”本包含了对新插入记录R的X封锁。33.2、并发事务的可串行化n多个事务可能同时(交叉地)在系统中运行n提高处理器、磁盘的利用率n减少等待时间n多个事务并发运行,由事务管理器进行调度n可串行化调度n并发运行的结果,与事务按某一顺序串行运行的结果等同举例:图7.中34.3、由事务的ROLLBACK引起的丢失更新问题时间更新事务T1数据库中A的值更新事务T21502LOCK X(A)3read(A)4A:=A-105write(A)6UNLOCK(A)407LOCK X(A)8read(A)9A:=A*210write(A)1180UNLOCK(A)12COMMIT13ROLLBACK145035.n上图中的情况不可原谅,因为此时数据库中A的值是错的。为了避免数据库恢复时丢恢复时丢失更新失更新,就不应该允许事务去使用一个未提交的修改。nPXC协议由PX协议和下面一条规则组成:n“X封锁必须保留到事务终点(COMMIT ROLLBACK)”36.7.2.3 活锁与死锁n当多个事务请求封锁同一数据对象时,有可能出现锁的异常n活锁n多个事务申请对数据R加锁,而系统随机地加锁,导致某些事务长等n活锁策略n设定系统按事务申请锁的时间顺序进行排队37.7.2.3 活锁与死锁38.7.2.3 活锁与死锁n死锁n两个(或多个)事务互相申请对方加锁对象的排它锁,造成循环等待TTR2R139.7.2.3 活锁与死锁n预防n一次加锁法n事务一次性对需要的数据进行加锁?降低了系统的并发性,数据的不可预见性n顺序加锁法n估算需要的锁,对系统中的锁设定一个加锁顺序,所有事务均按照该顺序进行加锁?很难估算n死锁几乎无法避免,允许死锁的发生,对其进行诊断和解除40.7.2.3 活锁与死锁n诊断n超时法设定时限,超过即为死锁n等待图法回路即为死锁n解除n杀死n时间戳n代价最小41.7.2.4 共享型封锁(S封锁)共享锁共享锁(S锁,Share lock):事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功。相容矩阵:T2T1XSXNNYSNYYYYY42.时间事务T7数据库中ABC的值事务T8140,50,302read(A)3Sum:=(A)4read(B)5Sum:=Sum+B6UNLOCK(A)407LOCK X(A)8read(A)9C:=C-101040,50,20write(C)11LOCK X(A)12A:=A+1013write(A)1450,50,20COMMIT15read(C)16Sum:=Sum+C5043.时间事务T7数据库中ABC的值事务T8140,50,302LOCK S(A)3read(A)4Sum:=A5LOCK S(B)6Read(B)407Sum:=Sum+BLOCK X(C)8read(C)9C:=C-1010wait(C)1140,50,20LOCK X(A)12wait13wait14wait15LOCK S(C)wait16wait50wait44.nPS协议的主要内容如下:任何要更新记录R的操作必须先执行LOCK(R)操作,以获得对该记录寻址的能力并对它取得S封锁。如果未获准S封锁,那么这个事务进入等待状态,一直到获准S封锁,事务才继续做下去。n当事务获准对记录R的S封锁后,在记录R的修改前必须把S的封锁升级为X封锁。n像PXC协议一样,也有一个PSC协议。PSC协议是在PS协议基础上再增加一条规则:nS封锁要保持到事务终点。封锁要保持到事务终点。45.举例:时间更新事务T1更新事务T21LOCK S(A)2LOCK S(A)3 read(A)4read(A)5A:=A-106A:=A*27UPGRADE(A)8waitUPGRADE(A)9waitwait在第9步发生死锁,此时系统挑一个事务牺牲,撤销并恢复到初始状态。46.7.2.4 共享型封锁(S封锁)X锁S锁只允许一个事务独锁数据允许多个事务并发锁某一数据获准X锁的事务可以修改数据获准S锁的事务只能读数据,但不能修改数据事务的并发度低事务的并发度高,但增加了死锁的可能性X锁必须保留到事务终点根据需要,可随时解除S锁解决“丢失更新”问题解决“读不一致”问题47.7.2.5两段封锁法n(Two-phase Locking)n内容:在对任何数据进行读写之前,事务首先要获得对该数据的封锁。在释放一个封锁之后,事务不再获得任何其它封锁。即事务分为两个阶段:生长阶段:获得封锁。收缩阶段:释放封锁。n定理:若所有事务均遵从两段锁协议,则这些事务的所有并行调度都是可串行化的。48.n示例lock-S(A)lock-S(B)lock-X(C)unlock(A)unlock(C)unlock(B)遵从两段锁协议。lock-S(A)unlock-S(A)lock-S(B)lock-X(C)unlock(C)unlock(B)不遵从两段锁协议。n遵从两段锁协议仍可能发生死锁lock-S(A);lock-X(B);wait.lock-S(B)lock-X(A)wait T1 T2 T1:lock-S(A)lock-S(B)unlock(A)unlock(B)T2:lock-S(A)lock-S(B)unlock(A)unlock(B)49.2、两段封锁法和可串行化调度的关系n如果所有事务都是两段式的,那么它们的并发调度是可串行化的。两段式封锁是可串行化的充分条件,但不是必要条件。50.举例:时间T9(H:=F+1)数据库中FGH的值T10(F:=G+1)10,0,02LOCK S(F)3read(F)4ATEMP:=F5UNLOCK(F)6LOCK S(G)7read(G)8BTEMP:=G9LOCK X(F)10F:=BTEMP+111Write(F)121,0,0COMMIT13LOCK X(H)14H:=ATEMP+115write(H)16COMMIT1,0,151.时间T9(H:=F+1)数据库中FGH的值T10(F:=G+1)10,0,02LOCK S(F)3read(F)4ATEMP:=F5UNLOCK(F)6LOCK S(H)7read(H)8CTEMP:=H9LOCK X(F)10F:=CTEMP+111Write(F)121,0,0COMMIT13LOCK X(H)14H:=ATEMP+115write(H)16COMMIT1,0,152.7.3 数据库的完整性n数据库中的完整性是指数据的正确性和相容性n完整性约束保证了授权用户对数据库的修改不会导致数据一致性的破坏n一致性是指满足所有已知的完整性约束53.7.3 数据库的完整性n在SQL中,表达完整性约束的规则有主键约束、外键约束、属性值约束和全局约束等。54.n1、主键约束n若属性若属性A是基本关系是基本关系R的主属性,则属性的主属性,则属性A不能不能取空值。取空值。(主码不能为主码不能为Null)n1)主键子句)主键子句nPrimary Key(A1,A2,Ai)n2)主键短语)主键短语nS#CHAR(4)Primary Key 7.3.3 数据库的完整性约束55.n2、外键约束、外键约束n外键外键(Foreign Key)及参照关系:及参照关系:n设设F 是基本关系是基本关系R 的一个或一组属性,但不的一个或一组属性,但不是是R 的键。的键。如果如果F 与基本关系与基本关系S 的主键的主键KS 相相对应,则称对应,则称F 是是R 的外键。的外键。并称并称R 为参照关为参照关系系(从表从表),S 为被参照关系为被参照关系(主表主表)。nR和和S不一定是不同的关系不一定是不同的关系7.3.3 数据库的完整性约束56.n若属性若属性 F 是是 R 的外键,它与的外键,它与 S 的主键的主键 KS 相对应,则相对应,则 R 中每个元组在中每个元组在 F 上的值必上的值必须为:须为:或者取空值;或者等于或者取空值;或者等于 S 中某个元中某个元组的主键值组的主键值。(不能含有无匹配的外键不能含有无匹配的外键)nForeign Key(F1,F2,Fi)References S7.3.3 数据库的完整性约束57.58.n主键与外键主键与外键n从表的外键与主表的主键相匹配从表的外键与主表的主键相匹配n必须具有相同的数据类型必须具有相同的数据类型nchar(n)与与 varchar(n)是不同的类型是不同的类型n可以不同名可以不同名n主键必须为主键必须为 not nulln外键可以为外键可以为 null(视在表中的角色而定视在表中的角色而定)完整性约束59.完整性约束60.n数据更新,可能引起参照完整性的违约数据更新,可能引起参照完整性的违约n依赖关系依赖关系n在依赖关系中插入外键值在依赖关系中插入外键值n在依赖关系中修改外键值在依赖关系中修改外键值n基本关系基本关系n在基本关系中修改主键(已被参照)在基本关系中修改主键(已被参照)n在基本关系中删除元组(已被参照)在基本关系中删除元组(已被参照)完整性约束参照违例61.1、删除基本关系元组时的考虑nRESCTICT 方式:只有当依赖关系中没有一个外键值与要删除的基本关系中主键值相同时,系统才能执行删除。nCASCADE:将依赖关系中所有外键值与基本关系中要删除的主键值相对应的原则一起删除。nSET NULL:删除基本元组时,将依赖关系中所有与基本关系中被删除主键值相对应的外键值置为空。62.、修改基本关系元组时的考虑nRESCTICT 方式:只有当依赖关系中没有一个外键值与要修改的基本关系中主键值相同时,系统才能执行删除。nCASCADE:将依赖关系中所有外键值与基本关系中要修改的主键值相对应的原则一起删除。nSET NULL:修改基本关系的主键值时,将依赖关系中所有与基本关系中要修改的主键值相对应的外键值置为空值。63.Create Domain stu_name varchar(20)Create Table Student(sno char(10),sname stu_name,sage smallint,ssex char(1),sdept char(2),Primary Key(sno)Create Table Course(cno char(10),cname char(30),credit smallint,Primary Key(cno)完整性约束DDL64.Create Table SC(sno char(10),cno char(10),grade smallint,Primary Key(sno,cno),Foreign Key(sno)References Studenton delete cascadeon update cascade,Foreign Key(cno)References Courseon delete cascadeon update cascade)完整性约束DDL65.n、非空值约束n如果我们要求某个属性的值不允许为空值时,那么可在属性定义属性后加上关键字:“NOT NULL”n、针对属性的检查子句(CHECK子句)n、针对域作约束n必须使CHECK 表达式为真Create Domain stu_age integer Check(col=15 and col=15 AND(SEX=M AND AGE=25)OR(SEX=F AND AGE=24)68.)基于元组的检查子句问题:CREATE TABLE SC(S#CHAR(4),C#CHAR(4),GRADE SMALLINT,PRIMARY KEY(S#,C#),CHECK(S#IN(SELECT S#FROM S),CHECK(C#IN(SELECT C#FROM C)在关系S中删除一个元组,这个操作将与关系SC中的检查子句无关。如果关系SC中存在被删学生的成绩元组时,关系SC将违反检查子句中的条件。69.、断言(Assertion)n断言,全局约束n在整个数据库(多个表之间)要求满足的校验n凌驾于所有表之上nAssertion的声明Create Assertion Check()70.不允许男生选修zhang老师的课。CREATE ASSERTION ASSE1 CHECKCREATE ASSERTION ASSE1 CHECK(NOT EXISTS(SELECT*FROM SC WHERE C#IN(SELECT C#FROM C WEHRE TEACHER=zhang)AND S#IN(SELECT S#FROM S WHERE SEX=M)、断言(Assertion)71.n规定学生的选课不得超过50门Create Assertion sc_limitedCheck(Not exists(Select sno,count(*)From SCGroup By snoHaving count(*)50)Create Table SC(,Check(Not exists(Select sno,count(*)From SCGroup By sno Having count(*)50)、断言(Assertion)72.n)约束的命名:为了便于对约束进行操作,需要为每个)约束的命名:为了便于对约束进行操作,需要为每个约束起个名字。约束起个名字。举例:举例:nS#CHAR(4)CONSTRAINT S_PK PRIMARY KEYnAGE SMALLINT CONSTRAINT S_CHECK CHECK(AGE=15 AND AGE=15 AND VALUE=15 AND AGE=15 AND VALUE=35)76.4)断言的撤消nDROP ASSERTION ASSE1,ASSE277.练习:DEPT(DNO,DNAME,MGR-NO)T(TNO,TNAME,AGE,SEX,SALARY,DNO)TC(TNO,CNO,TEXTBOOK)C(CNO,CNAME,DNO)完成下面完整性约束:、编号小于D8的教师年龄在间,其他系的教师年龄在间。78.nCHECK(DNO=D8 AND AGE BETWEEN 20 AND 60)、编号小于D8的教师年龄在间,其他系的教师年龄在间。79.2、每个系教师的平均工资不能低于元CREATE ASSERTION ASSE1 CHECK(2000=(SELECT AVG(SALARY)FROM TGROUP BY DNO)DEPT(DNO,DNAME,MGR-NO)T(TNO,TNAME,AGE,SEX,SALARY,DNO)TC(TNO,CNO,TEXTBOOK)C(CNO,CNAME,DNO)80.2、不允许男教师担任“艺术体操课程CREATE ASSERTION ASSE2 CHECK(NOT EXISTS(SELECT*FROM TC WHERE TNO IN(SELECT TNO FROM T WHERE SEX=M)AND CNO IN(SELECT CNO FROM C WHERE CNAME=艺术体操)DEPT(DNO,DNAME,MGR-NO)T(TNO,TNAME,AGE,SEX,SALARY,DNO)TC(TNO,CNO,TEXTBOOK)C(CNO,CNAME,DNO)81.7.4 数据库的安全性n7.4.1 安全性级别n安全性:n是指保护数据库,以防止不合法的使用所造成的数据泄露、更改或破坏。n数据库系统中大量数据集中存放,许多用户直接共享。n系统安全保护措施是否有效是数据库系统的主要性能指标之一。n从数据库角度:n自然环境安全性:防治自然环境的破坏n系统安全性:使指控制用户不得作任何未经授权的事。系统安全性:使指控制用户不得作任何未经授权的事。82.7.4.1 安全性级别n为了保护数据库,防止恶意的滥用,可以从以下几方面设置各种安全措施:n1、环境级n2、职员级n3、OS级n4、网络级n5、数据库系统级83.7.4.2 权限n用户(或应用程序)实用数据库的方式称为权限,有下面几种:n读权限n插入权限n修改权限n删除权限n在具体实用时,可根据需要授给用户上述权限中的一个或多个,也可以不授予任何一个权限。84.7.4.2 权限n除了访问数据的权限,系统还提供给用户修改数据库模式的权限:1、索引权限:允许用户创建和删除数据库模式的权限2、资源权限:允许用创建新的关系。3、修改权限:允许用户在关系结构中加入或删除属性。4、撤消权限:允许用户撤消关系。85.7.4.3 权限的转授和回收n数据库系统允许用户把已获得的权限再转授给其它用户,也允许把已授给其它用户的权限再回收上来,但应保证转授出去的权限能收得回来。n用权限图来表示权限转让关系。86.7.4.3 权限的转授和回收在权限图中,结点是用户,用户为DBA的结点称为根结点。图中一条有向边UiUj表示用户Ui把某权限转授给用户Uj。87.7.4.3 权限的转授和回收 表示DBA把某权限授给用户U1,U2,U3。U1又把权限转授给用户U4和U5,U2把权限转授给U5。88.7.4.3 权限的转授和回收 如果如果DBADBA决定收回决定收回用户用户U1U1的权限,的权限,则则U4U4的权限也被的权限也被回收。由于回收。由于U5U5的的权限是从权限是从U1U1和和U2U2两处得到,因此两处得到,因此回收回收U1U1的权限时,的权限时,还不能回收还不能回收U5U5的的权限。只有同时权限。只有同时也回收也回收U2U2的权限的权限时,时,U5U5的权限才的权限才回收。回收。89.7.4.4 SQL中的安全性控制nSQLSQL中的两个功能提供了安全性:一是视图机制,它可以用来中的两个功能提供了安全性:一是视图机制,它可以用来对无权用户屏蔽数据。二是授权子系统,它允许有特定存储对无权用户屏蔽数据。二是授权子系统,它允许有特定存储权的用户有选择地和动态地把这些权限授予其它用户。权的用户有选择地和动态地把这些权限授予其它用户。(1 1)视图)视图n视图是从一个护几个基本表导出的表,某个用户可以定义若干视图。它是虚表,数据库中只存放了它的定义。n视图机制使系统有三个优点:数据安全性、数据独立性和操作简便性。n对于某个用户,只能接触到提供给它的视图所定义的数据部分,不允许该用户操作的数据将被隔离在该视图所能引用的数据之外。90.7.4.4 SQL中的安全性控制n2、SQL2中的用户权限及其操作n1 1)用户权限:)用户权限:n用户权限是指不同的用户对不同的数据对象允许执行的操作权限nSQL2定义了六种权限供用户选择使用:SELECT INSERTDELETE UPDATEREFERENCES USAGE91.2、SQL2中的用户权限及其操作n2 2)授权语句:)授权语句:n对于存取权限的定义称为授权.这些定义经过编译后存储在数据字典中,当用户发出存取数据库的操作请求后,DBMS查找数据字典,然后根据用户存取权限进性合法权检查。n授予其它用户使用关系和视图的权限的语句格式为:nGRANT ON TO WITH GRANT OPTION92.2、SQL2中的用户权限及其操作n3 3)回收语句)回收语句n如果用户Ui已经将权限P授予其它用户,那么用户Ui也可以用回收语句REVOKE从其他用户回收权限P。回收语句格式如下:nREVOKE ON FROM RESTRICT|CASCADEn语句中带CASCADE,表示回收权限时要引起连锁回收。即用户Ui从用户Uj回收权限时,要把用户Uj转授出去的同样的权限同时回收。如果语句中带RESTRICT,则当不存在连锁回收现象时,才能回收权限,否则系统拒绝回收。93.7.4.5 数据加密法n数据库中的数据以密码形式存放,使用时由用户设计的解码程序将其转换成用户可读的数据。这样,数据库中的数据即使被窃取,也只能是一些无法辨认的代码。n举例:n设源文是CHEMIST AND PHYSICIST,加密键是LIGHT,具体的加密算法操作步骤为:n1、把源文分成等长的块,每块的长度和加密键的长度一样,空格用b表示:nCHEMI STbAN DbPHY SICIS Tbbbbn2、对源文的每个字符用0-26中一个整数替换,b00,A=01,Z=26:n0308051309 1920000114 0400160825 1909030919 n200000000094.7.4.5 数据加密法3、对LIGHT作同样的替换,替换为1209078204、对每块源文的每个字符的整数码和加密键相应字符的整数码以27为模相加。0308051309120907082019200001141209070820040016082512090708201909030919120907082020000000001209070820151712210204020709071609231618041810171205090708205、再用相应字符代替上一步中的整数码,得到密码文:OQLUB DBGIG PIWPR DRJQL EIGHT95.7.4.5 数据加密法 举例:设p3,q5,则r15,(p1)(q1)8,设e11,从(d11)mod 81求得d3。则加密键e11,解密键d3。n如果源文p13,那么密文从可从下式获得:nC=pe mod r=1311 mod 15=1792160394037 mod 15=7n从密码文7可用下式求得源文p:nP=cd mod r=73 mod 15=343 mod 15=1396.7.4.6 自然环境的安全性n自然环境的安全性主要指数据库系统的设备、硬件和环境的安全性。97.个人观点供参考,欢迎讨论!
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!