




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第六章數(shù)據(jù)庫保護1事務數(shù)據(jù)庫恢復并發(fā)控制數(shù)據(jù)庫安全性數(shù)據(jù)庫完整性主要內容26.1事務事務:是一個不可分割的操作序列,該操作序列要么全做,要么全不做。事務和程序是兩個概念。一個程序中可以包含多個事務。3隱式控制:由DBMS按缺省規(guī)定自動劃分。顯式控制:
BEGINTRANSACTION
[事務開始]
COMMIT
[事務提交,重新改寫數(shù)據(jù)庫]
ROLLBACK
[事務提交,發(fā)生錯誤撤消]一、事務的概念4BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘計算機’)COMMIT5BEGINTRANSACTION
讀賬戶甲的余額Balance;Balance=Balance-AmountIf(Balance<0)Then{打印’金額不足,不能轉賬’;Rollback;Else{讀賬戶乙的余額Balance1;Balance1=Balance1+Amount;
寫回Balance1;commint;}6原子性(Atomicity)
事務是不可分割的工作單位一致性(Consistency)事務提交后,數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。隔離性(Isolation)在事務完成之前,它對數(shù)據(jù)庫產(chǎn)生的結果不能被其它事務引用。持續(xù)性(Durability)一旦事務執(zhí)行成功(提交),其對數(shù)據(jù)產(chǎn)生的效果永久有效。
二、事務的特性(ACID)7破壞ACID特性的因素(1)多個事務并行運行時,不同事務交叉執(zhí)行(2)事務在運行過程中被強行停止。8丟失修改不可重復讀讀“臟”數(shù)據(jù)并發(fā)操作引起的問題9丟失修改10不可重復讀11讀臟數(shù)據(jù)事務T1事務T2
讀出C=100C=C*2WRITE(C)
讀出C=200
ROLLBACKC恢復為100126.2
數(shù)據(jù)庫恢復數(shù)據(jù)庫的恢復:
把數(shù)據(jù)庫從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)。3.介質故障4.計算機病毒6.2.1故障的類型1.事務故障2.系統(tǒng)故障軟故障硬故障131.事務故障
是事務內部的故障(不需要重新啟動系統(tǒng))。預期故障:通過在程序中加判斷條件來實現(xiàn)非預期的故障:如由于死鎖而被迫撤銷的事務等142.系統(tǒng)故障(需要系統(tǒng)重新啟動)故障類型:硬件錯誤、操作系統(tǒng)故障、DBMS代碼錯誤、突然停電等。特點:故障影響正在運行的所有事務,但不破壞數(shù)據(jù)庫。可能會造成數(shù)據(jù)庫中數(shù)據(jù)的不一致性。其原因:故障發(fā)生時,尚未完成的事務的結果可能已送入到物理數(shù)據(jù)庫。故障發(fā)生時,有些已完成的事務所做的數(shù)據(jù)更改還在緩沖區(qū)中,尚未寫到物理數(shù)據(jù)庫中。153.介質故障
是指存儲數(shù)據(jù)庫的磁盤發(fā)生故障。原因:可能是磁盤損壞、磁頭碰撞、瞬時強磁場干擾等。特點:使數(shù)據(jù)庫受到破環(huán)。雖然可能性小,但破壞性最大。4.計算機病毒人為的故障或破壞,是一些惡作劇者研制的一種計算機程序。166.2.2數(shù)據(jù)庫恢復的實現(xiàn)技術兩個關鍵問題:
1如何建立冗余數(shù)據(jù)
2如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復冗余技術171.通過數(shù)據(jù)轉儲建立冗余轉儲:定期將DB復制到其它外存保存(副本)轉儲類型:
靜態(tài)轉儲
能保證副本與數(shù)據(jù)庫的一致性;但是效率太低。
動態(tài)轉儲
效率高,但不能保證副本與數(shù)據(jù)庫的一致性。轉儲運行事務故障發(fā)生點TaTb轉儲恢復重新運行事務裝入后備副本18轉儲方式海量轉儲:每次轉儲數(shù)據(jù)庫中的全部數(shù)據(jù)增量轉儲:每次轉儲上一次轉儲后更新過的數(shù)據(jù)
轉儲狀態(tài)動態(tài)轉儲靜態(tài)轉儲
轉儲方式海量轉儲動態(tài)海量轉儲靜態(tài)海量轉儲增量轉儲動態(tài)增量轉儲靜態(tài)增量轉儲192.通過日志文件建立冗余日志文件記錄對數(shù)據(jù)庫每次更新活動的文件。每次更新活動的內容作為一個“記錄”寫入日志文件。主要內容包括:事務標識(標明是哪個事務)操作類型及對象(插入、刪除、修改,記錄內部標識)更新前后的值20事務標識操作類型對象標識前像后像日志文件的格式
事務T開始,日志記錄為(T,START…)事務T修改對象A,日志記錄為(T,UPDATE,A,前像,后
像)
事務T插入對象A,日志記錄為(T,INSERT,A,后像)
事務T刪除對象A,日志記錄為(T,DELETE,A,前像)
事務T提交,日志記錄為(T,COMMIT…)
事務T回滾,日志記錄為(T,ROLLBACK…)21日志文件的作用事務故障恢復和系統(tǒng)故障恢復必須用日志文件正常運行運行事務登記日志文件TaTb轉儲介質故障利用日志文件恢復TaTb重裝后備副本在動態(tài)轉儲方式中必須建立日志文件,后備副本和日志文件結合才能有效恢復數(shù)據(jù)庫在靜態(tài)轉儲方式中,也可以建立日志文件22登記日志文件要遵循兩條原則:
登記的次序必須嚴格按照并發(fā)事務執(zhí)行的次序
必須先寫日志,后寫數(shù)據(jù)庫,并且日志文件和數(shù)據(jù)庫文件不能和數(shù)據(jù)庫文件放在同一個磁盤上。236.2.3.事務恢復策略1.事務故障的恢復恢復策略:反向掃描日志文件,將日志中更新前的數(shù)據(jù)寫回到數(shù)據(jù)庫中,直至事務的開始標志。事務T修改對象A,日志記錄為(T,UPDATE,A,前像,后像)
事務T插入對象A,日志記錄為(T,INSERT,A,后像)
事務T刪除對象A,日志記錄為(T,DELETE,A,前像246.2.3.事務恢復策略2、系統(tǒng)故障的恢復恢復策略:撤銷故障發(fā)生時未完成的事務,重做已完成的事務。方法:(1)正向掃描日志文件;找出故障發(fā)生前已經(jīng)提交的事務,將該事務放入REDO隊列;找出故障發(fā)生前未提交的事務,將其放入UNDO隊列。(2)對UNDO隊列做撤銷操作(3)對REDO隊列做重做操作253、介質故障的恢復恢復策略:利用數(shù)據(jù)庫副本和日志文件副本進行恢復。(需要DBA介入)6.2.3.事務恢復策略正常運行運行事務登記日志文件TaTb轉儲介質故障利用日志文件恢復TaTb重裝后備副本266.2.4具有檢查點的恢復策略Ci檢查點記錄地址T1D1T2D2重新開始文件日志文件檢查點記錄日志文件27具有檢查點時,動態(tài)維護數(shù)據(jù)庫日志的方法
將當前日志緩沖區(qū)中的日志記錄寫入磁盤的日志文件
在日志文件中加入一個檢查點記錄
將當前數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫
將檢查點記錄在日志文件中的地址寫入重新開始文件28Tc(檢查點)Tf(系統(tǒng)故障)T1T2T3T4T5REDOREDOUNDOUNDO29系統(tǒng)使用檢查點進行恢復的步驟
從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,找到最后一個檢查點
由該檢查點找到檢查點建立時刻所有的動態(tài)事務清單
從檢查點正向掃描日志文件
如有新開始的事務,放入UNDO隊列
如有提交的事務,將該事務從UNDO放入REDO隊列
執(zhí)行UNDO和REDO處理3031本次課程總結1.事務的概念,ACID特性2.數(shù)據(jù)庫恢復,故障類型3.數(shù)據(jù)庫恢復技術,轉儲和日志4.數(shù)據(jù)庫恢復策略32上次課程回顧1.事務的概念,ACID特性2.數(shù)據(jù)庫恢復,故障類型3.數(shù)據(jù)庫恢復技術,轉儲和日志4.數(shù)據(jù)庫恢復策略6.3并發(fā)控制丟失修改不可重復讀讀“臟”數(shù)據(jù)6.3.1并發(fā)操作引發(fā)的問題33丟失修改34不可重復讀35三種不可重復讀讀不一致T1讀A,T2修改A,T1讀A刪除幻影T1讀取元組集合A,T2刪除部分元組,T1讀取元組集合A插入幻影T1讀取元組集合A,T2插入一些元組,T1讀取元組集合A不可重復讀讀臟數(shù)據(jù)事務T1事務T2
讀出C=100C=C*2WRITE(C)
讀出C=200
ROLLBACKC恢復為10037并發(fā)控制的任務2.保證事務的隔離性3.保證事務的一致性1.對并發(fā)操作進行正確調度思考:事務的原子性和持久性由DBMS的哪個子系統(tǒng)進行維護?386.3.2調度及其可串行化1、事務的表示方法:
Ri(X)表示事務Ti的讀X操作
Wi(X)表示事務Ti的寫X操作例:
事務T1(Read(B);A=B+1;write(A)),事務T2(Read(A);B=A+1;write(B))可以表示成:
T1:R1(B)W1(A)T2:R2(A)W2(B)392、沖突操作定義:如果兩個操作來自不同的事務,它們對同一數(shù)據(jù)單位進行操作,并且其中至少有一個是寫操作,則稱這兩個操作是相互沖突的或沖突操作。例:事務T0:W0(X)W0(Y)W0(Z)
事務T1:R1(X)R1(Z)W1(X)
在這兩個事務中有哪些沖突操作?R1(X)與W0(X)
W1(X)與W0(X)R1(Z)與W0(Z)403串行調度調度S中的任意兩個事務Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,則稱S為串行調度。串行調度事務執(zhí)行的結果總是正確的.串行調度不能夠充分利用系統(tǒng)資源.414并發(fā)調度如果在一個調度中,各個事務交叉地執(zhí)行,這個調度稱為并發(fā)調度。5可串行化的調度如果一個事務集的并發(fā)調度與某一串行調度是等價的,則稱該并發(fā)調度是可串行化的。可串行化是作為并發(fā)調度正確與否的判定準則!42T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調度1T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調度2Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)B:=B+5Write(B)并發(fā)調度1Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)并發(fā)調度2B:=B+5Write(B)A=10B=10A=5B=10A=5B=10A=5B=10A=5B=15436沖突可串行化一個調度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務不沖突操作的次序得到另一個調度Sc’,如果Sc’是串行的稱調度Sc為沖突可串行化調度。一個調度是沖突可串行化的,一定是可串行化調度,反之則不成立!44調度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)判斷Sc1是否是沖突可串行化的調度。首先把w2(A)和r1(B)w1(B)交換,得到r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)和r1(B)w1(B)交換,得到Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于串行調度T1T2,所以Sc1是沖突可串行化的例題45沖突可串行化的判定方法:構造前驅圖設S是若干事務{T1,T2,…,Tn}的一個調度,S的前驅圖G(V,E)是一個有向圖,其構成規(guī)則如下:1)V是由所有參加調度的事務構成的節(jié)點2)E是圖中的一條有向邊,如果Oi和Oj是沖突操作,且Oi先于Oj執(zhí)行,則在圖中有一條邊Ti→Tj。
事務Ti讀x在事務Tj寫x之前
事務Ti寫x在事務Tj讀x之前
事務Ti寫x在事務Tj寫x之前若一個調度的前趨圖無環(huán),則該調度是調度可串行化的46T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發(fā)調度ST3例題47獲得調度S的一個等價的串行調度由于圖中無回路,必有一個節(jié)點無入弧,將這個節(jié)點及其相連的弧刪去,并把該節(jié)點存入先進先出的隊列中。對剩下的圖做同樣的處理,直至所有節(jié)點移入隊列中。按照隊列中次序串行安排各事務的執(zhí)行,就可以得到一個等價的串行調度前驅圖的拓撲排序48T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發(fā)調度ST3T1T2T3T4T3T2T4T2T449有3個事務的一個調度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調度是沖突可串行化的么?練習1交換r1(A)和w3(B)r2(B)r2(A)w2(B)R3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)等價于串行調度T3T2T150有3個事務的一個調度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調度是沖突可串行化的么?練習1(1)找出沖突操作R2(A)和w1(A)R3(B)和w2(B)T2T1T3T2W3(B)和r2(B)W3(B)和w2(B)W3(B)和r1(B)W2(B)和r1(B)T3T2T3T2T3T1T2T151(2)得到并發(fā)操作的前趨圖T2T1T3(3)由前趨圖判斷是否可串行化,若可串行化,給出等價的串行化調度T3T2T152沖突可串行化調度是可串行化調度的充分條件,不是必要條件!調度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)調度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)53設T1,T2是如下的兩個事務
T1:A:=A*B+2 T2:B:=A*2設A的初值為2,B的初值為4:(1)若這兩個事務允許并發(fā)執(zhí)行,討論他們可能實施的調度,請一一列舉并求每種調度的結果(2)試給出一個可串行化調度,并給出執(zhí)行結果練習254(1)所有的串行調度習題2T1T2T2T1T1:A:=A*B+2T2:B:=A*2設A的初值為2,B的初值為4A=10,B=20A=10,B=4(2)試給出一個可串行化調度,并給出執(zhí)行結果5556調整次序注意:(1)不能改變沖突操作的先后次序(2)同一事務的讀寫先后順序不能改變T1T2:R1(A)R1(B)W1(A)R2(A)W2(B)無法改變順序T2T1:R2(A)W2(B)R1(A)R1(B)W1(A)可串行化調度:R2(A)
R1(A)W2(B)R1(B)W1(A)576.3.3事務的隔離性級別事務的隔離性事務在并發(fā)執(zhí)行時應該相互獨立互不干擾。隔離性與并發(fā)性能是一對矛盾,在實踐中有時候會放松隔離性的要求,通過“隔離性級別”來權衡事務的隔離性和并發(fā)能力。事務的隔離性級別又稱事務的一致性級別,是一個事務必須與其它事務實現(xiàn)隔離的程度,是事務可接受的數(shù)據(jù)不一致程度。586.3.3事務的隔離性級別SQL92定義了四種隔離性級別讀未提交(Readuncommitted)最低的隔離級別,一個事務可以讀到另外一個事務未提交的數(shù)據(jù),不允許丟失修改,接受讀臟數(shù)據(jù)和不可重復讀現(xiàn)象。讀已提交(Readcommitted)若事務還沒提交,其他事務不能讀取該事務正在修改的數(shù)據(jù)。不允許丟失修改和讀臟數(shù)據(jù),接受不可重復讀現(xiàn)象??芍貜妥x(Repeatableread)事務多次讀取同一數(shù)據(jù)對象的結果一致。不允許丟失修改、讀臟數(shù)據(jù)和讀不一致,接受幻影讀現(xiàn)象??纱谢⊿erializable)最高級別的隔離性,保證可串行化,不允許丟失修改、讀臟數(shù)據(jù)、讀不一致以及幻影讀現(xiàn)象的發(fā)生。6.3.4封鎖技術封鎖:是實現(xiàn)并發(fā)控制的一種機制。所謂封鎖,就是事務T在對某個數(shù)據(jù)對象操作之前,先對其加鎖。排它鎖(X鎖,寫鎖)若事務T對數(shù)據(jù)對象A加上排它鎖,則只允許T讀取和修改A,不允許其他任何事務再對A加鎖,直到T釋放A上的X鎖。2.共享鎖(S鎖,讀鎖)若事務T對數(shù)據(jù)對象A加上共享鎖,則事務T可以讀A但不能修改A,其他事務只能對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。。593.封鎖協(xié)議封鎖級別加鎖放鎖一級事務T在修改數(shù)據(jù)A之前必須先對其加X鎖事務結束才釋放X鎖二級一級封鎖協(xié)議加上事務T在讀取數(shù)據(jù)A之前必須對其加S鎖讀完后即可釋放S鎖三級一級封鎖協(xié)議加上事務T在讀取數(shù)據(jù)A之前必須對其加S鎖事務結束才釋放S鎖60(1)一級封鎖協(xié)議T1T2XlockA讀A=16XlockA等待等待A←A-1等待寫回A=15等待commit等待UnlockAXlockA讀A=15A←A-1寫回A=14commitUnlockAT1T2讀A=16A←A-1寫回A=15A←A-1讀A=16寫回A=15(a)丟失修改T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復讀讀B=100寫回B=200讀A=50求和=250讀B=200ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數(shù)據(jù)寫回D=205C←C*2解決丟失修改問題61(2)二級封鎖協(xié)議ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數(shù)據(jù)寫回D=205C←C*2解決丟失修改和讀臟數(shù)據(jù)問題ROOLBACKT1T2XlockCSlockC等待等待等待等待SlockCcommitUnlockC讀C=100寫回C=200C←C*2UnlockC讀C=200D=C+5寫回D=205T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復讀讀B=100寫回B=200讀A=50求和=250讀B=20062(3)三級封鎖協(xié)議T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復讀讀B=100寫回B=200讀A=50求和=250讀B=200解決三種并發(fā)操作引起的問題讀A=50讀B=100求和=150讀A=50求和=150讀B=100T1T2SlockASlockBXlockB等待等待等待等待等待等待等待XlockB讀B=100B=B*2寫回B=200commitUnlockBUlockBUlockA63
操作級別X鎖S鎖一致性保證操作結束釋放事務結束釋放操作結束釋放事務結束釋放不丟失修改不讀臟數(shù)據(jù)可重復讀一級封鎖協(xié)議二級封鎖協(xié)議三級封鎖協(xié)議√√√√√√√√√√√64兩階段協(xié)議(Two-PhaseLockingProtocol,2PL協(xié)議)某一事務在對數(shù)據(jù)進行讀、寫之前,先要申請并獲得對該數(shù)據(jù)的封鎖。在釋放一個封鎖之后,事務不再申請和獲得任何其它封鎖。T1:Lock(A)Lock(B)Lock(C)Unlock(B)Ulock(C)Ulock(A)T1:Lock(A)ULock(A)Lock(B)lock(C)Ulock(C)Ulock(B)√ⅹ擴展階段釋放階段(4)兩階段協(xié)議65定理6.1:任何一個遵從2PL協(xié)議的調度都是可串行化的。說明1:事務遵守2PL協(xié)議是可串行化調度的充分條件,而不是必要條件。說明2:事務遵守2PL協(xié)議可達到第3級封鎖協(xié)議的要求。66T1:Slock(X),Read(X),Ulock(X)T2:Slock(Y),Read(Y),Unlock(Y),Xlock(X),Write(X),Unlock(X)T3:Xlock(Y),Write(Y),Unlock(Y)T1T2Slock(X)Read(X)Ulock(X)Slock(Y)Read(Y)Ulock(Y)Slock(X)Write(X)Ulock(X)Slock(Y)write(Y)Ulock(Y)T3T1T2T3T1T2T3不遵守2PL協(xié)議的可串行化調度6768設T1,T2是如下的三個事務
T1:A:=A*B+2 T2:B:=A*2基于兩段鎖協(xié)議,試給出一個可串行化調度設A的初值為2,B的初值為4A=10B=4T1T2Ulock(A)Slock(A)Read(A)Ulock(A)Xlock(B)Write(B)Ulock(B)Slock(B)等待等待Slock(B)Read(B)Xlock(A)Write(A)Ulock(B)等待6.3.5封鎖導致的問題1.死鎖:事務T1已經(jīng)封鎖A,而又想申請封鎖B,而此時事務T2已經(jīng)封鎖B,而又想申請封鎖A,這樣,T1等待T2釋放B,而T2等待T1釋放A,使得T1、T2均無法繼續(xù)執(zhí)行下去,這種情況稱為死鎖。LOCKA…LOCKB…LOCKB…LOCKA…等待等待T1T269死鎖檢測*超時法:事務的等待超過了規(guī)定的時限*等待圖法:檢測等待圖中是否有回路存在。死鎖預防和死鎖檢測702.活鎖:事務T1,T2申請數(shù)據(jù)對象A,T1先給A加鎖,T1釋放A上的鎖后,事務T3又給A加鎖,T2等待,這樣,A始終被其他事務封鎖,事務T2可能長時間得不到A,這種情況稱為活鎖。避免活鎖的方法:采用先來先服務的原則。7172本次課程總結1.并發(fā)操作引發(fā)的問題2.調度及其可串行化3.封鎖技術上次課程總結1.并發(fā)操作引發(fā)的問題2.調度及其可串行化3.封鎖技術736.4數(shù)據(jù)庫安全性數(shù)據(jù)庫的安全性:就是防止非法用戶使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞,以達到保護數(shù)據(jù)庫的目的。
網(wǎng)絡安全服務器安全
用戶安全
應用程序與服務安全
數(shù)據(jù)安全計算機系統(tǒng)的安全性問題74計算機系統(tǒng)安全標準TCSEC標準CC標準安全級別
定義A1驗證設計(VerifiedDesign)B3安全域(SecurityDomains)B2結構化保護(StructuralProtection)B1標記安全保護(LabeledSecurityProtection)C2受控的存取保護(ControlledAccessProtection)C1自主安全保護(DiscretionarySecurityProtection)D最小保護(MinimalProtection)可靠性逐漸增高向下兼容75B2以上的系統(tǒng)還處于理論研究階段應用多限于一些特殊的部門,如軍隊等美國正在大力發(fā)展安全產(chǎn)品,試圖將目前僅限于少數(shù)領域應用的B2安全級別下放到商業(yè)應用中來,并逐步成為新的商業(yè)標準76計算機系統(tǒng)中,安全措施是一級一級層層設置77
用戶標識與鑒別
存取控制
視圖機制
數(shù)據(jù)加密
審計數(shù)據(jù)庫系統(tǒng)的安全措施786.4.1用戶標識與鑒別用戶標識與鑒別是系統(tǒng)提供的最外層安全保護措施。
DBA為數(shù)據(jù)庫用戶創(chuàng)建用戶賬號和密碼。用戶名和口令易被竊取可以重復多次。791.存取控制機制組成定義用戶權限合法權限檢查6.4.2存取控制2.用戶權限定義和合法權檢查機制一起組成了DBMS
的安全子系統(tǒng)80常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)C2級靈活強制存取控制(MandatoryAccessControl,簡稱MAC)B1級嚴格81自主存取控制定義存取權限稱為授權
通過SQL的GRANT
語句和REVOKE語句實現(xiàn)
完成的功能:定義用戶可以在哪些數(shù)據(jù)庫對
象上進行哪些類型的操作82GRANTGRANT語句的一般格式:
GRANT<權限>[,<權限>]...[ON<對象類型><對象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];將對指定操作對象的指定操作權限授予指定的用戶83發(fā)出GRANTDBA
數(shù)據(jù)庫對象擁有者
擁有此權限的用戶接受權限的用戶一個或多個具體用戶PUBLIC(全體用戶)84不允許循環(huán)授權!85[例1]把查詢Student表權限授給用戶U1GRANTSELECTONTABLEStudentTOU1;[例2]把對Student表和Course表的全部權限授予用戶U2和U3GRANTALLPRIVILIGESONTABLEStudent,CourseTOU2,U3;86[例3]把對表SC的查詢權限授予所有用戶GRANTSELECTONTABLESCTOPUBLIC;[例4]把查詢Student表和修改學生學號的權限授給用戶U4GRANTUPDATE(Sno),SELECTONTABLEStudentTOU4;87
[例5]把對表SC的INSERT權限授予U5用戶,并允許他再將此權限授予其他用戶
GRANTINSERTONTABLESCTOU5
WITHGRANTOPTION;88執(zhí)行例5后,U5不僅擁有了對表SC的INSERT權限,還可以傳播此權限:
[例6]
GRANTINSERTONTABLESCTOU6WITHGRANTOPTION;同樣,U6還可以將此權限授予U7:
[例7]GRANTINSERTONTABLESCTOU7;
89授權用戶名被授權用戶名數(shù)據(jù)庫對象名允許的操作類型能否轉授權DBAU1關系StudentSELECT不能DBAU2關系StudentALL不能DBAU2關系CourseALL不能DBAU3關系StudentALL不能DBAU3關系CourseALL不能DBAPUBLIC關系SCSELECT不能DBAU4關系StudentSELECT不能DBAU4屬性列Student.SnoUPDATE不能DBAU5關系SCINSERT能U5U6關系SCINSERT能U6U7關系SCINSERT不能90授予的權限可以由DBA或其他授權者用REVOKE語句收回REVOKEREVOKE語句的一般格式為:
REVOKE<權限>[,<權限>]...[ON<對象類型><對象名>]FROM<用戶>[,<用戶>]...;91[例8]把用戶U4修改學生學號的權限收回
REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;[例9]收回所有用戶對表SC的查詢權限REVOKESELECTONTABLESCFROMPUBLIC;92[例10]把用戶U5對SC表的INSERT權限收回
REVOKEINSERTONTABLESCFROMU5CASCADE;93授權用戶名被授權用戶名數(shù)據(jù)庫對象名允許的操作類型能否轉授權DBAU1關系StudentSELECT不能DBAU2關系StudentALL不能DBAU2關系CourseALL不能DBAU3關系StudentALL不能DBAU3關系CourseALL不能DBAU4關系StudentSELECT不能94數(shù)據(jù)庫角色:被命名的一組與數(shù)據(jù)庫操作相關的權限角色是權限的集合可以為一組具有相同權限的用戶創(chuàng)建一個角色簡化授權的過程95角色的創(chuàng)建
CREATEROLE<角色名>給角色授權
GRANT<權限>[,<權限>]…ON<對象類型>對象名
TO<角色>[,<角色>]…96將一個角色授予其他的角色或用戶
GRANT<角色1>[,<角色2>]…TO<受權者1>[,<受權者2>]…[WITHADMINOPTION]角色權限的收回
REVOKE<權限>[,<權限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…97[例11]通過角色來實現(xiàn)將一組權限授予一個用戶。
1.首先創(chuàng)建一個角色R1CREATEROLER1
2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權限
GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;983.將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權限
GRANTR1TO王平,張明,趙玲;4.可以一次性通過R1來回收王平的這3個權限
REVOKER1FROM王平;99強制存取控制強制存取控制(MAC)保證更高程度的安全性適用于對數(shù)據(jù)有嚴格而固定密級分類的部門主體客體label
絕密
機密
可信公開1006.4.3視圖機制CREATEVIEWCS_STUDENTASSELECT*FROMSTDUENTWHERESDEPT=‘計算機’;GRANTSELECTONCS_STUDENTTO王平;101審計功能把用戶對數(shù)據(jù)庫的操作自動記錄下來放入審計日志(Audit
Log),有時也被稱為審計跟蹤。6.4.4審計DBA利用審計日志找出非法存取數(shù)據(jù)的人、時間和
內容102XMSJCZ用戶甲02-10-622:32:55進入系統(tǒng)用戶甲02-10-820:33:07錄入數(shù)據(jù)用戶乙02-10-98:50:42進入系統(tǒng)用戶乙02-10-1111:53:13修改密碼用戶丁02-10-137:19:29進入系統(tǒng)用戶丁02-10-288:00:53查詢數(shù)據(jù)6.4.4審計103[例15]對修改SC表結構或修改SC表數(shù)據(jù)的操作進行審計
AUDITALTER,UPDATEONSC;[例16]取消對SC表的一切審計
NOAUDITALTER,UPDATEONSC;1046.5數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出。完整性安全性數(shù)據(jù)庫數(shù)據(jù)庫安全性和完整性的區(qū)別?1056.5.1完整性約束條件的類型完整性約束條件作用的對象可以是列、元組、關系完整性約束條件的類型可以分為:靜態(tài)約束和動態(tài)約束靜態(tài)列約束元組約束關系約束動態(tài)列約束元組約束關系約束106(1)靜態(tài)列約束
數(shù)據(jù)類型
數(shù)據(jù)格式取值范圍
空值
其他(2)靜態(tài)元組約束規(guī)定組成一個元組的各個列之間的約束關系。1.靜態(tài)約束107(3)靜態(tài)關系約束反應了一個關系中各個元組之間或者若干關系之間存在的聯(lián)系或約束
實體完整性約束
參照完整性約束
函數(shù)依賴約束
統(tǒng)計約束1082.動態(tài)約束(1)動態(tài)列約束修改列定義時的約束修改列值時的約束(2)動態(tài)元組約束(3)動態(tài)關系約束1096.5.2完整性控制機制的功能1、定義功能:能夠定義完整性約束條件2、檢查功能:檢查操作請求是否違背了完整性約束條件3、保證完整性約束條件:若檢查發(fā)現(xiàn)操作請求違背了完整性約束條件,則拒絕該操作。1106.5.3完整性約束的表達方式1定義基本表時2建立constraint約束3建立觸發(fā)器111112CREATETABLES(SNOCHAR(8)PRIMARYKEY,SNAMECHAR(4),SEXCHAR(1),AGEINT,DEPTCHAR(15));113CREATETABLES(SNOCHAR(8),SNAMECHAR(4),SEXCHAR(1),AGE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村蓋房簽合同范本
- 鄉(xiāng)鎮(zhèn)庫房建造合同范本
- 創(chuàng)業(yè)老板合同范本
- 1997施工合同范本
- 公司購買材料合同范本
- 保險勞務合同范本
- mpp管采購合同范本
- app廣告合同范本
- 加盟痘痘合同范本
- 住房公證合同范本
- 數(shù)據(jù)庫原理及應用(第3版)
- 預防流感健康知識講座總結
- 國際標準《風險管理指南》(ISO31000)的中文版
- 2023年4月自考00808商法試題及答案含解析
- 幼兒園中班語言《猜燈謎》
- 中醫(yī)外科瘡瘍病
- (高清版)DZT 0004-2015 重力調查技術規(guī)范(150 000)
- 子癇前期危險因素篩查策略
- 燃氣過戶協(xié)議書
- 煙花爆竹經(jīng)營
- 射頻同軸電纜簡介
評論
0/150
提交評論