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