




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章數據庫安全保護25.1數據庫的安全性5.2完整性控制5.3并發控制與封鎖5.4數據庫的恢復35.1數據庫的安全性5.1.1數據庫安全性的含義數據庫的安全性是指保護數據庫以防止非法使用所造成的數據泄露、更改或破壞。安全性問題有許多方面:(1)法律、社會和倫理方面時問題。(2)物理控制方面的問題。(3)政策方面的問題。(4)運行方面的問題。(5)硬件控制方面的問題。(6)操作系統安全性方面的問題。(7)數據庫系統本身的安全性方面的問題。45.1.2安全性控制的一般方法安全性控制是指要盡可能地杜絕所有可能的數據庫非法訪問。圖5-1安全控制模型
5安全性控制的一般方法用戶標識和鑒定用戶存取權限控制定義視圖數據加密
審計(Audit)6用戶標識和鑒定用戶標識和鑒定是由系統提供一定的方式讓用戶標識自己的名字或身份,系統內部記錄著所有合法用戶的標識,每次用戶要求進入系統時,由系統進行核實,通過鑒定后才提供機器的使用權。用戶標識和鑒定的方法用一個用戶名或用戶標識符來標明用戶的身份,系統以此來鑒別用戶的合法性。用戶標識符是用戶公開的標識,它不足以成為鑒別用戶身份的憑證。通過用戶名和口令來鑒定用戶的方法簡單易行,但該方法在使用時,由于用戶名和口令的產生和使用比較簡單,也容易被竊取,因此還可采用更復雜的方法。7授權表用戶標識數據對象操作類型用戶存取權限控制用戶存取權限指的是不同的用戶對于不同的數據對象允許執行的操作權限。在數據庫系統中,定義用戶存取權限稱為授權。這些授權定義經過編譯后以一張授權表的形式存放在數據字典中。8數據對象操作類型模式模式建立、修改、檢索外模式建立、修改、檢索內模式建立、修改、檢索數據表查找、插入、修改、刪除屬性列查找、插入、修改、刪除關系系統中的存取權限9對于授權表,一個衡量授權機制的重要指標就是授權粒度,即可以定義的數據對象的范圍,在關系數據庫中,授權粒度包括關系、記錄或屬性。
授權粒度越細,授權子系統就越靈活,能夠提供的安全性就越完善。10數據加密加密的基本思想是根據一定的算法將原始數據(加密成為不可直接識別的格式,數據以密文的形式存儲和傳輸。加密方法:替換方法,該方法使用密鑰將明文中的每一個字符轉換為密文中的字符。轉換方法,該方法將明文中的字符按不同的順序重新排列。通常將這兩種方法結合起來使用,就可以達到相當高的安全程度。11審計審計功能是一種監視措施,它跟蹤記錄有關數據的訪問活動。審計追蹤把用戶對數據庫的所有操作自動記錄下來,存放在一個特殊文件中,即審計日志中。記錄的內容一般包括:操作類型(如修改、查詢等),操作終端標識與操作者標識,操作日期和時間,操作所涉及到的相關數據(如基本表、視圖、記錄、屬性等),數據的前象和后象等。125.1.3SQLServer2000的數據安全性機制為了實現安全性,SQLServer2000對用戶的訪問進行兩個階段的檢驗:身份驗證階段(Authentication):身份驗證機制決定了用戶能否連接(或登錄)到SQLServer2000服務器。權限許可確認階段(PermissionValidation):權限許可機制決定了經過了身份驗證后的用戶連接到SQLServer2000服務器可以執行的具體操作,包括服務器上的操作和具體的數據庫上的操作。135.1.4SQLServer2000的身份驗證模式Windows身份驗證模式在該驗證模式下,SQLServer2000使用Windows操作系統來對登錄的賬號進行身份驗證,支持Windows操作系統的密碼策略和鎖寫策略,賬號和密碼保存在Windows操作系統的賬戶數據庫中。Windows驗證模式下主要有以下優點:(1)數據庫管理員的工作可以集中在管理數據庫方面,而不是管理用戶賬戶。(2)Windows有著更強的用戶賬戶管理工具??梢栽O置賬戶鎖定、密碼期限等。(3)Windows的組策略支持多個用戶同時被授權訪問SQLServer。如果網絡中有多個SQLServer服務器,就可以選擇通過Windows身份驗證機制來完成。14TCP/IPSockets命名管道SQLServer身份驗證模式Windows身份驗證模式混合身份驗證模式混合身份驗證模式允許以SQLServer身份驗證模式或者Windows身份驗證模式來進行驗證?;旌向炞C模式具有以下優點:(1)創建了Windows之上的另外一個安全層次。(2)支持更大范圍的用戶,如非Windows客戶、Novell網用戶等。(3)一個應用程序可以使用單個的SQLServer登錄賬號和口令。155.1.5SQLServer的登錄賬號和服務器角色在SQLServer中,賬號有兩種:一種是登錄服務器的登錄賬號(LoginName),另外一種是使用數據庫的用戶賬號(UserName)。查看服務器的登錄賬號使用EnterpriseManager進入EnterpriseManager,展開“SQLServer組”,找到所要連接的SQLServer服務器;展開該服務器對應的文件夾,再展開“安全性”文件夾,單擊“登錄”選項,即可看到系統創建的默認登錄賬號及已建立的其他登錄賬號。使用存儲過程EXECsp_helplogins16創建服務器的登錄賬號利用EnterpriseManage利用存儲過程EXECsp_addlogin'登錄賬號名稱','密碼','默認數據庫名','使用的語言'[例5-1]建立了一個名稱為Mike的登錄賬號。EXECsp_addlogin'Mike','m1934','Teach',NULL更改登錄賬號的屬性使用存儲過程sp_password可改變登錄賬號的密碼EXECsp_password'舊密碼','新密碼','登錄賬號名稱'使用存儲過程sp_addsrvrolemember可以將登錄賬號加入服務器的角色中EXECsp_addsrvrolemember'登錄賬號','服務器角色名稱'17刪除登錄賬號使用EnterpriseManager使用存儲過程sp_droplogin'登錄賬號'SQLServer的服務器角色角色(Role)是對權限集中管理的一種機制,將不同的權限組合在一起就形成了一種角色。服務器角色是執行服務器級管理操作的用戶權限的集合。185.1.6SQLServer的數據庫用戶賬號和數據庫角色數據庫的用戶賬號用戶賬號要在特定的數據庫內創建,并關聯一個登錄賬號(當一個數據庫的用戶創建時,必須關聯一個登錄賬號)。每個登錄賬號在一個數據庫中只能有一個用戶賬號,但每個登錄賬號可以在不同的數據庫中各有一個用戶賬號。注意:
master和tempdb數據庫中的guest用戶賬號不能刪除,而其他數據庫中的guest用戶賬號可以刪除。登錄賬號具有對某個數據庫的訪問權限,并不表示該登錄賬號對該數據庫具有存取的權限。19查看數據庫的用戶賬號利用存儲過程EXECsp_helpuser創建數據庫的用戶賬號使用存儲過程sp_adduser'登錄賬號','用戶賬號','所屬的數據庫角色'設置數據庫用戶賬號的權限對數據庫對象的操作,具體含義如下SELECT:對表或者視圖進行查詢。INSERT:在表或者視圖中插入記錄。UPDATE:對表或者視圖中的數據進行修改。DELETE:刪除表或者視圖中的數據。EXEC:執行存儲過程。DRI:可對表的外鍵加以限制,以完成表的參照完整性。20刪除數據庫用戶賬號存儲過程 sp_dropuser'用戶賬號'數據庫角色數據庫角色是對數據庫對象操作的權限的集合。數據庫角色可分為兩種:固定的標準數據庫角色(系統創建的)應用程序角色當我們打算讓某些用戶只能通過特定的應用程序間接地存取數據庫中的數據而不是直接地存取數據庫數據時,就應該考慮使用應用程序角色。21角色名稱權限public最基本的數據庫角色db_accessadmin可以添加或刪除用戶標識db_backupoperator可以發出DBCC、CHECKPOINT和BACKUP語句db_datareader可以選擇(?。祿靸热魏斡脩舯碇械乃袛祿b_datawriter可以更改數據庫內任何用戶表中的所有數據db_ddladmin可以發出所有DDL語句,但不能發出GRANT(授權)、REVOKE或DENY語句db_denydatareader不能選擇(?。祿靸热魏斡脩舯碇械娜魏螖祿b_denydatawriter不能更改數據庫內任何用戶表中的任何數據db_owner在數據庫中有全部權限db_securityadmin可以管理全部權限、對象所有權、角色和角色成員資格22創建新的數據庫角色 sp_addrole'角色名','擁有者'刪除數據庫角色sp_droprole'角色名'創建數據庫應用程序角色sp_setapprole'應用程序角色名','密碼'用戶和角色的權限問題用戶權限繼承角色的權限用戶分屬不同角色235.2完整性控制5.2.1數據庫完整性的含義數據庫的完整性是指保護數據庫中數據的正確性、有效性和相容性,防止錯誤的數據進入數據庫造成無效操作。
數據庫的完整性是指防止合法用戶使用數據庫時向數據庫中加入不符合語義的數據。完整性措施的防范對象是不合語義的數據。245.2.2完整性規則的組成完整性規則主要由以下三部分構成。(1)觸發條件:規定系統什么時候使用規則來檢查數據。(2)約束條件:規定系統檢查用戶發出的操作請求違背了什么樣的完整性約束條件。(3)違約響應:規定系統如果發現用戶發出的操作請求違背了完整性約束條件,應該采取一定的動作來保證數據的完整性,即違約時要做的事情。完整性規則從執行時間上可分為立即執行約束(ImmediateConstraints)和延遲執行約束(DeferredConstraints)。25一條完整性規則可以用一個五元組(D,O,A,C,P)來形式化地表示D(Data):代表約束作用的數據對象,可以是關系、元組和列三種對象;O(Operation):代表觸發完整性檢查的數據庫操作,即當用戶發出什么操作請求時需要檢查該完整性規則,是立即執行還是延遲執行;A(Assertion):代表數據對象必須滿足的語義約束,這是規則的主體;C(Condition):代表選擇A作用的數據對象值的謂詞;P(Procedure):代表違反完整性規則時觸發執行的操作過程。26完整性約束條件是完整性控制機制的核心。例如,對于“學號(SNo)不能為空”的這條完整性約束中,D、O、A、C、P的含義分別如下:D:代表約束作用的數據對象為SNo屬性;O:當用戶插入或修改數據時需要檢查該完整性規則;A:SNo不能為空;C:A可作用于所有記錄的SNo屬性;P:拒絕執行用戶請求。275.2.3完整性約束條件的分類從約束條件使用的對象分值的約束和結構的約束值的約束即對數據類型、數據格式、取值范圍和空值等進行規定。(1)對數據類型的約束,包括數據的類型、長度、單位和精度等。(2)對數據格式的約束。(3)對取值范圍的約束。(4)對空值的約束。結構的約束即對數據之間聯系的約束。(1)函數依賴約束。(2)實體完整性約束。(3)參照完整性約束。(4)統計約束。28從約束對象的狀態分靜態約束和動態約束靜態約束靜態約束是指對數據庫每一個確定狀態所應滿足的約束條件,是反映數據庫狀態合理性的約束,這是最重要的一類完整性約束。上面介紹的值的約束和結構的約束均屬于靜態約束。動態約束動態約束是指數據庫從一種狀態轉變為另一種狀態時,新舊值之間所應滿足的約束條件,動態約束反映的是數據庫狀態變遷的約束。例如,學生年齡在更改時只能增長,職工工資在調整時不得低于其原來的工資。295.2.4數據完整性的實施聲明式數據完整性聲明式數據完整性是將數據所需符合的條件融入到對象的定義中,這樣SQLServer會自動確保數據符合事先制定的條件。聲明式數據完整性的特點是:①通過針對表和字段定義聲明的約束,可使聲明式數據完整性成為數據定義的一部分。②使用約束、默認值與規則實施聲明式數據完整性。30程序化數據完整性如果所需符合的條件以及該條件的實施均通過所編寫的程序代碼完成,則這種形式的數據完整性稱為程序化數據完整性。程序化數據完整性的特點是:①程序化數據完整性可以通過相關的程序語言及工具在客戶端或服務器端實施。②SQLServer可以使用存儲過程或觸發器實施程序化數據完整性。315.2.5規則規則(Rule)就是數據庫對存儲在表中的列或用戶自定義數據類型中的值的規定和限制。規則與其作用的表或用戶自定義數據類型是相互獨立的,即表或用戶自定義對象的刪除、修改不會對與之相連的規則產生影響。創建規則CREATERULErule_nameAScondition_expression[例5-12]創建學生年齡規則。CREATERULEage_ruleAS@age>=18and@age<=5032查看規則用存儲過程sp_helptext查看規則sp_helptext[@objname=]'name'規則的綁定與松綁創建規則后,規則僅僅是一個存在于數據庫中的對象,并未發生作用。需要將規則與數據庫表或用戶自定義對象聯系起來,才能達到創建規則的目的。所謂綁定就是指定規則作用于哪個表的哪一列或哪個用戶自定義數據類型。解除規則與對象的綁定稱為“松綁”。33規則對已經輸入表中的數據不起作用。用存儲過程sp_bindrule綁定規則sp_bindrule[@rulename=]'rule', [@objname=]'object_name' [,'futureonly'][例5-14]綁定規則age_rule到S表的字段Age。EXECsp_bindrule'age_rule','S.Age‘用存儲過程sp_unbindrule解除規則的綁定sp_unbindrule[@objname=]'object_name' [,'futureonly'][例5-15]解除已綁定到S表的字段Age的規則age_rule。EXECsp_unbindrule'S.Age'34在刪除一個規則前必須先將與其綁定的對象解除綁定。刪除規則使用DROPRULE命令刪除規則DROPRULE{rule_name}[,...n][例5-16]刪除age_rule規則。DROPRULEage_rule355.2.6默認默認(Default)是向用戶輸入記錄時沒有指定具體數據的列中自動插入的數據。表的一列或一個用戶自定義數據類型只能與一個默認綁定。創建默認CREATEDEFAULTdefault_nameASconstant_expression
[例5-17]創建出生日期默認birthday_defa。CREATEDEFAULTbirthday_defaAS'1978-1-1'36查看和修改默認使用sp_helptext存儲過程可以查看默認的信息。[例5-18]查看默認birthday_defa。EXECsp_helptextbirthday_defa默認的綁定與松綁用存儲過程sp_bindefault綁定默認sp_bindefault[@defname=]'default', [@objname=]'object_name' [,'futureonly']用存儲過程sp_unbindefault解除默認的綁定sp_unbindefault[@objname=]'object_name'[,'futureonly']37[例5-19]綁定默認birthday_defa到數據表S的Birthday列上。EXECsp_bindefaultbirthday_defa,'S.[Birthday]'[例5-20]解除默認birthday_defa與表S的Birthday列的綁定。EXECsp_unbindefault'S.[Birthday]'刪除默認使用DROPRULE命令刪除默認DROPDEFAULT{default_name}[,...n][例5-21]刪除學生生日默認birthday_defa。DROPDEFAULTbirthday_defa在刪除一個默認前必須先將與其綁定的對象解除綁定385.3并發控制與封鎖5.3.1數據庫并發性的含義為了充分利用數據庫資源,很多時候數據庫用戶都是對數據庫系統并行存取數據,這樣就會發生多個用戶并發存取同一數據塊的情況,如果對并發操作不加控制可能會產生不正確的數據,破壞數據的完整性。并發控制就是解決這類問題,以保持數據庫中數據的一致性,即在任何一個時刻數據庫都將以相同的形式給用戶提供數據。39事務是數據庫系統中執行的一個工作單位,它是由用戶定義的一組操作序列。一個事務可以是一組SQL語句、一條SQL語句或整個程序,一個應用程序可以包括多個事務。定義事務的語句有三條:BEGINTRANSACTIONCOMMITROLLBACK5.3.2事務(Transaction)事務的開始事務的提交事務的回滾40事務的特征原子性(Atomicity)一個事務是一個不可分割的工作單位,事務在執行時,應該遵守“要么不做,要么全做”(NothingorAll)的原則,即不允許完成部分的事務。一致性(Consistency)事務對數據庫的作用是數據庫從一個一致狀態轉變到另一個一致狀態。所謂數據庫的一致狀態是指數據庫中的數據滿足完整性約束。隔離性(Isolation)如果多個事務并發地執行,應像各個事務獨立執行一樣,一個事務的執行不能被其他事務干擾。持久性(Durability)持久性指一個事務一旦提交,它對數據庫中數據的改變就應該是持久的,即使數據庫因故障而受到破壞,DBMS也應該能夠恢復。415.3.3并發操作與數據的不一致性[例5-22]并發取款操作。假設存款余額R=1000元,甲事務T1取走存款100元,乙事務T2取走存款200元,如果正常操作,即甲事務T1執行完畢再執行乙事務T2,存款余額更新后應該是700元。但是如果按照如下順序操作,則會有不同的結果:(1)甲事務T1讀取存款余額R=1000元;(2)乙事務T2讀取存款余額R=1000元;(3)甲事務T1取走存款100元,修改存款余額R=R-100=900,把R=900寫回到數據庫;(4)乙事務T2取走存款200元,修改存款余額R=R-200=800,把R=800寫回到數據庫;結果兩個事務共取走存款300元,而數據庫中的存款卻只少了200元。得到這種錯誤的結果是由甲乙兩個事務并發操作引起的。42數據庫的并發操作導致的數據庫不一致性主要有以下三種:丟失更新(LostUpdate)當兩個事務T1和T2讀入同一數據,并發執行修改操作時,T2把T1或T1把T2的修改結果覆蓋掉,造成了數據的丟失更新問題,導致數據的不一致。污讀(DirtyRead)事務T1更新了數據R,事務T2讀取了更新后的數據R,事務T1由于某種原因被撤銷,修改無效,數據R恢復原值。事務T2得到的數據與數據庫的內容不一致,這種情況稱為“污讀”。不可重讀(UnrepeatableRead)事務T1讀取了數據R,事務T2讀取并更新了數據R,當事務T1再讀取數據R以進行核對時,得到的兩次讀取值不一致,這種情況稱為“不可重讀”。435.3.4封鎖實現并發控制的方法主要有兩種:封鎖(Lock)技術和時標(Timestamping)技術。封鎖類型(LockType)所謂封鎖就是當一個事務在對某個數據對象(可以是數據項、記錄、數據集以至整個數據庫)進行操作之前,必須獲得相應的鎖,以保證數據操作的正確性和一致性。44基本的封鎖類型有兩種排它型封鎖(ExclusiveLock)排它型封鎖又稱寫封鎖,簡稱為X封鎖,它采用的原理是禁止并發操作。共享封鎖(ShareLock)共享封鎖又稱讀封鎖,簡稱為S鎖,它采用的原理是允許其他用戶對同一數據對象進行查詢,但不能對該數據對象進行修改。封鎖協議(LockProtocol)封鎖可以保證合理地進行并發控制,保證數據的一致性。在封鎖時,要考慮一定的封鎖規則,例如,何時開始封鎖、封鎖多長時間、何時釋放等,這些封鎖規則稱為封鎖協議。45上面講述過的并發操作所帶來的丟失更新、污讀和不可重讀等數據不一致性問題,可以通過三級封鎖協議在不同程度上給予解決:一級封鎖協議事務T在修改數據對象之前必須對其加X鎖,直到事務結束。二級封鎖協議在一級封鎖協議的基礎上,另外加上事務T在讀取數據R之前必須先對其加S鎖,讀完后釋放S鎖。三級封鎖協議在一級封鎖協議的基礎上,另外加上事務T在讀取數據R之前必須先對其加S鎖,讀完后并不釋放S鎖,而直到事務T結束才釋放。46封鎖粒度(LockGranularity)封鎖粒度指封鎖的單位。根據對數據的不同處理,封鎖的對象可以是這樣一些邏輯單元:字段、記錄、表、數據庫等,封鎖的數據對象的大小叫封鎖粒度。封鎖粒度越小,系統中能夠被封鎖的對象就越多,并發度越高,但封鎖機構復雜,系統開銷也就越大。封鎖粒度越大,系統中能夠被封鎖的對象就越少,并發度越低,封鎖機構越簡單,相應系統開銷也就越小。47死鎖和活鎖活鎖(Livelock)當某個事務請求對某一數據進行排它性封鎖時,由于其他事務對該數據的操作而使這個事務處于永久等待狀態,這種狀態稱為活鎖。死鎖(Deadlock)在同時處于等待狀態的兩個或多個事務中,其中的每一個在它能夠進行之前,都等待著某個數據,而這個數據已被它們中的某個事務所封鎖,這種狀態稱為死鎖。死鎖產生的條件:互斥條件:一個數據對象一次只能被一個事務所使用,即對數據的封鎖采用排它式。不可搶占條件:一個數據對象只能被占有它的事務所釋放,而不能被別的事務強行搶占。部分分配條件:一個事務已經封鎖分給它的數據對象,但仍然要求封鎖其他數據。循環等待條件:允許等待其他事務釋放數據對象,系統處于加鎖請求相互等待的狀態。48數據RT1T2
事務依賴圖
死鎖的預防一次加鎖法:一每個事物必須將所有要使用的數據對象全部依次加鎖,并要求加鎖成功,只要一個加鎖不成功,表示本次加鎖失敗,則應該立即釋放所有加鎖成功的數據對象,然后重新開始加鎖。順序加鎖法:是預先對所有可加鎖的數據對象規定一個加鎖順序,每個事務都需要按此順序加鎖,在釋放時,按逆序進行。死鎖的診斷與解除如果在事務依賴圖中沿著箭頭方向存在一個循環,那么死鎖的條件就形成了,系統就會出現死鎖。選擇一個處理死鎖代價最小的事務,將其撤銷以解除死鎖。495.4數據庫的恢復系統必須具有檢測故障并把數據從錯誤狀態中恢復到某一正確狀態的功能,這就是數據庫的恢復。數據庫恢復的基本原理就是利用存儲在系統其他地方的冗余數據來修復?;謴拖到y應該提供兩種類型的功能:生成冗余數據對可能發生的故障作某些準備冗余重建利用這些冗余數據恢復數據庫登記日志文件數據轉儲50登記日志文件日志文件是用來記錄事務對數據庫的更新操作的文件。典型的日志文件主要包含以下內容:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年度河北省保定市部分重點中學(唐縣第一中學)高一第二學期期中聯考歷史試題(含答案)
- 知識管理與BIM在土木行業的結合
- 炸雞店的獨特配菜搭配分析
- 護理管理與領導力
- 項目生命周期管理在房地產中的實踐
- 浙江省溫州市樂清區2021年人教PEP版小升初測試英語試卷(解析版)
- 異地津貼與交通補貼政策全解析
- 工程項目溝通中的BIM數字平臺
- 春節的秘密國潮風卡通故事
- 和合谷快餐的品牌營銷策略
- 汽輪機的危急遮斷系統
- 《米莉的帽子變變變》閱讀課
- 監理旁站方案
- JJG 1084-2013數字式氣壓計
- GB/T 5211.5-2008顏料耐性測定法
- GB/T 17450-1998技術制圖圖線
- GB/T 16474-2011變形鋁及鋁合金牌號表示方法
- GB/T 15242.3-1994液壓缸活塞和活塞桿動密封裝置用同軸密封件安裝溝槽尺寸系列和公差
- 營銷案場管家式服務方案
- 2022年成都興華生態建設開發有限公司招聘筆試試題及答案解析
- 鐵路貨車輪軸簡介簡課件
評論
0/150
提交評論