第九章數(shù)據(jù)庫安全與完整性_第1頁
第九章數(shù)據(jù)庫安全與完整性_第2頁
第九章數(shù)據(jù)庫安全與完整性_第3頁
第九章數(shù)據(jù)庫安全與完整性_第4頁
第九章數(shù)據(jù)庫安全與完整性_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫系統(tǒng)原理授課教師:吳巖第九章數(shù)據(jù)庫安全性與完整性9.1計算機安全性概述9.2數(shù)據(jù)庫的安全性9.3統(tǒng)計數(shù)據(jù)庫安全9.4數(shù)據(jù)庫的完整性數(shù)據(jù)庫系統(tǒng)原理學(xué)習(xí)目標(biāo)

了解數(shù)據(jù)庫的安全性理論包含的內(nèi)容,理解安全數(shù)據(jù)庫的存取控制機制,掌握完整性約束的定義、檢查及違約處理的方法。學(xué)習(xí)重點自主存取控制方法強制存取控制方法完整性檢查和違約處理第九章數(shù)據(jù)庫的安全性與完整性第九章數(shù)據(jù)庫安全性與完整性9.1計算機安全性概述9.2數(shù)據(jù)庫的安全性9.3統(tǒng)計數(shù)據(jù)庫安全性9.4數(shù)據(jù)庫的完整性數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫的安全性與完整性第一節(jié)

計算機安全性概述一、計算機系統(tǒng)的安全性問題

計算機系統(tǒng)安全性是指為計算機系統(tǒng)建立和采取各種安全保護措施,以保護計算機系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止其因偶然或惡意的原因使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露。技術(shù)安全類

管理安全類

政策法律類數(shù)據(jù)庫的安全性與完整性計算機系統(tǒng)的安全性問題(續(xù))

1、技術(shù)安全類計算機系統(tǒng)中采用具有一定安全性的硬件、軟件來實現(xiàn)對計算機系統(tǒng)及其所存數(shù)據(jù)的安全性保護,當(dāng)計算機系統(tǒng)受到無意或惡意的攻擊時仍能保證系統(tǒng)的正常運行,保證系統(tǒng)內(nèi)的數(shù)據(jù)不增加、不丟失、不泄露。2、管理安全類指由于軟硬件意外故障、場地的意外事故、管理不善導(dǎo)致的計算機設(shè)備和數(shù)據(jù)介質(zhì)的物理破壞、丟失等安全問題。3、政策法律類指政府部門建立的有關(guān)計算機犯罪、數(shù)據(jù)安全保密的法律道德準則和政策法規(guī)、法令等。計算機系統(tǒng)的安全性問題(續(xù))數(shù)據(jù)庫的安全性與完整性1、可信計算機系統(tǒng)評估準則(TCSEC)TCSEC:1985年美國國防部(DoD)正式頒布的《DoD可信計算機系統(tǒng)評估準則》(TrustedComputerSystemEvaluationCriteria)TDI:1991年4月美國國家計算機安全中心頒布了《可信計算機系統(tǒng)評估準則關(guān)于可信數(shù)據(jù)庫系統(tǒng)的解釋》(TrustedDatabaseInterpretation),將TCSEC擴展到數(shù)據(jù)庫管理系統(tǒng)。二、信息安全標(biāo)準數(shù)據(jù)庫的安全性與完整性TCSEC/TDI從四個方面來描述安全性級別劃分的指標(biāo):策略責(zé)任保證文檔根據(jù)計算機系統(tǒng)對標(biāo)準中各項指標(biāo)的支持情況,TCSEC(TDI)將系統(tǒng)劃分為四組七個等級。數(shù)據(jù)庫的安全性與完整性可信計算機系統(tǒng)評估準則(續(xù))可信計算機系統(tǒng)評估準則(續(xù))數(shù)據(jù)庫的安全性與完整性TCSEC/TDI安全級別劃分D級:最低級、無安全保護的系統(tǒng),如DOS。C1級:提供初級的自主安全保護主體、客體分離自主訪問控制身份標(biāo)識與鑒別數(shù)據(jù)完整性C2級:提供受控的存取保護滿足C1級標(biāo)準全部功能審計如Windows2000,Oracle7數(shù)據(jù)庫的安全性與完整性可信計算機系統(tǒng)評估準則(續(xù))B1級:標(biāo)記安全保護滿足C2級標(biāo)準全部功能強制訪問控制如HP-UXBLSrelease9.0.9+,TrustedOracle7等B2級:結(jié)構(gòu)化保護滿足B1級標(biāo)準全部功能隱蔽通道數(shù)據(jù)庫安全的形式化數(shù)據(jù)庫的安全性與完整性可信計算機系統(tǒng)評估準則(續(xù))B3級:安全域滿足B2級標(biāo)準的全部功能訪問監(jiān)視器提供系統(tǒng)恢復(fù)過程A1級:驗證設(shè)計滿足B3級標(biāo)準的全部功能較高的形式化要求和驗證數(shù)據(jù)庫的安全性與完整性可信計算機系統(tǒng)評估準則(續(xù))信息安全標(biāo)準(續(xù))1985年美國國防部可信計算機系統(tǒng)評估準則(TCSEC)1993年加拿大可信計算機系統(tǒng)評估準則(CTCPEC)1991年歐洲信息技術(shù)安全評估準則(ITSEC)1993年美國信息技術(shù)安全聯(lián)邦標(biāo)準(FC)草案通用準則(CC)V1.01996年V2.01998年V2.11999年1999年CCV2.1成為國際標(biāo)準(ISO15408)2、信息安全標(biāo)準的發(fā)展第九章數(shù)據(jù)庫安全性與完整性9.1計算機安全性概述9.2數(shù)據(jù)庫的安全性9.3統(tǒng)計數(shù)據(jù)庫安全性9.4數(shù)據(jù)庫的完整性數(shù)據(jù)庫系統(tǒng)原理第二節(jié)數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性概述用戶標(biāo)識與鑒別存取控制視圖審計數(shù)據(jù)加密數(shù)據(jù)庫的安全性與完整性一、數(shù)據(jù)庫安全性概述1、非法使用數(shù)據(jù)庫的情況用戶編寫一段合法的程序繞過DBMS及其授權(quán)機制,通過操作系統(tǒng)直接存取、修改或備份數(shù)據(jù)庫中的數(shù)據(jù);多次合法查詢數(shù)據(jù)庫從中推導(dǎo)出一些保密數(shù)據(jù)。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫安全性概述(續(xù))例:某數(shù)據(jù)庫應(yīng)用系統(tǒng)禁止查詢單個人的工資,但允許查任意一組人的平均工資。用戶甲想了解張三的工資,于是他:首先查詢包括張三在內(nèi)的一組人的平均工資然后查用自己替換張三后這組人的平均工資從而推導(dǎo)出張三的工資數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫安全性概述(續(xù))

應(yīng)用DBMSOS

DB

方法:

用戶標(biāo)識和鑒定

存取控制審計視圖操作系統(tǒng)安全保護密碼存儲2、計算機系統(tǒng)中的安全模型安全控制層次高低數(shù)據(jù)庫的安全性與完整性應(yīng)用DBMSOS

DB

用戶標(biāo)識和鑒定

存取控制審計視圖操作系統(tǒng)安全保護密碼存儲安全控制層次高低

3、數(shù)據(jù)庫安全

數(shù)據(jù)庫安全性指保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞?;靖拍睿褐黧w、客體與主客體分離數(shù)據(jù)庫中的實體:數(shù)據(jù)表、視圖、快照、存儲過程、數(shù)據(jù)文件、數(shù)據(jù)庫訪問者等。主體:數(shù)據(jù)庫中的數(shù)據(jù)訪問者客體:數(shù)據(jù)庫中的數(shù)據(jù)及其載體數(shù)據(jù)庫安全性概述(續(xù))主體子集客體子集訪問數(shù)據(jù)庫安全性概述(續(xù))4、數(shù)據(jù)庫安全性控制的常用方法用戶標(biāo)識和鑒別存取控制視圖審計數(shù)據(jù)加密數(shù)據(jù)庫的安全性與完整性二、用戶標(biāo)識與鑒別

1、用戶身份標(biāo)識與鑒別的基本過程系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份;系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識;每次用戶要求進入系統(tǒng)時,由系統(tǒng)核對用戶提供的身份標(biāo)識;通過鑒定后才提供系統(tǒng)使用權(quán)。數(shù)據(jù)庫的安全性與完整性用戶標(biāo)識與鑒別(續(xù))用戶標(biāo)識自己的名字或身份的方法用戶名/口令簡單易行,容易被人竊取每個用戶預(yù)先約定好一個計算過程或者函數(shù)系統(tǒng)提供一個隨機數(shù)用戶根據(jù)自己預(yù)先約定的計算過程或者函數(shù)進行計算。系統(tǒng)根據(jù)用戶計算結(jié)果是否正確鑒定用戶身份。數(shù)據(jù)庫的安全性與完整性2、SQLServer2005數(shù)據(jù)庫的用戶身份鑒別(1)身份驗證模式①Windows身份驗證模式用戶通過Windows用戶賬戶連接到SQLServer,即用戶身份由Windows系統(tǒng)來驗證。SQLServer使用Windows操作系統(tǒng)中的信息驗證賬戶名和密碼。Windows身份驗證使用Kerberos安全協(xié)議,提供賬戶鎖定支持,并支持密碼過期。

用戶標(biāo)識與鑒別(續(xù))數(shù)據(jù)庫的安全性與完整性SQLServer數(shù)據(jù)庫身份鑒別模式(續(xù))②混合身份驗證模式

SQLServer身份驗證模式允許用戶使用Windows身份和SQLServer身份進行連接。通過Windows登錄賬戶連接的用戶可以使用Windows驗證的受信任連接。當(dāng)用戶指定的登錄名稱和密碼進行非信任連接時,SQLServer檢測輸入的登錄名和密碼是否與數(shù)據(jù)庫syslogins表中記錄的情況相同,據(jù)此進行身份驗證。數(shù)據(jù)庫的安全性與完整性(2)設(shè)置身份驗證模式使用ManagementStudio工具來設(shè)置驗證模式。方法一:打開ManagementStudio;在“已注冊的服務(wù)器”子窗口中要設(shè)置驗證模式的服務(wù)器上單擊鼠標(biāo)右鍵,然后在彈出的快捷菜單上選擇“屬性”,系統(tǒng)彈出“編輯服務(wù)器注冊屬性”窗口;在“常規(guī)”選項卡中,“服務(wù)器名稱”欄按<服務(wù)器名>[\<實例名>]格式選擇要注冊的服務(wù)器實例;在“身份驗證”欄選擇身份驗證模式;設(shè)置完成后單擊“測試”按鈕以確定設(shè)置是否正確;單擊“保存”按鈕完成設(shè)置。SQLServer數(shù)據(jù)庫身份鑒別模式(續(xù))數(shù)據(jù)庫的安全性與完整性設(shè)置身份驗證模式數(shù)據(jù)庫的安全性與完整性方法二:在ManagementStudio對象資源管理器中,右鍵單擊服務(wù)器,再單擊“屬性”。在“安全性”頁上的“服務(wù)器身份驗證”下選擇新的服務(wù)器身份驗證模式,單擊“確定”。設(shè)置身份驗證模式(續(xù))數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫的安全性與完整性(3)SQLServer系統(tǒng)登錄驗證過程SQLServer數(shù)據(jù)庫身份鑒別模式(續(xù))使用客戶應(yīng)用程序連接到SQLServerWindows身份驗證模式混合身份驗證模式SQLServer接受連接SQLServer拒絕連接身份驗證模式?使用Windows賬戶連接嗎?使用SQLServer賬戶連接嗎?連接許可?是有效登錄嗎?密碼正確嗎?NOYESNONOYESYESYESYESNONO數(shù)據(jù)庫的安全性與完整性(4)登錄管理①系統(tǒng)管理員登錄賬戶默認的系統(tǒng)管理員登錄賬戶sa:SQLServer身份驗證機制下的系統(tǒng)管理員BUILTIN\Administrators:Windows系統(tǒng)的系統(tǒng)管理員組為SQLServer系統(tǒng)管理員指定口令“對象資源管理器”→“安全性”→“登錄名”→“sa”→“屬性”→“登錄屬性窗口”→“密碼”SQLServer數(shù)據(jù)庫身份鑒別模式(續(xù))數(shù)據(jù)庫的安全性與完整性登錄管理(續(xù))數(shù)據(jù)庫的安全性與完整性登錄管理(續(xù))②使用ManagementStudio創(chuàng)建登錄賬戶右鍵單擊“新建登錄名”三、存取控制1、存取控制機制的功能確保僅授權(quán)給有資格的用戶訪問數(shù)據(jù)庫的權(quán)限,同時令所有未被授權(quán)的人員無法接近數(shù)據(jù)。是為了限制訪問主體(用戶、進程、服務(wù)等)對訪問客體(文件、系統(tǒng)等)的訪問權(quán)限,從而使系統(tǒng)在合法范圍內(nèi)使用;決定用戶能做什么,也決定代表一定用戶利益的程序能做什么。數(shù)據(jù)庫的安全性與完整性2、存取控制機制的組成(1)定義存取權(quán)限定義不同用戶(主體)對于不同數(shù)據(jù)對象(客體)允許執(zhí)行的操作權(quán)限。(2)檢查存取權(quán)限當(dāng)用戶發(fā)出存取操作請求后,DBMS查找數(shù)據(jù)字典中存儲的權(quán)限定義,檢查用戶操作的合法性。

用戶權(quán)限定義和合法權(quán)檢查機制一起組成了DBMS的安全子系統(tǒng)。存取控制(續(xù))數(shù)據(jù)庫的安全性與完整性存取控制(續(xù))3、常用存取控制方法自主存取控制(DiscreationaryAccessControl,DAC)強制存取控制(MandatoryAccessControl,MAC)基于角色的存取控制(RoleBasedAccessControl,RBAC)數(shù)據(jù)庫的安全性與完整性存取控制的方法(續(xù))4、自主存取控制(DAC)擁有資源的用戶自己決定其他一個或一些主體可以在什么程度上訪問哪些資源。同一用戶對于不同的數(shù)據(jù)對象有不同的存取權(quán)限。不同的用戶對同一對象也有不同的權(quán)限。用戶還可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。數(shù)據(jù)庫的安全性與完整性自主存取控制方法(續(xù))(1)存取權(quán)限的組成要素數(shù)據(jù)對象操作類型(2)定義存取權(quán)限定義一個用戶可以在哪些數(shù)據(jù)對象上進行哪些類型的操作。在數(shù)據(jù)庫系統(tǒng)中,定義存取權(quán)限稱為授權(quán)

(Authorization)。授權(quán)定義經(jīng)過編譯后存放在數(shù)據(jù)字典中。數(shù)據(jù)庫的安全性與完整性自主存取控制方法(續(xù))(3)關(guān)系系統(tǒng)中的存取權(quán)限類型數(shù)據(jù)庫的安全性與完整性自主存取控制方法(續(xù))(4)關(guān)系系統(tǒng)中的授權(quán)與回收SQL定義方法:使用GRANT/REVOKE語句授權(quán):GRANT<權(quán)限>[,<權(quán)限>]…ON<對象類型><對象名>…TO<用戶>[,<用戶>]…[WITHGRANTOPTION]回收:REVOKE<權(quán)限>[,<權(quán)限>]…ON<對象類型><對象名>…FROM<用戶>[,<用戶>]…[CASCADE|RESTRICT]數(shù)據(jù)庫的安全性與完整性例1:將對表Student的SELECT,INSERT權(quán)限授予王平。GRANTSELECT,INSERTONStudentTO王平WITHGRANTOPTION;收回王平對表Student的INSERT權(quán)限

REVOKEINSERTONStudentFROM

王平關(guān)系系統(tǒng)中的授權(quán)與回收(續(xù))數(shù)據(jù)庫的安全性與完整性關(guān)系系統(tǒng)中的授權(quán)與回收(續(xù))例2:學(xué)生-課程數(shù)據(jù)庫的用戶權(quán)限定義表數(shù)據(jù)庫的安全性與完整性自主存取控制方法(續(xù))(5)衡量DAC授權(quán)機制精巧程度的尺度①授權(quán)粒度授權(quán)粒度是指可以定義的數(shù)據(jù)對象的范圍授權(quán)定義中數(shù)據(jù)對象的粒度越細,即可以定義的數(shù)據(jù)對象的范圍越小,授權(quán)子系統(tǒng)就越靈活,但系統(tǒng)開銷也相應(yīng)增大。關(guān)系數(shù)據(jù)庫中授權(quán)的數(shù)據(jù)對象粒度數(shù)據(jù)庫表屬性列行數(shù)據(jù)庫的安全性與完整性自主存取控制方法(續(xù))②實現(xiàn)與數(shù)據(jù)值有關(guān)的授權(quán)是否提供與數(shù)據(jù)值有關(guān)的授權(quán),即授權(quán)是否依賴于數(shù)據(jù)對象的值。利用存取謂詞可以引用系統(tǒng)變量,如終端設(shè)備號,系統(tǒng)時鐘等實現(xiàn)與時間地點有關(guān)的存取權(quán)限,這樣用戶只能在某段時間內(nèi),某臺終端上存取有關(guān)數(shù)據(jù)

例如:規(guī)定“教師只能在每年1月份和7月份星期一至星期五上午8點到下午5點處理學(xué)生成績數(shù)據(jù)”。數(shù)據(jù)庫的安全性與完整性自主存取控制小結(jié)定義存取權(quán)限用戶檢查存取權(quán)限D(zhuǎn)BMS授權(quán)粒度數(shù)據(jù)對象粒度:數(shù)據(jù)庫、表、屬性列、行授權(quán)粒度越細,授權(quán)子系統(tǒng)就越靈活,能夠提供的安全性就越完善。但另一方面,因數(shù)據(jù)字典變大變復(fù)雜,系統(tǒng)定義與檢查權(quán)限的開銷也會相應(yīng)地增大。數(shù)據(jù)庫的安全性與完整性自主存取控制小結(jié)(續(xù))優(yōu)點能夠通過授權(quán)機制有效地控制其他用戶對敏感數(shù)據(jù)的存取缺點可能存在數(shù)據(jù)的“無意泄露”原因:這種機制僅僅通過對數(shù)據(jù)的存取權(quán)限來進行安全控制,而數(shù)據(jù)本身并無安全性標(biāo)記。解決:對系統(tǒng)控制下的所有主客體實施強制存取控制策略。數(shù)據(jù)庫的安全性與完整性5、強制存取控制(MAC)(1)基本思想每一個數(shù)據(jù)對象被標(biāo)以一定的密級。每一個用戶也被授予某一個級別的許可證。對于任意一個對象,只有具有合法許可證的用戶才可以存取。MAC不是用戶能直接感知或進行控制的。MAC適用于對數(shù)據(jù)有嚴格而固定密級分類的部門數(shù)據(jù)庫的安全性與完整性存取控制的方法(續(xù))強制存取控制方法(續(xù))(2)敏感度標(biāo)記對于主體和客體,DBMS為它們每個實例(值)指派一個敏感度標(biāo)記(Label)。主體的敏感度標(biāo)記稱為許可證級別,客體的敏感度標(biāo)記稱為密級。敏感度標(biāo)記分成若干級別絕密(TopSecret)機密(Secret)可信(Confidential)公開(Public)MAC機制通過對比主體的許可證級別和客體的密級,最終確定主體是否能夠存取客體。數(shù)據(jù)庫的安全性與完整性絕密級機密級可信級公開級保密性讀讀完整性寫寫(3)BellLapadula模型數(shù)據(jù)庫的安全性與完整性其訪問控制關(guān)系分為:上讀/下寫,下讀/上寫。

強制存取控制方法(續(xù))①保障信息完整性策略

低級別的主體可以讀高級別的客體的信息(不保密),但低級別的主體不能寫高級別的客體(保障完整性),因此采用的是上讀下寫策略。即屬于某一個安全級的主體可以讀本級和本級以上的客體,可以寫本級和本級以下的客體。BellLapadula模型(續(xù))數(shù)據(jù)庫的安全性與完整性②保障信息機密性策略

低級別的主體不可以讀高級別的信息(保密),但低級別的主體可以寫高級別的客體(完整性可能破壞),因此采用的是下讀/上寫策略。即屬于某一個安全級的主體可以寫本級和本級以上的客體,可以讀本級和本級以下的客體。數(shù)據(jù)庫的安全性與完整性BellLapadula模型(續(xù))TSSCUTSSCUR/WWR/WRR/WRWRRRR/WRWWWWSubjectsObjectsInformationFlowMACInformationFlow思考:此策略保障信息的完整性還是機密性?數(shù)據(jù)庫的安全性與完整性BellLapadula模型(續(xù))強制存取控制方法(續(xù))(4)強制存取控制的特點MAC是對數(shù)據(jù)本身進行密級標(biāo)記。無論數(shù)據(jù)如何復(fù)制,標(biāo)記與數(shù)據(jù)是一個不可分的整體。只有符合密級標(biāo)記要求的用戶才可以操縱數(shù)據(jù)。從而提供了更高級別的安全性。數(shù)據(jù)庫的安全性與完整性6、基于角色的訪問控制(1)角色的概念角色是一個與特定活動相關(guān)聯(lián)的一組動作和責(zé)任。數(shù)據(jù)庫角色是被命名的一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限,角色是權(quán)限的集合。(2)基于角色的訪問控制(RBAC)通過定義角色,為系統(tǒng)中的主體分配角色來實現(xiàn)訪問控制。通過各種角色的不同搭配授權(quán)來盡可能實現(xiàn)主體的最小授權(quán)。

數(shù)據(jù)庫的安全性與完整性存取控制的方法(續(xù))(3)基于角色的訪問控制模型

6.訪問用戶角色權(quán)限訪問控制資源2.分派1.認證3.請求4.分派5.訪問請求通過定義角色的權(quán)限,為系統(tǒng)中的主體分配角色來實現(xiàn)訪問控制。數(shù)據(jù)庫的安全性與完整性基于角色的存取控制的方法(續(xù))(4)數(shù)據(jù)庫中角色的創(chuàng)建與授權(quán)①角色的創(chuàng)建CREATEROLE<角色名>②給角色授權(quán)GRANT<權(quán)限>[,<權(quán)限>]…ON<對象類型><對象名>TO<角色>[,<角色>]…③將一個角色授予其他的角色或用戶GRANT<角色1>,[<角色2>]…TO<角色3>[<用戶1>]…[WITHADMINOPTION]數(shù)據(jù)庫的安全性與完整性基于角色的存取控制的方法(續(xù))④角色權(quán)限的收回REVOKE<權(quán)限>[,<權(quán)限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…REVOKE動作的執(zhí)行者或者是角色的創(chuàng)建者,或者擁有在這個角色上的ADMINOPTION。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫中角色的創(chuàng)建與授權(quán)(續(xù))例3:通過角色實現(xiàn)將一組權(quán)限授予用戶。(1)首先創(chuàng)建一個角色R1CREATEROLER1(2)為R1授權(quán)GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫中角色的創(chuàng)建與授權(quán)(續(xù))例3(續(xù)):通過角色實現(xiàn)將一組權(quán)限授予用戶(3)將角色授予用戶王平、張明、趙玲,使他們具有R1所包含的全部權(quán)限。GRANTR1TO王平,張明,趙玲(4)回收王平的這三個權(quán)限REVOKER1FROM王平數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫中角色的創(chuàng)建與授權(quán)(續(xù))⑤角色的權(quán)限修改例4:角色R1增加對Student表的DELETE權(quán)限GRANTDELETEONTABLEStudentTOR1例5:角色R1減少SELECT權(quán)限

REVOKESELECTONTABLEStudentFROMR1

數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫中角色的創(chuàng)建與授權(quán)(續(xù))(5)基于角色訪問控制的特點①提供了三種授權(quán)管理的控制途徑②系統(tǒng)中所有角色的關(guān)系結(jié)構(gòu)可以是層次化的,便于管理。③具有較好的提供最小權(quán)利的能力,從而提高安全性。④具有責(zé)任分離的能力。

改變客體的訪問權(quán)限改變角色的訪問權(quán)限改變主體所擔(dān)任的角色數(shù)據(jù)庫的安全性與完整性基于角色的存取控制的方法(續(xù))

例:在一個銀行系統(tǒng)中,可以定義出納員、分行管理者、系統(tǒng)管理員、顧客、審計員等角色。其中,擔(dān)任系統(tǒng)管理員的用戶具有維護系統(tǒng)文件的責(zé)任和權(quán)限,無論這個用戶是誰。設(shè)計如下訪問策略:

出納員可以修改顧客的帳號記錄(存款、取款、轉(zhuǎn)賬等),并允許出納員詢問所有帳號的注冊項;分行管理者可以修改顧客的帳號記錄,并允許分行管理者查詢所有帳號的注冊項,還可以創(chuàng)建和取消帳號;顧客可以詢問自己的注冊項,但不能詢問其他任何的注冊項;系統(tǒng)管理員可以詢問系統(tǒng)注冊項和開關(guān)系統(tǒng),但不允許讀或修改顧客的帳號信息;審計員可以閱讀系統(tǒng)中所有信息,但不允許修改任何信息。數(shù)據(jù)庫的安全性與完整性基于角色的存取控制的方法(續(xù))四、視圖1、視圖視圖是一個虛擬表,包含一系列帶有名稱的行和列數(shù)據(jù)。視圖中數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時動態(tài)生成??梢詾橛脩羲信d趣的特定數(shù)據(jù)和所負責(zé)的特定任務(wù),建立不同的視圖。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫的安全性與完整性視圖(續(xù))Student表SC表View例6:視圖(續(xù))2、視圖的作用視圖機制把要保密的數(shù)據(jù)對無權(quán)存取這些數(shù)據(jù)的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護。在實際應(yīng)用中通常是視圖機制與授權(quán)機制配合使用,首先用視圖機制屏蔽掉一部分保密數(shù)據(jù),然后在視圖上面再進一步定義存取權(quán)限。數(shù)據(jù)庫的安全性與完整性視圖(續(xù))例7:王平只能檢索計算機系學(xué)生的信息,系主任張明具有檢索和增刪改計算機系學(xué)生信息的所有權(quán)限。(1)先建立計算機系學(xué)生的視圖CS_Student CREATEVIEWCS_Student AS SELECT* FROMStudent WHERESdept='CS';數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫的安全性與完整性視圖(續(xù))例7(續(xù)):(2)在視圖上進一步定義存取權(quán)限GRANTSELECTONCS_StudentTO王平;GRANTALLPRIVILIGESONCS_StudentTO張明;五、審計審計功能啟用一個專用的審計日志,系統(tǒng)自動將用戶對數(shù)據(jù)庫的所有操作記錄在上面。審計記錄內(nèi)容包括:訪問時間、訪問類型、訪問客體名、是否成功等。DBA可以利用審計日志中的追蹤信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,以找出非法存取數(shù)據(jù)的人。數(shù)據(jù)庫的安全性與完整性審計(續(xù))用戶級審計任何用戶可設(shè)置,主要針對用戶自己創(chuàng)建的數(shù)據(jù)表或視圖,記錄所有用戶對表或視圖的一切成功和不成功的訪問要求及各種類型的SQL操作。系統(tǒng)級審計只能由DBA設(shè)置,用以監(jiān)測成功或失敗的登錄要求、監(jiān)測GRANT和REVOKE操作以及其他數(shù)據(jù)庫級權(quán)限下的操作。數(shù)據(jù)庫的安全性與完整性六、數(shù)據(jù)加密數(shù)據(jù)加密是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中失密的有效手段。1、數(shù)據(jù)加密的基本思想根據(jù)一定的算法將原始數(shù)據(jù)(明文)變換為不可直接識別的格式(密文)不知道解密密鑰的人無法獲知數(shù)據(jù)的內(nèi)容。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)加密(續(xù))2、加密方法替換方法使用密鑰(EncryptionKey)將明文中的每一個字符轉(zhuǎn)換為密文中的一個字符。置換方法將明文的字符按不同的順序重新排列。這兩種方法結(jié)合能提供相當(dāng)高的安全程度

數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)加密(續(xù))3、典型的數(shù)據(jù)加密算法數(shù)據(jù)加密標(biāo)準DES算法RSA公鑰算法EIGamal算法橢圓曲線密碼算法圓錐曲線密碼算法LUC公鑰密碼算法

數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)加密(續(xù))4、數(shù)據(jù)庫加密的基本要求(1)支持各種粒度加密(2)良好的密鑰管理機制(3)合理處理數(shù)據(jù)(4)不影響合法用戶的操作數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)加密(續(xù))5、數(shù)據(jù)庫加密的方式操作系統(tǒng)層加密DBMS內(nèi)核層實現(xiàn)加密DBMS外層實現(xiàn)加密數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫加密的方式(續(xù))DBMS內(nèi)核層加密:指數(shù)據(jù)加密在DBMS內(nèi)核層實現(xiàn),即數(shù)據(jù)在物理存取之前完成加/解密工作。DBMS外層實現(xiàn)加密:將數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個外層工具,根據(jù)加密要求自動完成對數(shù)據(jù)庫數(shù)據(jù)的加/解密處理,加/解密算法可以在客戶端進行。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫加密的方式(續(xù))數(shù)據(jù)加密(續(xù))6、數(shù)據(jù)庫加密系統(tǒng)的組成數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫加密系統(tǒng)將用戶對數(shù)據(jù)庫信息具體的加密要求以及參數(shù)信息保存在加密字典中,通過調(diào)用數(shù)據(jù)加/解密引擎實現(xiàn)對數(shù)據(jù)庫表的加密、解密以及數(shù)據(jù)轉(zhuǎn)換等功能。7、數(shù)據(jù)庫加密的密碼算法及加密粒度(1)數(shù)據(jù)庫加密算法數(shù)據(jù)庫加密通常采用分組密碼。如常用DES算法來對大量的數(shù)據(jù)進行加密。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)加密(續(xù))分組密碼模型加密算法解密算法密鑰明文密文明文密鑰DES算法基本思想:

首先將明文按64bit分為一組,然后對每組用給定的密鑰進行加密,得到密文分組,最后將各密文分組按順序進行連接,得到明文分組。DES加密實現(xiàn)的模式:電碼本模式:相同的數(shù)據(jù)加密后形成相同的密文;密碼分組鏈接模式:相同的數(shù)據(jù)加密后形成不同的密文。數(shù)據(jù)庫的安全性與完整性密碼算法及加密粒度(續(xù))(2)數(shù)據(jù)加密粒度①基表加密:使用的密鑰數(shù)量較少,密鑰的產(chǎn)生和管理較為容易,但是安全控制不靈活。②記錄加密:適合于一個用戶只允許訪問數(shù)據(jù)庫少量記錄的情況,產(chǎn)生和管理密鑰較為復(fù)雜。③字段加密:適合于許多用戶經(jīng)常以字段方式訪問數(shù)據(jù)庫的情況,密鑰的產(chǎn)生和管理比較復(fù)雜。④數(shù)據(jù)元素加密:是數(shù)據(jù)庫加密的最小粒度。具有最好的靈活性和適應(yīng)性,但加解密效率低,而且密鑰的產(chǎn)生和管理更復(fù)雜。數(shù)據(jù)庫的安全性與完整性密碼算法及加密粒度(續(xù))8、數(shù)據(jù)庫加密系統(tǒng)的密鑰管理(1)密鑰應(yīng)滿足的條件在產(chǎn)生大量密鑰的過程中,產(chǎn)生重復(fù)密鑰的概率要盡可能的低。從一個數(shù)據(jù)項的密鑰推導(dǎo)出另一個數(shù)據(jù)項的密鑰在計算上是不可行的。即使知道一些明文的統(tǒng)計分布,要從密文中獲取未知明文,在計算上是不可行的。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)加密(續(xù))(2)集中式密鑰管理方法

密鑰統(tǒng)一由數(shù)據(jù)庫密鑰管理中心產(chǎn)生和管理。數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫加密系統(tǒng)的密鑰管理(續(xù))第九章數(shù)據(jù)庫安全性與完整性9.1計算機安全性概述9.2數(shù)據(jù)庫的安全性9.3統(tǒng)計數(shù)據(jù)庫安全性9.4數(shù)據(jù)庫的完整性數(shù)據(jù)庫的安全性與完整性第三節(jié)統(tǒng)計數(shù)據(jù)庫安全性一、統(tǒng)計數(shù)據(jù)庫

統(tǒng)計數(shù)據(jù)庫是管理統(tǒng)計數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。這類數(shù)據(jù)庫包含有大量的數(shù)據(jù)記錄,但其目的是向用戶提供各種統(tǒng)計匯總信息,而不是提供單個記錄的信息。

例如:工業(yè)增加值增長速度工業(yè)主要產(chǎn)品產(chǎn)量及增長速度全社會客貨運輸量大中城市住宅銷售價格指數(shù)

數(shù)據(jù)庫的安全性與完整性二、統(tǒng)計數(shù)據(jù)庫的安全性用戶通過一系列合法的統(tǒng)計查詢,推理出某些秘密信息,使不合法的要求得到滿足。針對統(tǒng)計數(shù)據(jù)庫,要防止用戶從一系列查詢中推理出某些秘密信息。

問題一:

例8:兩個合法的查詢①本公司共有多少女高級程序員?②本公司女高級程序員的工資總額是多少?

如果第一個查詢結(jié)果是“1”,那么第二個查詢結(jié)果就是這個程序員的工資。

數(shù)據(jù)庫的安全性與完整性統(tǒng)計數(shù)據(jù)庫的安全性(續(xù))解決問題一:規(guī)則1:任何查詢至少要涉及N(N足夠大)個以

上的記錄。

問題二:例9:用戶A進行兩個合法的查詢①用戶A和其他N個程序員的工資總額是多少?②用戶B和其他N個程序員的工資總額是多少?

用戶A可通過計算得出用戶B的工資。

數(shù)據(jù)庫的安全性與完整性統(tǒng)計數(shù)據(jù)庫的安全問題(續(xù))解決問題二:規(guī)則2:任意兩個查詢的相交數(shù)據(jù)項不能超過M個。在上述兩條規(guī)則規(guī)定下,若想獲知用戶B的工資額,用戶A至少需要進行1+(N-2)/M次查詢。規(guī)則3:任一用戶的查詢次數(shù)不能超過1+(N-2)/M次。

數(shù)據(jù)庫的安全性與完整性第九章數(shù)據(jù)庫安全性與完整性9.1計算機安全性概述9.2數(shù)據(jù)庫的安全性9.3統(tǒng)計數(shù)據(jù)庫安全性9.4數(shù)據(jù)庫的完整性數(shù)據(jù)庫系統(tǒng)原理第四節(jié)數(shù)據(jù)庫的完整性數(shù)據(jù)庫完整性指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性。數(shù)據(jù)的完整性和安全性是兩個不同的概念。完整性:防止數(shù)據(jù)庫中存在不正確的數(shù)據(jù)。安全性:保護數(shù)據(jù)庫防止惡意的破壞和非法的存取。為保障數(shù)據(jù)庫的完整性,DBMS必須能夠:提供定義完整性約束條件的機制提供完整性檢查的方法違約處理數(shù)據(jù)庫的安全性與完整性數(shù)據(jù)庫完整性規(guī)則由三部分內(nèi)容組成:

實體完整性規(guī)則

參照完整性規(guī)則

用戶定義的完整性規(guī)則數(shù)據(jù)庫的完整性(續(xù))數(shù)據(jù)庫的安全性與完整性一、實體完整性1、實體完整性定義關(guān)系模型的實體完整性在CREATETABLE中用PRIMARYKEY定義。對單屬性構(gòu)成的碼有兩種說明方法一種是定義為列級約束條件一種是定義為表級約束條件對多個屬性構(gòu)成的碼定義為表級約束條件。數(shù)據(jù)庫的安全性與完整性例10將Student表中的Sno屬性定義為碼。

CREATETABLEStudent(SnoChar(9)Primarykey,SnameChar(20)Notnull,SsexChar(2),SageSmallint,SdeptChar(20));

實體完整性定義(續(xù))在列級定義主碼CREATETABLEStudent(SnoChar(9),SnameChar(20)Notnull,SsexChar(2),SageSmallint,SdeptChar(20),

Primarykey(Sno),);在表級定義主碼數(shù)據(jù)庫的安全性與完整性例11將SC表中的Sno,Cno屬性組定義為碼。CREATTABLESC(SnoChar(9)Notnull,Cnochar(4)Notnull,GradeSmallint,

Primarykey(Sno,Cno));

實體完整性定義(續(xù))數(shù)據(jù)庫的安全性與完整性2、實體完整性檢查和違約處理當(dāng)用戶程序?qū)颈聿迦胍粭l記錄或?qū)χ鞔a進行更新操作時,RDBMS將根據(jù)實體完整性規(guī)則進行檢查。包括:

(1)檢查主碼值是否唯一,如果不唯一則拒絕插入或修改。(2)檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改。數(shù)據(jù)庫的安全性與完整性實體完整性(續(xù))二、參照完整性1、參照完整性定義關(guān)系模型的參照完整性在CREATETABLE中用FOREIGNKEY短語定義哪些列為外碼,用REFERENCES短語指明這些外碼參照哪些表的主碼。數(shù)據(jù)庫的安全性與完整性例12定義SC中的參照完整性CREATETABLESC(SnoChar(9)Notnull,CnoChar(4)Notnull,GradeSmallint,Primarykey(Sno,Cno),ForeignKey(Sno)ReferencesStudent(Sno),ForeignKey(Cno)ReferencesCourse(Cno));參照完整性定義(續(xù))數(shù)據(jù)庫的安全性與完整性(1)參照完整性檢查對被參照表和參照表進行增刪操作時有可能破壞參照完整性,必須進行檢查。例如:對表SC和Student表有四種可能破壞參照完整性的情況。(1)SC表中增加一個元組,該元組的Sno屬性的值在表Student中找不到一個元組,其Sno屬性的值與之相等。(2)修改SC表中的一個元組,修改后該元組的Sno屬性的值在表Student中找不到一個元組,其Sno值與之相等。2、參照完整性檢查和違約處理數(shù)據(jù)庫的安全性與完整性參照完整性(續(xù))(3)從Student表中刪除一個元組,造成SC表中某些元組的Sno屬性的值在表Student中找不到一個元組,其Sno屬性的值與之相等。(4)修改Student表中一個元組的Sno屬性,造成SC表中某些元組的Sno屬性的值在Student表中找不到一個元組,其Sno值與之相等。參照完整性檢查(續(xù))數(shù)據(jù)庫的安全性與完整性(2)違約處理策略

①拒絕執(zhí)行(NoAction)不允許該操作執(zhí)行(一般設(shè)置為默認策略)。②級連操作(CASCADE)當(dāng)刪除或修改被參照表的一個元組造成了與參照表的不一致,則刪除或修改參照表中的所有造成不一致的元組。③設(shè)置為空值

當(dāng)刪除或修改被參照表的一個元組時造成了不一致,則將參照表中的所有造成不一致的元組的對應(yīng)屬性設(shè)置為空值。數(shù)據(jù)庫的安全性與完整性參照完整性檢查和違約處理(續(xù))例13學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)

專業(yè)(專業(yè)號,專業(yè)名)

假設(shè)專業(yè)表中專業(yè)號為12的元組被刪除,按照設(shè)置為空的策略,就要把學(xué)生表中專業(yè)號為12的所有元組的專業(yè)號設(shè)置為空值。

對于參照完整性,除了應(yīng)該定義外碼,還應(yīng)定義外碼列是否允許空值。一般地,當(dāng)對參照表和被參照表的操作違反了參照完整性,系統(tǒng)選擇默認策略,即拒絕執(zhí)行。如果讓系統(tǒng)采取其他的策略就必須在創(chuàng)建表時顯式地加以說明。數(shù)據(jù)庫的安全性與完整性參照完整性檢查和違約處理(續(xù))例14顯式地說明參照完整性的違約處理。CREATETABLESC(SnoChar(9)Notnull,CnoChar(4)Notnull,GradeSmallint,Primarykey(Sno,Cno),/*在表級定義實體完整性*/Foreignkey(Sno)ReferencesStudent(Sno),

OndeleteCascade/*刪除student表中元組時,級連刪除SC*/

OnupdateCascade,/*更新student表中元組時,級連更新SC*/Foreignkey(Cno)ReferencesCourse(Cno)Ondeletenoaction/*刪除Course表中元組時,拒絕刪除SC*/OnupdateCascade,);參照完整性檢查和違約處理(續(xù))數(shù)據(jù)庫的安全性與完整性參照完整性檢查和違約處理(續(xù))數(shù)據(jù)庫的安全性與完整性可能破壞參照完整性的情況及違約處理:三、用戶定義的完整性1、屬性上的約束條件定義在CREATETABLE中定義屬性的同時定義屬性上的約束條件。包括:列值非空(NOTNULL)列值唯一(UNIQUE)檢查列值是否滿足某布爾表達式(CHECK)數(shù)據(jù)庫的安全性與完整性屬性上的約束條件定義(續(xù))(1)不允許取空值例15定義SC表時,說明Sno、Cno、Grade屬性不允許取空值。CREATETABLESC(SnoChar(9)Notnull,CnoChar(4)Notnull,GradeSmallintNotnull,Primarykey(Sno,Cno));數(shù)據(jù)庫的安全性與完整性屬性上的約束條件定義(續(xù))(2)列值唯一例16建立部門表DEPT,要求部門名稱Dname列取唯一值,部門編號Deptno列為主碼。CREATETABLEDEPT(DeptnoNumeric(2),DnameChar(9)UNIQUE,LocationChar(10),Primarykey(Deptno));數(shù)據(jù)庫的安全性與完整性屬性上的約束條件定義(續(xù))(3)用CHECK短語指定列值應(yīng)該滿足的條件例17Student表的Ssex只允許取“男”或“女”。CREATETABLEStudent(SnoChar(9)Primarykey,SnameChar(20)Notnull,SsexChar(2)CHECK(SsexIN(‘男’,’女’)),SageSmallint,SdeptChar(20));數(shù)據(jù)庫的安全性與完整性屬性上的約束條件定義(續(xù))例18SC表的Grade值應(yīng)該在0-100之間。CREATETABLESC(SnoChar(9)Notnull,Cnochar(4)Notnull,GradeSmallintCHECK(Grade>=0ANDGrade<=100),Primarykey(Sno,Cno),Foreignkey(Sno)ReferencesStudent(Sno),Foreignkey(Cno)ReferencesCourse(Cno));數(shù)據(jù)庫的安全性與完整性用戶定義的完整性(續(xù))2、屬性上的約束條件檢查和違約處理

當(dāng)向表中插入元組或修改屬性的值時,DBMS就檢查屬性上的約束條件是否滿足,如果不滿足則操作被拒絕執(zhí)行。數(shù)據(jù)庫的安全性與完整性用戶定義的完整性(續(xù))3、元組上的約束條件定義在CREATETABLE中用CHECK短語定義元組上的約束條件。元組級的限制可以設(shè)置不同屬性之間的取值的相互約束條件。數(shù)據(jù)庫的安全性與完整性例19Student表中當(dāng)學(xué)生的性別為“男”時,其名字不能以Ms.打頭。CREATETABLEstudent

(SnoChar(9)Primarykey,Snamechar(20)Notnull,SsexChar(2),Sa

溫馨提示

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

評論

0/150

提交評論