查看匯總:2014軟件水平考試《數(shù)據(jù)庫系統(tǒng)工程師》重點(diǎn)匯總
數(shù)據(jù)庫的安全與保護(hù)
1.安全性
數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的或非正常的使用所造成的數(shù)據(jù)泄露、更改或破壞。安全性問題不是數(shù)據(jù)庫系統(tǒng)所獨(dú)有的,計(jì)算機(jī)系統(tǒng)都有這個問題。只是在數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,而且為許多用戶直接共享,是十分重要的信息資源。從而使安全性問題變得更為突出。系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能指標(biāo)之一。對于數(shù)據(jù)庫的安全保密方式可以有系統(tǒng)處理的和物理的兩個方面。所謂物理的是指,對于強(qiáng)力逼迫透露口令、在通信線路上竊聽、以至盜竊物理存儲設(shè)備等行為。對此所采取的措施是將數(shù)據(jù)編為密碼,加強(qiáng)警衛(wèi)以識別用戶身份和保護(hù)存儲設(shè)備等措施。在一般計(jì)算機(jī)系統(tǒng)中,安全措施是一級一級層層設(shè)置的。
(1)用戶標(biāo)識和鑒定首先,系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。系統(tǒng)進(jìn)行核實(shí),通過鑒定后才提供機(jī)器使用權(quán)。常用的方法有:用一個用戶名或者用戶標(biāo)識號來標(biāo)明用戶身份。系統(tǒng)鑒別此用戶是否是合法用戶。若是,則可以進(jìn)入下一步的核實(shí);若不是,則不能使用計(jì)算機(jī)。用戶名的登錄只由系統(tǒng)管理員進(jìn)行,一般用戶不能實(shí)施用戶名登錄。口令(Password),為了進(jìn)一步核實(shí)用戶,系統(tǒng)常常要求用戶輸入口令。
(2)存取控制對于獲得上機(jī)權(quán)的用戶還要根據(jù)預(yù)先定義好的用戶權(quán)限進(jìn)行存取控制,保證用戶只能存取他有權(quán)存取的數(shù)據(jù)。所謂用戶權(quán)限是指不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。它由兩部分組成,一是數(shù)據(jù)對象,二是操作類型。數(shù)據(jù)對象有二類。一類是數(shù)據(jù)本身,如關(guān)系數(shù)據(jù)庫中的表、字段,非關(guān)系數(shù)據(jù)庫中的記錄、字段(亦稱為數(shù)據(jù)項(xiàng))。另一類是外模式、模式、內(nèi)模式。在關(guān)系系統(tǒng)中DBA可以把建立、修改基本表的權(quán)力授予用戶,用戶獲得此權(quán)力后可以建立基本表、索引、視圖。這說明關(guān)系系統(tǒng)中存取控制的數(shù)據(jù)對象不僅有數(shù)據(jù)而且有模式、外模式、內(nèi)模式等數(shù)據(jù)字典中的內(nèi)容。對于存取權(quán)限的定義稱為授權(quán)(Authorization)。這些定義經(jīng)過編譯后存儲在數(shù)據(jù)字典中。每當(dāng)用戶發(fā)出存取數(shù)據(jù)庫的操作請求后,DBMS查找數(shù)據(jù)字典,根據(jù)用戶權(quán)限進(jìn)行合法權(quán)限檢查(Authorization Check)。若用戶的操作請求超出了定義的權(quán)限,系統(tǒng)拒絕執(zhí)行此操作。授權(quán)編譯程序和合法權(quán)限檢查機(jī)制一起組成了安全性子系統(tǒng)。衡量授權(quán)子系統(tǒng)精巧程度的另一個盡度是否提供與數(shù)據(jù)值有關(guān)的授權(quán)。有的系統(tǒng)還允許存取謂詞中引用系統(tǒng)變量,如一天中的時刻,終端設(shè)備號。這樣用戶只能在某臺終端、某段時間內(nèi)存取有關(guān)數(shù)據(jù),這就是與時間和地點(diǎn)有關(guān)的存取權(quán)限。另外,在操作系統(tǒng)中對文件、目標(biāo)等的存取還有一些安全保護(hù)措施。其中加密是一種防止數(shù)據(jù)內(nèi)容被別人引用或了解的切實(shí)可行的辦法。加密有程序加密和硬件加密卡兩種形式。
2.完整性
數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。DBMS必須提供一種功能來保證數(shù)據(jù)庫中數(shù)據(jù)的完整性。這種功能亦稱為完整性檢查,即系統(tǒng)用一定的機(jī)制來檢查數(shù)據(jù)庫中的數(shù)據(jù)是否滿足規(guī)定的條件。這種條件在數(shù)據(jù)庫中稱為完整性約束條件。數(shù)據(jù)的約束條件是語義的體現(xiàn),這些完整性約束條件將作為模式的一部分存放數(shù)據(jù)字典中。數(shù)據(jù)的完整性和安全性是兩個不同的概念。前者是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出,即所謂垃圾進(jìn)垃圾出(Garbage In Garbage Out)所造成的無效操作和錯誤結(jié)果。而后者是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。當(dāng)然,完整性和安全性是密切相關(guān)的。特別從系統(tǒng)實(shí)現(xiàn)的方法來看,往往是一種機(jī)制常常既可用于安全性保護(hù)亦可用于完整性保證。完整性約束條件可以分類如下:(1)值的約束和結(jié)構(gòu)的約束前者指對數(shù)據(jù)的值的限制,后者指對數(shù)據(jù)之間聯(lián)系的限制。關(guān)于對數(shù)據(jù)值的約束 這類約束條件是指對數(shù)據(jù)取值類型、范圍、精度等的規(guī)定。關(guān)于數(shù)據(jù)之間聯(lián)系的約束 數(shù)據(jù)庫中同一關(guān)系的不同屬性之間可以有一定的聯(lián)系,從而也應(yīng)滿足一定的約束條件。同時,由于數(shù)據(jù)庫中數(shù)據(jù)是結(jié)構(gòu)化的,不同的關(guān)系之間也可以有聯(lián)系,因而不同關(guān)系的屬性之間也可滿足一定的約束條件。
(2)靜態(tài)約束和動態(tài)約束所謂靜態(tài)約束是指對數(shù)據(jù)庫每一確定狀態(tài)的數(shù)據(jù)所應(yīng)滿足的約束條件。以上所講的約束都屬靜態(tài)約束。動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時新、舊值之間所應(yīng)滿足的約束條件。
(3)立即執(zhí)行約束和延遲執(zhí)行約束立即執(zhí)行約束是指在執(zhí)行用戶事務(wù)時,對事務(wù)中某一更新語句執(zhí)行完后馬上對此數(shù)據(jù)所應(yīng)滿足的約束條件進(jìn)行完整性檢查。延遲執(zhí)行是指在整個事務(wù)執(zhí)行結(jié)束后方對此約束條件進(jìn)行完整性檢查,結(jié)果正確方能提交。完整性的實(shí)現(xiàn)應(yīng)包括兩個方面,一是系統(tǒng)要提供定義完整性約束條件的功能,二是提供檢查完整性約束條件的方法。對于數(shù)據(jù)值的那類完整性約束條件通常在模式中定義。例如在模式中定義屬性名、類型、長度、碼屬性名并標(biāo)明其值是唯一的、非空的等等。另外的那些約束條件就要用專門的方式加以定義。
3.并發(fā)控制
數(shù)據(jù)庫是一個共享資源,可以由多個用戶使用。這些用戶程序可以一個一個地串行執(zhí)行,也可以并行執(zhí)行。在單CPU計(jì)算機(jī)上,為了充分利用數(shù)據(jù)庫資源,應(yīng)該允許多個用戶程序并行的存取數(shù)據(jù)。這樣就會產(chǎn)生多個用戶程度并發(fā)地存取同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就會存取和存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的完整性(這里也稱為一致性)。在多CPU計(jì)算機(jī)或多計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境下,并發(fā)控制尤為重要。
(1)事務(wù)的概念 事務(wù)(Transaction)是并發(fā)控制的基本單位。所謂事務(wù)是一個操作序列。這些操作作為一個序列形成一個整體要么都做,要么都不做,是一個不可分割的工作單位。事務(wù)通常以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK操作結(jié)束。COMMIT即提交,提交事務(wù)中所有的操作,事務(wù)正常結(jié)束。ROLLBACK即撤消已作的所有操作,滾回到事務(wù)開始時的狀態(tài)。這里的操作指對數(shù)據(jù)庫的更新操作。滾回即相當(dāng)于所有操作均未執(zhí)行。事務(wù)和程序是兩個概念。一般地講,一個程序可包括多個事務(wù),由于事務(wù)是并發(fā)控制的基本單位,所以下面的討論均以事務(wù)為對象。
(2)數(shù)據(jù)一致性級別的概念。所謂并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,避免造成數(shù)據(jù)的不一致性,使一個用戶事務(wù)的執(zhí)行不受其它事務(wù)的干擾。
4.封鎖
封鎖(Locking)就是事務(wù)T可以向系統(tǒng)發(fā)出請求,對某個數(shù)據(jù)對象(最常用的是記錄)加鎖。于是事務(wù)T對這個數(shù)據(jù)對象就有一定的控制。例如,其它事務(wù)不能更新此數(shù)據(jù)直到T釋放(unlock)它的鎖為止。確切的控制由封鎖的類型決定;镜姆怄i類型有兩種:排它鎖(Exclu sive locks簡記為X鎖)和共享鎖(Share locks簡記為S鎖)。若事務(wù)T對數(shù)據(jù)R加上X鎖,則只允許T讀取和修改R;其它一切事務(wù)對R的任何(包括封鎖)請求都不成功,直至T釋放R上的X鎖為止。這就保證了其它事務(wù)不能再讀取和修改R,直到T釋放X鎖。若事務(wù)T對數(shù)據(jù)R加上S鎖,則其它事務(wù)對R的X鎖請求不能成功,而對R的共享請求可以得到。這就保證了其它事務(wù)以讀取R但不能修改R,直至T釋放S鎖為止。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |