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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

管理安全類

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

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

應(yīng)用DBMSOS

DB

方法:

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

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

DB

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

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

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

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

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

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

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

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

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

REVOKEINSERTONStudentFROM

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

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

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

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

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

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

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

REVOKESELECTONTABLEStudentFROMR1

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

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

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

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

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

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

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

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

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

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

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

問題一:

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

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

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

上的記錄。

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

用戶A可通過計(jì)算得出用戶B的工資。

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

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

實(shí)體完整性規(guī)則

參照完整性規(guī)則

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

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

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

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

Primarykey(Sno,Cno));

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

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

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

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

專業(yè)(專業(yè)號(hào),專業(yè)名)

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

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

OndeleteCascade/*刪除student表中元組時(shí),級(jí)連刪除SC*/

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論