第六章數(shù)據(jù)庫保護_第1頁
第六章數(shù)據(jù)庫保護_第2頁
第六章數(shù)據(jù)庫保護_第3頁
第六章數(shù)據(jù)庫保護_第4頁
第六章數(shù)據(jù)庫保護_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2023年2月6日1第六章數(shù)據(jù)庫保護6.1

事務6.2數(shù)據(jù)庫恢復技術(shù)6.3并發(fā)控制6.4數(shù)據(jù)庫的完整性6.5數(shù)據(jù)庫的安全性2023年2月6日2學習目標理解并掌握事務的相關(guān)概念了解數(shù)據(jù)庫保護的四方面技術(shù):數(shù)據(jù)庫的恢復技術(shù)并發(fā)控制數(shù)據(jù)庫的完整性數(shù)據(jù)庫的安全性2023年2月6日36.1

事務6.1.1事務的概念

6.1.2事務的特性

6.1.3SQLServer2000事務應用舉例

6.1.4事務的狀態(tài)轉(zhuǎn)換2023年2月6日46.1.1事務的概念事務(Transaction)是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。事務和程序是兩個概念在關(guān)系數(shù)據(jù)庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序一個應用程序通常包含多個事務事務是數(shù)據(jù)恢復和并發(fā)控制的基本單位2023年2月6日5事物的三種運行模式:1)自動提交事務2)顯式事務3)隱性事務每條單獨語句都是一個事務。BEGINTRANSACTION/*事務開始*/COMMIT/*提交事務*/ROLLBACK/*事務回滾*/例如銀行轉(zhuǎn)帳。在前一個事務完成時則新事務隱式啟動,但每個事務仍以COMMIT或ROLLBACK語句顯式的表示完成。

2023年2月6日66.1.2事務的特性事務的ACID特性:原子性(Atomicity)原子性由恢復機制實現(xiàn)一致性(Consistency)由并發(fā)控制機制實現(xiàn)隔離性(Isolation)通過并發(fā)控制機制實現(xiàn)持續(xù)性(Durability)通過恢復機制實現(xiàn)一個事務的執(zhí)行不能被其他事務干擾2023年2月6日76.1.3SQLServer2000事務應用舉例教材例6-2,自學2023年2月6日86.1.4事務的狀態(tài)轉(zhuǎn)換活動狀態(tài)部分提交全部提交失敗異常終止事務狀態(tài)轉(zhuǎn)換圖2023年2月6日96.2數(shù)據(jù)庫恢復技術(shù)6.2.1數(shù)據(jù)庫可能出現(xiàn)的故障6.2.2數(shù)據(jù)庫的恢復原理6.2.3SQLServer2000種數(shù)據(jù)備份與恢復的實現(xiàn)數(shù)據(jù)庫的恢復就是將數(shù)據(jù)庫從錯誤的狀態(tài)恢復到某一正確狀態(tài)。2023年2月6日106.2.1數(shù)據(jù)庫可能出現(xiàn)的故障1.事務內(nèi)部故障2.系統(tǒng)故障3.介質(zhì)故障可以通過事務本身發(fā)現(xiàn)的故障;b.非預期故障:運算溢出、并發(fā)事務發(fā)生死鎖、違反完整性約束條件、……4.計算機病毒發(fā)生故障后,應強行回滾,使該事務好像根本沒有啟動一樣,這種恢復操作稱為事務撤銷(Undo)。

指造成系統(tǒng)停止運轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動;系統(tǒng)故障的影響:尚未完成事務可能已部分寫入數(shù)據(jù)庫?;謴妥酉到y(tǒng)要做的工作:(1)撤銷所有未提交事務;(2)重做所有已提交事務。指外存故障介質(zhì)故障的影響:破壞數(shù)據(jù)庫或部分數(shù)據(jù)庫;影響部分正在執(zhí)行的事務?;謴筒呗裕簲?shù)據(jù)轉(zhuǎn)儲。病毒的影響:破壞應用程序,進而破壞數(shù)據(jù)庫;修改緩沖區(qū);直接破壞數(shù)據(jù)庫?;謴筒呗裕簲?shù)據(jù)轉(zhuǎn)儲。2023年2月6日11各類故障對數(shù)據(jù)庫的影響:(1)數(shù)據(jù)庫本身被破壞;(2)數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確?;謴驮恚喝哂?023年2月6日126.2.2數(shù)據(jù)庫的恢復原理恢復機制涉及的關(guān)鍵問題1.如何建立冗余數(shù)據(jù),即數(shù)據(jù)庫的重復存儲;數(shù)據(jù)轉(zhuǎn)儲(backup)登錄日志文件(logging)2.如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復。

2023年2月6日13一、數(shù)據(jù)轉(zhuǎn)儲

所謂轉(zhuǎn)儲,即DBA定期的將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。

轉(zhuǎn)儲十分耗費時間和資源,不能頻繁進行。正常運行TaTbTf轉(zhuǎn)儲運行事務故障發(fā)生點故障恢復重裝后備副本重新運行事務2023年2月6日141).靜態(tài)轉(zhuǎn)儲在系統(tǒng)中無運行事務時進行轉(zhuǎn)儲轉(zhuǎn)儲開始時數(shù)據(jù)庫處于一致性狀態(tài)轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動優(yōu)點:實現(xiàn)簡單缺點:降低了數(shù)據(jù)庫的可用性轉(zhuǎn)儲必須等用戶事務結(jié)束新的事務必須等轉(zhuǎn)儲結(jié)束1、靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲2023年2月6日152)、動態(tài)轉(zhuǎn)儲轉(zhuǎn)儲操作與用戶事務并發(fā)進行轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改優(yōu)點不用等待正在運行的用戶事務結(jié)束不會影響新事務的運行動態(tài)轉(zhuǎn)儲的缺點不能保證副本中的數(shù)據(jù)正確有效利用動態(tài)轉(zhuǎn)儲得到的副本進行故障恢復需要把動態(tài)轉(zhuǎn)儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件后備副本加上日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài)2023年2月6日16海量轉(zhuǎn)儲:每次轉(zhuǎn)儲全部數(shù)據(jù)庫增量轉(zhuǎn)儲:只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù)海量轉(zhuǎn)儲與增量轉(zhuǎn)儲比較從恢復角度看,使用海量轉(zhuǎn)儲得到的后備副本進行恢復往往更方便但如果數(shù)據(jù)庫很大,事務處理又十分頻繁,則增量轉(zhuǎn)儲方式更實用更有效2.海量轉(zhuǎn)儲與增量轉(zhuǎn)儲2023年2月6日17轉(zhuǎn)儲方法分類

轉(zhuǎn)儲狀態(tài)動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲轉(zhuǎn)儲方式海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲3.轉(zhuǎn)儲方法小結(jié)2023年2月6日18二、登陸日志文件

日志文件(log)是用來記錄事務對數(shù)據(jù)庫的更新操作的文件。一、日志文件的格式和內(nèi)容二、日志文件的作用三、登記日志文件2023年2月6日191)、日志文件的格式以記錄為單位的日志文件以數(shù)據(jù)塊為單位的日志文件2)、日志文件內(nèi)容日志文件中的一個日志記錄(logrecord)各個事務的開始標記(BEGINTRANSACTION)各個事務的結(jié)束標記(COMMIT或ROLLBACK)各個事務的所有更新操作1、日志文件的格式和內(nèi)容3)、基于記錄的日志文件每條日志記錄的內(nèi)容事務標識操作類型(插入、刪除或修改)操作對象(記錄ID、BlockNO.)更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值)更新后數(shù)據(jù)的新值(對刪除操作而言,此項為空值)4)、基于數(shù)據(jù)塊的日志文件事務標識被更新的數(shù)據(jù)塊2023年2月6日21日志文件的作用:(1)事務故障恢復和系統(tǒng)故障恢復必須用日志文件;(2)動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效恢復數(shù)據(jù);

(3)靜態(tài)轉(zhuǎn)儲方式中,數(shù)據(jù)庫毀壞后可重新裝入后援副本把數(shù)據(jù)庫恢復到轉(zhuǎn)儲結(jié)束時的狀態(tài),然后利用日志文件,把已完成事務進行重做處理,對故障發(fā)生時尚未完成事務做撤銷處理。2、日志文件的用途

2023年2月6日22為保證數(shù)據(jù)庫是可恢復的,登記日志文件時必須遵循兩條原則登記的次序嚴格按并行事務執(zhí)行的時間次序必須先寫日志文件,后寫數(shù)據(jù)庫3、登記日志文件

2023年2月6日236.2.3SQLServer2000種數(shù)據(jù)備份與恢復的實現(xiàn)1、數(shù)據(jù)庫的備份備份策略:什么時間備份、備份到什么位置、備份者是誰、備份內(nèi)容、備份頻率、如何備份等。企業(yè)管理器:“備份”新建備份設備備份數(shù)據(jù)庫向?qū)В?、數(shù)據(jù)庫的還原2023年2月6日246.3并發(fā)控制6.3.1并發(fā)操作帶來的不一致問題6.3.2并發(fā)控制——封鎖及解鎖協(xié)議在數(shù)據(jù)庫技術(shù)中,并發(fā)是指多個事務同時訪問同一數(shù)據(jù)。

與事務的并發(fā)執(zhí)行相對的是事務的串行執(zhí)行,即每個時刻只有一個事務運行,其他的事務只有在這個事務執(zhí)行完畢后才可運行。

2023年2月6日256.3.1并發(fā)操作帶來的不一致問題

存在三種因并發(fā)操作帶來的不一致問題:1、丟失修改(LostUpdate)2、不可重復讀(Non-Repeatableread)

3、讀“臟”數(shù)據(jù)(dirtyread)

2023年2月6日261、丟失修改例:甲、乙兩個售票點的T1,T2兩個事務T1T2丟失修改:兩個事務T1和T2讀入同一個數(shù)據(jù)并修改,T2提交的結(jié)果破壞了T1提交的結(jié)果,導致T1的修改被丟失。(1)讀A=16(2)讀A=16(3)A=A-1寫回A=15(4)A=A-1寫回A=15例:求A、B兩個售票點的總票數(shù),并驗算T1T2(1)讀A=50

讀B=100

和=150(2)讀B=100B=100-1寫B(tài)=99不可重復讀:T1讀取數(shù)據(jù)后,T2執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果,有三種情況:(3)讀A=50

讀B=99

和=149(1)T2修改了T1讀取的值;(2)T2刪除了T1讀取的部分記錄;(3)T2插入了滿足T1讀取條件的部分記錄。后兩種不可重復讀也稱為幻影現(xiàn)象。2、不可重復讀2023年2月6日28例:查詢A售票點的票數(shù)T1T2(1)讀A=50A=A-1

寫A=49(2)讀A=49讀“臟”數(shù)據(jù):T1讀取數(shù)據(jù)后寫回磁盤,T2讀取同一數(shù)據(jù)后,T1事務被撤銷。(3)回滾A恢復為503、讀“臟”數(shù)據(jù)2023年2月6日296.3.2并發(fā)控制——封鎖及解鎖協(xié)議封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)。既可使事務并發(fā)地執(zhí)行又保證數(shù)據(jù)的一致性。

定義:所謂封鎖就是事務在對某個數(shù)據(jù)對象(如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖,加鎖后事務就對該數(shù)據(jù)對象有了一定的控制,在事務釋放它的鎖之前,其它的事務不能更新此數(shù)據(jù)對象。

有兩種類型的鎖:排他鎖(ExclusiveLocks,簡記為X鎖)和共享鎖(ShareLocks,簡記為S鎖)。

排它鎖排它鎖又稱為寫鎖若事務T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖共享鎖共享鎖又稱為讀鎖若事務T對數(shù)據(jù)對象A加上S鎖,則事務T可以讀A,但不能修改A,其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖2023年2月6日31Y=Yes,相容的請求N=No,不相容的請求

T1T2XS-XNNYSNYY-YYY鎖的相容矩陣2023年2月6日32在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,需要約定一些規(guī)則:封鎖協(xié)議(LockingProtocol)何時申請X鎖或S鎖持鎖時間、何時釋放不同的封鎖協(xié)議,在不同的程度上為并發(fā)操作的正確調(diào)度提供一定的保證常用的封鎖協(xié)議:三級封鎖協(xié)議封鎖協(xié)議(簡介)2023年2月6日336.4數(shù)據(jù)庫的完整性6.4.1數(shù)據(jù)庫的完整性介紹6.4.2SQL中完整性約束6.4.3SQLServer2000中完整性約束的實現(xiàn)6.4.1數(shù)據(jù)庫的完整性介紹數(shù)據(jù)庫的完整性:即數(shù)據(jù)的正確性和相容性數(shù)據(jù)的安全性:保護數(shù)據(jù)庫防止惡意的破壞和非法的存取。數(shù)據(jù)的完整性:防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出,即所謂垃圾進垃圾出所造成的無效操作和錯誤結(jié)果。數(shù)據(jù)庫完整性約束條件:即加在數(shù)據(jù)庫數(shù)據(jù)之上的語義約束條件。完整性檢查:DBMS中檢查數(shù)據(jù)是否滿足完整性條件的機制。2023年2月6日356.4.2SQL中完整性約束三種完整性約束:1實體完整性約束:UNIQUE(定義候選碼)、PRIMARYKEY(定義主鍵)2參照完整性約束:FOREIGNKEY(<列名序列1>)REFERENCES<參照表>[(<列名序列2>)][ONDELETE<參照動作>][ONUPDATE<參照動作>]3用戶定義的完整性約束CREATETABLES(SNOCHAR(6),SNAMECHAR(10),SAGEINT,

PRIMARYKEY(SNO))2023年2月6日366.4.3SQLServer2000中完整性約束的實現(xiàn)在SQLServer2000支持五類約束,這五類約束分別是空值約束、CHECK約束、唯一性約束、主鍵約束和外鍵約束。2023年2月6日376.5數(shù)據(jù)庫的安全性6.5.1計算機系統(tǒng)的安全性問題6.5.2權(quán)限6.5.3數(shù)據(jù)庫的安全性控制6.5.4SQLServer2000中系統(tǒng)安全性實現(xiàn)2023年2月6日386.5.1計算機系統(tǒng)的安全性問題要保證數(shù)據(jù)庫系統(tǒng)的安全性首先要保證計算機系統(tǒng)的安全性。計算機系統(tǒng)安全性,是指為計算機系統(tǒng)建立和采取的各種安全保護措施,以保護計算機系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止因偶然或惡意的原因使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等。

2023年2月6日39

數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫,防止因用戶非法使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞。數(shù)據(jù)庫的一大特點:數(shù)據(jù)可以共享安全性問題!數(shù)據(jù)庫共享不能是無條件的。例:軍事秘密、國家機密、新產(chǎn)品實驗數(shù)據(jù)、市場需求分析、市場營銷策略、銷售計劃、客戶檔案、醫(yī)療檔案、銀行儲蓄數(shù)據(jù)等2023年2月6日406.5.2權(quán)限1、權(quán)限是指用戶(或應用程序)使用數(shù)據(jù)庫的方式。

DBS中,對于數(shù)據(jù)操作的權(quán)限有以下幾種:1)

讀(Read)權(quán)限;允許用戶讀數(shù)據(jù),但不得修改數(shù)據(jù)。2)插入(Insert)權(quán)限;允許用戶插入新的數(shù)據(jù),但不得修改數(shù)據(jù)。3)修改(Update)權(quán)限:允許用戶修改數(shù)據(jù),但不得刪除數(shù)據(jù)。4)

刪除(Delete)權(quán)限;允許用戶刪除數(shù)據(jù)。2023年2月6日41系統(tǒng)還提供給用戶(或應用程序)修改數(shù)據(jù)庫模式的操作權(quán)限,主要有下列幾種:1)

索引(Index)權(quán)限:允許用戶創(chuàng)建和刪除索引。2)

資源(Resource)權(quán)限:允許用戶創(chuàng)建新的關(guān)系。3)

修改(Alteration)權(quán)限:允許用戶在關(guān)系結(jié)構(gòu)中加入或刪除屬性。4)撤銷(Drop)權(quán)限:允許用戶撤銷關(guān)系。

2、權(quán)限的授予與回收:GRANT和REVOKE語句

2023年2月6日426.5.3數(shù)據(jù)庫的安全性控制數(shù)據(jù)庫的安全性控制措施主要有:用戶標識與鑒別、存取控制、視圖機制和數(shù)據(jù)加密。

應用DBMSOS

DB

高安全性控制層次

方法:

用戶標識和鑒定

存取控制審計視圖

操作系統(tǒng)安全保護

密碼存儲安全措施一般是逐級設置的2023年2月6日431、用戶標識與鑒別

系統(tǒng)提供的最外層安全保護措施:用戶標識、口令或每個用戶預先約定好一個計算過程或者函數(shù)2、存取控制存取控制機制的組成:定義存取權(quán)限、檢查存取權(quán)限用戶權(quán)限定義和合法權(quán)檢查機制一起組成了DBMS的安全子系統(tǒng)常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)強制存取控制(MandatoryAccessControl,簡稱MAC)2023年2月6日44自主存取控制方法(DAC)存取權(quán)限有兩個要素:數(shù)據(jù)對象、操作類型在自主存取控制中,用戶對于不同的數(shù)據(jù)對象有不同的存取權(quán)限,不同的用戶對同一對象也有不同的權(quán)限,而且用戶還可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。

SQL標準也對自主存取控制提供支持:通過GRANT語句和REVOKE語句來實現(xiàn)2023年2月6日45授權(quán):即在數(shù)據(jù)庫系統(tǒng)中,定義存取權(quán)限。GRANT語句用來授予用戶權(quán)限,格式如下:GRANT<權(quán)限列表>ON<數(shù)據(jù)對象>TO<用戶列表>[WITHGRANTOPTION]

數(shù)據(jù)對象的創(chuàng)建者自動獲得對于該數(shù)據(jù)對象的所有操作權(quán)限。

例:

表Student的創(chuàng)建者自動或的對該表的SELECT、INSERT、UPDATE和DELETE等權(quán)限?!笆跈?quán)”

GRANTSELECT,INSERTONStudentTO王平

WITHGRANTOPTION

表示用戶王平同時獲得了“受權(quán)”的權(quán)限允許被授權(quán)者將權(quán)限傳遞給其他用戶

select、insert、delete、update權(quán)限

表,屬性列,視圖等

update授權(quán)既可在關(guān)系表的所有屬性列上進行,又可只在某幾個屬性列上進行。

例:授予李平student表中sname列的update權(quán)限:grantupdate(sname)onstudentto李平

2023年2月6日46“收回受權(quán)”

REVOKEINSERTONStudentFROM王平CASCADE權(quán)限不僅可以授予也可收回,可通過REVOKE語句收回用戶權(quán)限,格式如下:REVOKE<權(quán)限列表>ON<數(shù)據(jù)對象>FROM<用戶列表>表示如果用戶王平把Student的INSRT權(quán)限又轉(zhuǎn)授給了其他用戶,那么這些權(quán)限也從其它用戶處收回。2023年2月6日47自主存取控制機制的優(yōu)點:能夠通過授權(quán)機制有效地控制其他用戶對敏感數(shù)據(jù)的存取自主存取控制機制的缺陷:無法控制用戶授權(quán)給何人以及是否將“受權(quán)”權(quán)限授予別人數(shù)據(jù)的“無意泄露”2023年2月6日48強制存取控制是指系統(tǒng)為保證很高程度的安全性,按照一定的標準所采取的強制存取檢查方式。

強制存取控制方法(MAC)MAC適用于對數(shù)據(jù)有嚴格而固定密級分類的部門例:軍事部門、政府部門等在MAC中,DBMS所管理的全部實體被分為主體和客體兩大類。系統(tǒng)中的活動實體

DBMS所管理的實際用戶代表用戶的各進程系統(tǒng)中的被動實體,是受主體操縱的文件基表索引視圖2023年2月6日49DBMS為主體和客體的每個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論