【正文】
FROM V_SPJ WHERE SNO=39。S139。 第四章 數(shù)據(jù)庫安全性 一、選擇題 1. 以下( )不屬于實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)安全性的主要技術(shù)和方法。 A. 存取控制技術(shù) B. 視圖技術(shù) C. 審計技術(shù) D. 出入機(jī)房登記和加鎖 2. SQL中的視圖提高了數(shù)據(jù)庫系統(tǒng)的( )。 A. 完整性 B. 并發(fā)控制 C. 隔離性 D. 安全性 3. SQL語言的GRANT和REMOVE語句主要是用來維護(hù)數(shù)據(jù)庫的( )。 A. 完整性 B. 可靠性 C. 安全性 D. 一致性 4. 在數(shù)據(jù)庫的安全性控制中,授權(quán)的數(shù)據(jù)對象的( ),授權(quán)子系統(tǒng)就越靈活。 A. 范圍越小 B. 約束越細(xì)致 C. 范圍越大 D. 約束范圍大 選擇題答案: (1) D (2) D (3) C (4) A 三、簡答題 1. 什么是數(shù)據(jù)庫的安全性? 答: 數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。 2. 數(shù)據(jù)庫安全性和計算機(jī)系統(tǒng)的安全性有什么關(guān)系? 答: 安全性問題不是數(shù)據(jù)庫系統(tǒng)所獨(dú)有的,所有計算機(jī)系統(tǒng)都有這個問題。只是在數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,而且為許多最終用戶直接共享,從而使安全性問題更為突出。 系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要指標(biāo)之一。 數(shù)據(jù)庫的安全性和計算機(jī)系統(tǒng)的安全性,包括操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)的安全性是緊密聯(lián)系、相互支持的, 。 答: 實(shí)現(xiàn)數(shù)據(jù)庫安全性控制的常用方法和技術(shù)有: 1)用戶標(biāo)識和鑒別:該方法由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。每次用戶要求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核對,通過鑒定后才提供系統(tǒng)的使用權(quán)。 2)存取控制:通過用戶權(quán)限定義和合法權(quán)檢查確保只有合法權(quán)限的用戶訪問數(shù)據(jù)庫,所有未被授權(quán)的人員無法存取數(shù)據(jù)。例如C2級中的自主存取控制(DAC),B1級中的強(qiáng)制存取控制(MAC); 3)視圖機(jī)制:為不同的用戶定義視圖,通過視圖機(jī)制把要保密的數(shù)據(jù)對無權(quán)存取的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護(hù)。 4)審計:建立審計日志,把用戶對數(shù)據(jù)庫的所有操作自動記錄下來放入審計日志中, DBA可以利用審計跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。 5)數(shù)據(jù)加密:對存儲和傳輸?shù)臄?shù)據(jù)進(jìn)行加密處理,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容。 ? 答: 自主存取控制方法:定義各個用戶對不同數(shù)據(jù)對象的存取權(quán)限。當(dāng)用戶對數(shù)據(jù)庫訪問時首先檢查用戶的存取權(quán)限。防止不合法用戶對數(shù)據(jù)庫的存取。 強(qiáng)制存取控制方法:每一個數(shù)據(jù)對象被(強(qiáng)制地)標(biāo)以一定的密級,每一個用戶也被(強(qiáng)制地)授予某一個級別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級別的用戶才能存取某一個密級的數(shù)據(jù)對象。 *解析:自主存取控制中自主的含義是:用戶可以將自己擁有的存取權(quán)限“自主”地授予別人。即用戶具有一定的“自主”權(quán)。 (自主存取控制)的語句?請試舉幾例說明它們的使用方法。 答: SQL中 的自主存取控制是通過GRANT 語句和 REVOKE 語句來實(shí)現(xiàn)的。如: GRANT SELECT, INSERT ON Student TO 王平 WITH GRANT OPTION; 就將Student表的SELECT和INSERT權(quán)限授予了用戶王平,后面的“WITH GRANT OPTION”子句表示用戶王平同時也獲得了“授權(quán)”的權(quán)限,即可以把得到的權(quán)限繼續(xù)授予其他用戶。 REVOKE INSERT ON Student FROM 王平 CASCADE; 就將Student表 的INSERT權(quán)限從用戶王平處收回,選項 CASCADE 表示,如果用戶王平將 Student 的 INSERT 權(quán)限又轉(zhuǎn)授給了其他用戶,那么這些權(quán)限也將從其他用戶處收回。 ?。? 職工(職工號,姓名,年齡,職務(wù),工資,部門號) 部門(部門號,名稱,經(jīng)理名,地址,電話號) 請用SQL的GRANT和REVOKE語句(加上視圖機(jī)制)完成以下授權(quán)定義或存取控制功能: (a) 用戶王明對兩個表有SELECT權(quán)力; GRANT SELECT ON 職工,部門 TO 王明; (b) 用戶李勇對兩個表有INSERT和DELETE權(quán)力; GRANT INSERT,DELETE ON 職工,部門 TO 李勇; (c) *每個職工只對自己的記錄有SELECT權(quán)力; GRANT SELECT ON 職工 WHEN USER()= NAME TO ALL; 這里假定系統(tǒng)的GRANT語句支持WHEN子句和USER()的使用。用戶將自己的名字作為ID。注意,不同的系統(tǒng)這些擴(kuò)展語句可能是不同的。讀者應(yīng)該了解你使用的DBMS產(chǎn)品的擴(kuò)展語句。 (d) 用戶劉星對職工表有SELECT權(quán)力,對工資字段具有更新權(quán)力; GRANT SELECT,UPDATE(工資) ON 職工 TO 劉星; (e) 用戶張新具有修改這兩個表的結(jié)構(gòu)的權(quán)力; GRANT ALTER TABLE ON 職工,部門 TO 張新; (f) 用戶周平具有對兩個表所有權(quán)力(讀,插,改,刪數(shù)據(jù)),并具有給其他用戶授權(quán)的權(quán)力; GRANT ALL PRIVILIGES ON 職工,部門 TO 周平 WITH GRANT OPTION; (g) 用戶楊蘭具有從每個部門職工中SELECT最高工資,最低工資,平均工資的權(quán)力,他不能查看每個人的工資。 答: 首先建立一個視圖。然后對這個視圖定義楊蘭的存取權(quán)限。 CREATE VIEW 部門工資 AS SELECT ,MAX(工資),MIN(工資),AVG(工資) FROM 職工,部門 WHERE = 部門. 部門號 GROUP BY ; GRANT SELECT ON 部門工資 TO 楊蘭; (a)~(g) 的每一種情況,撤銷各用戶所授予的權(quán)力。 答: (a) REVOKE SELECT ON 職工,部門 FROM 王明; (b) REVOKE INSERT,DELETE ON 職工,部門 FROM 李勇; (c) REOVKE SELECT ON 職工 WHEN USER()= NAME FROM ALL; 這里假定用戶將自己的名字作為ID,且系統(tǒng)的REOVKE語句支持WHEN子句,系統(tǒng)也支持USER()的使用。 (d) REVOKE SELECT,UPDATE ON 職工 FROM 劉星; (e) REVOKE ALTER TABLE ON 職工,部門 FROM 張新; (f) REVOKE ALL PRIVILIGES ON 職工,部門 FROM 周平; (g) REVOKE SELECT ON 部門工資 FROM 楊蘭; DROP VIEW 部門工資; ??? 答: 強(qiáng)制存取控制(MAC)是對數(shù)據(jù)本身進(jìn)行密級標(biāo)記,無論數(shù)據(jù)如何復(fù)制,標(biāo)記與數(shù)據(jù)是一個不可分的整體,只有符合密級標(biāo)記要求的用戶才可以操縱數(shù)據(jù),從而提供了更高級別的安全性。 、客體、敏感度標(biāo)記的含義。 答: 主體是系統(tǒng)中的活動實(shí)體,既包括DBMS所管理的實(shí)際用戶,也包括代表用戶的各進(jìn)程。 客體是系統(tǒng)中的被動實(shí)體,是受主體操縱的,包括文件、基表、索引、視圖等。 對于主體和客體,DBMS為它們每個實(shí)例(值)指派一個敏感度標(biāo)記(Label)。敏感度標(biāo)記被分成若干級別,例如絕密(Top Secret)、機(jī)密(Secret)、可信(Confidential)、公開(Public)等。主體的敏感度標(biāo)記稱為許可證級別(Clearance Level),客體的敏感度標(biāo)記稱為密級(Classification Level)。 ,為什么要提供審計功能? 答: 審計功能是指DBMS的審計模塊在用戶對數(shù)據(jù)庫執(zhí)行操作的同時把所有操作自動記錄到系統(tǒng)的審計日志中。 因為任何系統(tǒng)的安全保護(hù)措施都不是完美無缺的,蓄意盜竊破壞數(shù)據(jù)的人總可能存在。利用數(shù)據(jù)庫的審計功能,DBA可以根據(jù)審計跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。 ??? 答: 統(tǒng)計數(shù)據(jù)庫允許用戶查詢聚集類型的信息,如合計、平均值、最大值、最小值等,不允許查詢單個記錄信息。但是,人們可以從合法的查詢中推導(dǎo)出不合法的信息,即可能存在隱蔽的信息通道,這是統(tǒng)計數(shù)據(jù)庫要研究和解決的特殊的安全性問題。 *12. 試述你了解的某一個實(shí)際的DBMS產(chǎn)品的安全性措施。 答: 不同的DBMS產(chǎn)品以及同一產(chǎn)品的不同版本的安全措施各不相同,仁者見仁,智者見智,請讀者自己了解。 第五章 數(shù)據(jù)庫完整性 一、選擇題 1.完整性檢查和控制的防范對象( ),防止它們進(jìn)入數(shù)據(jù)庫。安全性控制的防范對象是( ),防止他們對數(shù)據(jù)庫數(shù)據(jù)的存取。 A. 不合語義的數(shù)據(jù) B. 非法用戶 C. 不正確的數(shù)據(jù) D. 非法操作 2.下述哪個是SQL語言中的數(shù)據(jù)控制命令( )。 A. GRANT B. COMMIT C. UPDATE D. SELECT 3.下述SQL語言中的權(quán)限,哪一個允許用戶定義新關(guān)系時,引用其他關(guān)系的主碼作為外碼( )。 A. INSERT B. DELETE C. REFERENCES D. SELECT 選擇題答案: (1) A C B D (2) A (3) C 二、簡答題 ??? 答:數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。 ?。? 答:數(shù)據(jù)的完整性和安全性是兩個不同的概念,但是有一定的聯(lián)系。 前者是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出,即所謂垃圾進(jìn)垃圾出(Garbage In Garbage Out)所造成的無效操作和錯誤結(jié)果。 后者是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。 也就是說,安全性措施的防范對象是非法用戶和非法操作,完整性措施的防范對象是不合語義的數(shù)據(jù)。 ???可分為哪幾類? 答:完整性約束條件是指數(shù)據(jù)庫中的數(shù)據(jù)應(yīng)該滿足的語義約束條件。 一般可以分為六類: 靜態(tài)列級約束、靜態(tài)元組約束、靜態(tài)關(guān)系約束、動態(tài)列級約束、動態(tài)元組約束、動態(tài)關(guān)系約束。 靜態(tài)列級約束是對一個列的取值域的說明,包括以下幾方面: 1. 對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等 2. 對數(shù)據(jù)格式的約束 3. 對取值范圍或取值集合的約束。 4. 對空值的約束 5. 其他約束 靜態(tài)元組約束就是規(guī)定組成一個元組的各個列之間的約束關(guān)系,靜態(tài)元組約束只局限在單個元組上。 靜態(tài)關(guān)系約束是在一個關(guān)系的各個元組之間或者若干關(guān)系之間常常存在各種聯(lián)系或約束。常見的靜態(tài)關(guān)系約束有: 1. 實(shí)體完整性約束。 2. 參照完整性約束。 3. 函數(shù)依賴約束。 動態(tài)列級約束是修改列定義或列值時應(yīng)滿足的約束條件,包括下面兩方面: 1. 修改列定義時的約束 2. 修改列值時的約束 動態(tài)元組約束是指修改某個元組的值時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。 動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件,例如事務(wù)一致性、原子性等約束條件。 ?。? 答:DBMS的完整性控制機(jī)制應(yīng)具有三個方面的功能: 1). 定義功能,即提供定義完整性約束條件的機(jī)制。 2. 檢查功能,即檢查用戶發(fā)出的操作請求是否違背了完整性約束條件。 3). 違約反應(yīng):如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動作來保證數(shù)據(jù)的完整性。 ? 答: RDBMS在實(shí)現(xiàn)參照完整性時需要考慮以下幾個方面: 1) 外碼是否可以接受空值 2) 刪除被參照關(guān)系的元組時的考慮,這時系統(tǒng)可能采取的作法有三種: (a)級聯(lián)刪除(CASCADES); (b)受限刪除(RESTRICTED); (c)置空值刪除(NULLIFIES) 3) 在參照關(guān)系中插入元組時的問題,這時系統(tǒng)可能采取的作法有: (a)受限插入 (b)遞歸插入 4) 修改關(guān)系中主碼的問題 一般是不能用UPDATE語句修改關(guān)系主碼的。如果需要修改主碼值,只能先刪除該元組,然后再把具有新主碼值的元組插入到關(guān)系中。 如果允許修改主碼,首先要保證主碼的唯一性和非空,否則拒絕修改。然后要區(qū)分是參照關(guān)系還是被參照關(guān)系。 詳細(xì)討論可以參見《概論》。 6. 假設(shè)有下面兩個關(guān)系模式: 職工(職工號,姓名,年齡,職務(wù),工資,部門號),其中職工號為主碼; 部門(部門號,名稱,經(jīng)理名,電話),其中部門號為主碼; 用SQL語言定義這兩個關(guān)系模式,要求在模式中完成以下完整性約束條件的定義: 定義每個模式的主碼;定義參照完整性;定義職工年齡不得超過60歲。 答 CREATE TABLE DEPT (Deptno NUMBER(2), Deptname VARCHAR(10), Manager VARCHAR(10),