第6章數(shù)據(jù)庫保護(hù)機(jī)制_第1頁
第6章數(shù)據(jù)庫保護(hù)機(jī)制_第2頁
第6章數(shù)據(jù)庫保護(hù)機(jī)制_第3頁
第6章數(shù)據(jù)庫保護(hù)機(jī)制_第4頁
第6章數(shù)據(jù)庫保護(hù)機(jī)制_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 數(shù)據(jù)庫技術(shù)及應(yīng)用數(shù)據(jù)庫技術(shù)及應(yīng)用DB1第第6章章 數(shù)據(jù)庫保護(hù)機(jī)制數(shù)據(jù)庫保護(hù)機(jī)制 完整性控制完整性控制安全性控制安全性控制并發(fā)控制并發(fā)控制數(shù)據(jù)庫恢復(fù)數(shù)據(jù)庫恢復(fù)本章主要內(nèi)容:本章主要內(nèi)容:2第第6章章 數(shù)據(jù)庫保護(hù)機(jī)制數(shù)據(jù)庫保護(hù)機(jī)制數(shù)據(jù)庫中存放著大量的有價(jià)值的信息,因此采用怎數(shù)據(jù)庫中存放著大量的有價(jià)值的信息,因此采用怎樣行之有效的措施保護(hù)數(shù)據(jù)庫是非常重要的。樣行之有效的措施保護(hù)數(shù)據(jù)庫是非常重要的。比如,保護(hù)數(shù)據(jù)庫數(shù)據(jù)的正確性、有效性,保護(hù)數(shù)比如,保護(hù)數(shù)據(jù)庫數(shù)據(jù)的正確性、有效性,保護(hù)數(shù)據(jù)庫安全性,保護(hù)數(shù)據(jù)庫既使是出現(xiàn)各種故障據(jù)庫安全性,保護(hù)數(shù)據(jù)庫既使是出現(xiàn)各種故障 ,也,也能對其進(jìn)行有效地恢復(fù)等等。

2、能對其進(jìn)行有效地恢復(fù)等等。36.1 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性指數(shù)據(jù)的正確性和有效性指數(shù)據(jù)的正確性和有效性 。 數(shù)據(jù)庫的完整性是為了防止數(shù)據(jù)庫中存在數(shù)據(jù)庫的完整性是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯(cuò)誤信息的輸入不符合語義的數(shù)據(jù),防止錯(cuò)誤信息的輸入和輸出,和輸出,即所謂即所謂“垃圾進(jìn)垃圾出垃圾進(jìn)垃圾出”所造成所造成的無效操作和錯(cuò)誤結(jié)果。的無效操作和錯(cuò)誤結(jié)果。 數(shù)據(jù)庫是否具備完整性關(guān)系到數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫是否具備完整性關(guān)系到數(shù)據(jù)庫系統(tǒng)能否真實(shí)地反映現(xiàn)實(shí)世界,因此維護(hù)數(shù)據(jù)能否真實(shí)地反映現(xiàn)實(shí)世界,因此維護(hù)數(shù)據(jù)庫完整性是非常重要的。庫完整性是非常重要的。46.1 數(shù)

3、據(jù)庫的完整性數(shù)據(jù)庫的完整性 數(shù)據(jù)庫的完整性是由數(shù)據(jù)庫的完整性是由DBMS的完整性控制子系的完整性控制子系統(tǒng)實(shí)現(xiàn)的。統(tǒng)實(shí)現(xiàn)的。其主要功能為其主要功能為: :1.完整性檢查功能完整性檢查功能。檢查用戶發(fā)出的操作請求是。檢查用戶發(fā)出的操作請求是否違背了完整性約束條件否違背了完整性約束條件;2.2.應(yīng)對操作應(yīng)對操作。如果發(fā)現(xiàn)用戶操作違背了完整性規(guī)。如果發(fā)現(xiàn)用戶操作違背了完整性規(guī)則,為保證數(shù)據(jù)的完整性而采取的則,為保證數(shù)據(jù)的完整性而采取的動作動作。( (如撤如撤銷用戶操作銷用戶操作) ) 56.1.1 完整性規(guī)則完整性規(guī)則 完整性規(guī)則完整性規(guī)則是指附加在數(shù)據(jù)庫數(shù)據(jù)上的語義約是指附加在數(shù)據(jù)庫數(shù)據(jù)上的語義約

4、束條件。束條件。 每一條完整性規(guī)則包括每一條完整性規(guī)則包括3個(gè)部分個(gè)部分:(1)觸發(fā)條件:確定什么操作使用規(guī)則進(jìn)行檢查;觸發(fā)條件:確定什么操作使用規(guī)則進(jìn)行檢查;(2)約束條件約束條件: 確定要檢查什么樣的錯(cuò)誤;確定要檢查什么樣的錯(cuò)誤;(3)應(yīng)對措施:確定如果查出錯(cuò)誤該怎么處理。應(yīng)對措施:確定如果查出錯(cuò)誤該怎么處理。完整性規(guī)則作用的對象可以是關(guān)系、元組和列。完整性規(guī)則作用的對象可以是關(guān)系、元組和列。66.1.2 SQL Server的完整性的完整性本節(jié)介紹本節(jié)介紹SQL Server的完整性控制策略。的完整性控制策略。SQL Server數(shù)據(jù)完整性有四種類型數(shù)據(jù)完整性有四種類型: 實(shí)體完整性、域

5、完整性、實(shí)體完整性、域完整性、 參照完整性、用戶定義完整性參照完整性、用戶定義完整性71. 實(shí)體完整性實(shí)體完整性構(gòu)成主鍵的主屬性不能取空值構(gòu)成主鍵的主屬性不能取空值 。體現(xiàn)為:。體現(xiàn)為: UNIQUE唯一性約束(不允許為唯一性約束(不允許為null) PRIMARY KEY 約束(不允許為約束(不允許為null)例:例: CREATE TABLE 選課選課 (學(xué)號學(xué)號 CHAR(6) , , PRIMARY KEY(學(xué)號學(xué)號,課號課號) , )或或 CREATE TABLE 學(xué)生學(xué)生 (學(xué)號學(xué)號 CHAR(6) UNIQUE,)6.1.2 SQL Server的完整性的完整性82. 域完整性域

6、完整性 屬性列屬性列(字段字段)滿足的約束條件。體現(xiàn)為:滿足的約束條件。體現(xiàn)為:(1)對數(shù)據(jù)類型的約束對數(shù)據(jù)類型的約束:包括數(shù)據(jù)的類型、長包括數(shù)據(jù)的類型、長度、單位、精度等。度、單位、精度等。(2)對數(shù)據(jù)格式的約束對數(shù)據(jù)格式的約束 例例:規(guī)定學(xué)號的前兩位表示入學(xué)年份,中:規(guī)定學(xué)號的前兩位表示入學(xué)年份,中間兩位表示系的編號,后四位班級和序號,間兩位表示系的編號,后四位班級和序號,xxxxxxxxxxxxxxxx。 出生日期:出生日期:YY-MM-DD YY-MM-DD 6.1.2 SQL Server的完整性的完整性9(3)對取值范圍或取值集合的約束對取值范圍或取值集合的約束. 例如例如:規(guī)定成

7、績的取值范圍為:規(guī)定成績的取值范圍為0100 域級域級check子句子句(4)對空值的約束對空值的約束:有的列允許取空值,有的有的列允許取空值,有的列不允許取空值。列不允許取空值。 (5)設(shè)置默認(rèn)值設(shè)置默認(rèn)值default約束。約束。6.1.2 SQL Server的完整性的完整性103. 參照完整性參照完整性(外鍵完整性外鍵完整性) 兩個(gè)表之間滿足的參照兩個(gè)表之間滿足的參照(引用引用)關(guān)系的約束。關(guān)系的約束。即:外鍵表中外鍵的取值參照主鍵表中主即:外鍵表中外鍵的取值參照主鍵表中主鍵的值鍵的值 。 體現(xiàn)為:體現(xiàn)為: CREATE TABLE 選課選課 (. , FOREIGN KEY(學(xué)號學(xué)號

8、) REFERENCES 學(xué)生學(xué)生(學(xué)號學(xué)號) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION, )6.1.2 SQL Server的完整性的完整性說明說明:CASCADE:級聯(lián),級聯(lián),NO ACTION:受限:受限(默認(rèn)默認(rèn))114. 用戶定義完整性用戶定義完整性 用戶定義完整性是針對應(yīng)用業(yè)務(wù)需要而定用戶定義完整性是針對應(yīng)用業(yè)務(wù)需要而定義的完整性約束條件。義的完整性約束條件。體現(xiàn)為:體現(xiàn)為: (1) 表定義語句中的表定義語句中的CHECK子句子句 (2) 觸發(fā)器觸發(fā)器 (3) 規(guī)則(下節(jié)介紹)規(guī)則(下節(jié)介紹)6.1.2

9、SQL Server的完整性的完整性126.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性 一般不是很復(fù)雜的完整性約束都是在一般不是很復(fù)雜的完整性約束都是在create table語句中定義。更復(fù)雜的完整性語句中定義。更復(fù)雜的完整性實(shí)現(xiàn)要用觸發(fā)器和規(guī)則。實(shí)現(xiàn)要用觸發(fā)器和規(guī)則。 定義表時(shí)沒有定義的約束,可以在以后通定義表時(shí)沒有定義的約束,可以在以后通過創(chuàng)建觸發(fā)器和規(guī)則來實(shí)現(xiàn)。過創(chuàng)建觸發(fā)器和規(guī)則來實(shí)現(xiàn)。 check約束優(yōu)先于觸發(fā)器約束和規(guī)則約束執(zhí)約束優(yōu)先于觸發(fā)器約束和規(guī)則約束執(zhí)行。行。13*1. 使用規(guī)則實(shí)現(xiàn)完整性使用規(guī)則實(shí)現(xiàn)完整性 規(guī)則規(guī)則是獨(dú)立于表的單獨(dú)定義、存儲的數(shù)據(jù)是獨(dú)立于表

10、的單獨(dú)定義、存儲的數(shù)據(jù)庫對象。庫對象。CREATE RULE 規(guī)則名規(guī)則名 AS 約束表達(dá)式約束表達(dá)式規(guī)則中規(guī)則中可以是能用于可以是能用于WHERE子句中的任何表達(dá)式。子句中的任何表達(dá)式。如如: 創(chuàng)建規(guī)則創(chuàng)建規(guī)則6.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性14 Birthday=1980-01-01 AND Birthday=GETDATE( ) grade IN(a,A, B,b, C,c, D,d) code LIKE a-z%0-9 例例1 創(chuàng)建創(chuàng)建sno_rule規(guī)則,使得學(xué)號只能是規(guī)則,使得學(xué)號只能是6位位數(shù)字字符。數(shù)字字符。 CREATE RULE sno_ru

11、le AS sno LIKE 0-90-90-90-90-90-9 6.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性15 規(guī)則的綁定規(guī)則的綁定 創(chuàng)建好規(guī)則后,規(guī)則只是存儲在數(shù)據(jù)庫中的對象創(chuàng)建好規(guī)則后,規(guī)則只是存儲在數(shù)據(jù)庫中的對象并沒有發(fā)生作用,只有將規(guī)則綁定到相應(yīng)表的屬并沒有發(fā)生作用,只有將規(guī)則綁定到相應(yīng)表的屬性列,才能實(shí)現(xiàn)完整性約束。性列,才能實(shí)現(xiàn)完整性約束。 用存儲過程用存儲過程sp_bindrule綁定規(guī)則。綁定規(guī)則。語法格式:語法格式:sp_bindrule 規(guī)則名規(guī)則名, 對象名對象名 例例2 將規(guī)則將規(guī)則sno_rule綁定到學(xué)生表的學(xué)號屬性綁定到學(xué)生表的學(xué)號屬性列

12、上。列上。 sp_bindrule sno_rule 學(xué)生學(xué)生.學(xué)號學(xué)號6.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性16 規(guī)則的松綁規(guī)則的松綁 規(guī)則綁定后,可以解除,即松綁。規(guī)則綁定后,可以解除,即松綁。 用存儲過程用存儲過程sp_unbindrule為規(guī)則松綁。為規(guī)則松綁。 語法格式:語法格式:sp_unbindrule 對象名對象名例例3 解除規(guī)則解除規(guī)則sno_rule在學(xué)生表的學(xué)號屬性列在學(xué)生表的學(xué)號屬性列上的綁定。上的綁定。 sp_unbindrule 學(xué)生學(xué)生.學(xué)號學(xué)號6.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性17 刪除規(guī)則刪除規(guī)則 DRO

13、P RULE 規(guī)則名規(guī)則名1,規(guī)則規(guī)則2, 注意注意:在刪除規(guī)則前,必須先將其從約束對:在刪除規(guī)則前,必須先將其從約束對象上解除。象上解除。6.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性182. 使用觸發(fā)器實(shí)現(xiàn)完整性使用觸發(fā)器實(shí)現(xiàn)完整性 前面介紹的一些約束機(jī)制,屬于被動的約束機(jī)制。在檢查出對數(shù)據(jù)庫的操作違反約束后,只能做些比較簡單的動作,比如拒絕操作。 如果我們需要產(chǎn)生比規(guī)則更為復(fù)雜的限制,希望在某個(gè)操作后,系統(tǒng)能自動根據(jù)條件轉(zhuǎn)去執(zhí)行各種操作,甚至執(zhí)行與原操作無關(guān)的操作,那么可以用觸發(fā)器機(jī)制來實(shí)現(xiàn)。 第第5章已經(jīng)介紹過觸發(fā)器建立和使用。這里我們再章已經(jīng)介紹過觸發(fā)器建立和使用。

14、這里我們再 進(jìn)一步舉例說明。進(jìn)一步舉例說明。6.1.3 使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性使用規(guī)則和觸發(fā)器實(shí)現(xiàn)完整性196.2 安全性控制安全性控制6.2.1 安全性概述安全性概述1. 數(shù)據(jù)庫安全性的定義數(shù)據(jù)庫安全性的定義數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性是指保護(hù)數(shù)據(jù)庫以防止不合法是指保護(hù)數(shù)據(jù)庫以防止不合法的使用造成的數(shù)據(jù)泄露、更改或破壞的使用造成的數(shù)據(jù)泄露、更改或破壞。 所有計(jì)算機(jī)系統(tǒng)都有安全性問題。由于數(shù)所有計(jì)算機(jī)系統(tǒng)都有安全性問題。由于數(shù)據(jù)庫中存放大量有用信息,從而使安全性據(jù)庫中存放大量有用信息,從而使安全性問題更為突出。系統(tǒng)安全性保護(hù)措施是否問題更為突出。系統(tǒng)安全性保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能

15、指標(biāo)之一。有效是數(shù)據(jù)庫系統(tǒng)的主要性能指標(biāo)之一。20遠(yuǎn)程客戶遠(yuǎn)程客戶加密加密加密加密防火墻防火墻不安全的外網(wǎng)不安全的外網(wǎng)( 如如internet )DBMS授權(quán)控制授權(quán)控制安全的內(nèi)網(wǎng)安全的內(nèi)網(wǎng)(intranet)本地客戶本地客戶DBOS訪問控制訪問控制圖圖6.1 典型的多用戶數(shù)據(jù)庫應(yīng)用系統(tǒng)環(huán)境典型的多用戶數(shù)據(jù)庫應(yīng)用系統(tǒng)環(huán)境 數(shù)據(jù)庫系統(tǒng)的安全性依賴于其所在的計(jì)算機(jī)和網(wǎng)數(shù)據(jù)庫系統(tǒng)的安全性依賴于其所在的計(jì)算機(jī)和網(wǎng)絡(luò)環(huán)境的安全性絡(luò)環(huán)境的安全性。見下圖。見下圖。216.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法1. 用戶標(biāo)識與鑒定用戶標(biāo)識與鑒定 用戶標(biāo)識與鑒別是用戶標(biāo)識與鑒別是DBMS提

16、供的最外層安提供的最外層安全性保護(hù)措施。用戶只有通過鑒定后才被全性保護(hù)措施。用戶只有通過鑒定后才被獲得系統(tǒng)最外層的權(quán)限。獲得系統(tǒng)最外層的權(quán)限。 用戶標(biāo)識與鑒定的方法很多用戶標(biāo)識與鑒定的方法很多, 常用的有:常用的有:(1)身份認(rèn)證身份認(rèn)證: 是系統(tǒng)為用戶定義的用戶名是系統(tǒng)為用戶定義的用戶名, 指指用戶標(biāo)識用戶標(biāo)識用戶用戶ID用戶賬號。用戶賬號。(2) 口令口令:往往與身份認(rèn)證一起使用。:往往與身份認(rèn)證一起使用。22(3)隨機(jī)運(yùn)算認(rèn)證隨機(jī)運(yùn)算認(rèn)證:指非固定口令認(rèn)證,即用:指非固定口令認(rèn)證,即用戶每次的口令都不一樣。鑒別時(shí)系統(tǒng)提供戶每次的口令都不一樣。鑒別時(shí)系統(tǒng)提供一個(gè)隨機(jī)數(shù),用戶根據(jù)預(yù)先約定好的

17、計(jì)算一個(gè)隨機(jī)數(shù),用戶根據(jù)預(yù)先約定好的計(jì)算過程或函數(shù)進(jìn)行計(jì)算,得到口令。過程或函數(shù)進(jìn)行計(jì)算,得到口令。2. 存取控制存取控制 用戶通過身份鑒別并不意味著他可以任意用戶通過身份鑒別并不意味著他可以任意使用數(shù)據(jù)庫,用戶究竟能否使用數(shù)據(jù),使使用數(shù)據(jù)庫,用戶究竟能否使用數(shù)據(jù),使用哪些數(shù)據(jù),如何使用數(shù)據(jù)等問題需要進(jìn)用哪些數(shù)據(jù),如何使用數(shù)據(jù)等問題需要進(jìn)一步由存取控制來確定。一步由存取控制來確定。6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法23 存取控制又稱授權(quán)控制,其作用是保證有數(shù)據(jù)訪存取控制又稱授權(quán)控制,其作用是保證有數(shù)據(jù)訪問資格的用戶在授權(quán)范圍內(nèi)使用數(shù)據(jù),并讓未被問資格的用戶在授權(quán)范

18、圍內(nèi)使用數(shù)據(jù),并讓未被授權(quán)的用戶無法接近數(shù)據(jù)。授權(quán)的用戶無法接近數(shù)據(jù)。存取控制機(jī)制主要包括兩部分存取控制機(jī)制主要包括兩部分:1)定義用戶權(quán)限,并將用戶權(quán)限登記到數(shù)據(jù)字典中定義用戶權(quán)限,并將用戶權(quán)限登記到數(shù)據(jù)字典中。用戶權(quán)限用戶權(quán)限是指不同用戶對于不同數(shù)據(jù)對象允許執(zhí)是指不同用戶對于不同數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。系統(tǒng)必須提供適當(dāng)語言定義用戶行的操作權(quán)限。系統(tǒng)必須提供適當(dāng)語言定義用戶權(quán)限,這些定義經(jīng)過編譯后存放在數(shù)據(jù)字典中,權(quán)限,這些定義經(jīng)過編譯后存放在數(shù)據(jù)字典中,被稱為被稱為授權(quán)規(guī)則。授權(quán)規(guī)則。6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法242) 合法權(quán)限檢查合法權(quán)限檢查。每

19、個(gè)用戶發(fā)出存取數(shù)據(jù)每個(gè)用戶發(fā)出存取數(shù)據(jù)庫的操作請求后,庫的操作請求后,DBMS查找數(shù)據(jù)字典,查找數(shù)據(jù)字典,根據(jù)授權(quán)規(guī)則進(jìn)行合法權(quán)限檢查,若用戶根據(jù)授權(quán)規(guī)則進(jìn)行合法權(quán)限檢查,若用戶的操作請求超出了定義的權(quán)限,系統(tǒng)將拒的操作請求超出了定義的權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。絕執(zhí)行此操作。 用戶權(quán)限定義和合法性檢查機(jī)制一起組成用戶權(quán)限定義和合法性檢查機(jī)制一起組成了了DBMS的安全性子系統(tǒng)。的安全性子系統(tǒng)。6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法253. 視圖機(jī)制視圖機(jī)制 視圖把用戶可以使用的數(shù)據(jù)定義在視圖視圖把用戶可以使用的數(shù)據(jù)定義在視圖中,這樣用戶就不能使用視圖定義外的中,這樣用

20、戶就不能使用視圖定義外的其他數(shù)據(jù),從而保證了數(shù)據(jù)庫安全性。其他數(shù)據(jù),從而保證了數(shù)據(jù)庫安全性。6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法264. 審計(jì)審計(jì)(Audit) 審記功能審記功能就是把用戶對數(shù)據(jù)庫的所有操作自動就是把用戶對數(shù)據(jù)庫的所有操作自動記錄下來放入審記日志中記錄下來放入審記日志中。DBA可以利用審記可以利用審記跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時(shí)間和內(nèi)容列事件,找出非法存取數(shù)據(jù)的人、時(shí)間和內(nèi)容等。等。 審記通常是很費(fèi)時(shí)間和空間的,所有審記通常是很費(fèi)時(shí)間和空間的,所有DBMS往往往往都將

21、其作為可選功能,允許都將其作為可選功能,允許DBA根據(jù)應(yīng)用對安根據(jù)應(yīng)用對安全性的要求,靈活地打開或關(guān)閉審記功能。審全性的要求,靈活地打開或關(guān)閉審記功能。審記功能一般主要用于安全性要求較高的部門。記功能一般主要用于安全性要求較高的部門。6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法275. 數(shù)據(jù)加密數(shù)據(jù)加密 對于高度機(jī)密數(shù)據(jù),例如金融財(cái)務(wù)數(shù)據(jù)、軍事數(shù)對于高度機(jī)密數(shù)據(jù),例如金融財(cái)務(wù)數(shù)據(jù)、軍事數(shù)據(jù)等等,除以上安全措施外,還可以采用數(shù)據(jù)加據(jù)等等,除以上安全措施外,還可以采用數(shù)據(jù)加密技術(shù)。密技術(shù)。 數(shù)據(jù)加密數(shù)據(jù)加密是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中泄是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中泄露的

22、有效手段。露的有效手段。 加密的基本思想是加密的基本思想是:根據(jù)一定的算法將原始數(shù)據(jù):根據(jù)一定的算法將原始數(shù)據(jù)(明文)變換為不可直接識別的格式(密文),(明文)變換為不可直接識別的格式(密文),從而使不知道加密方法的人無法獲知數(shù)據(jù)的內(nèi)容。從而使不知道加密方法的人無法獲知數(shù)據(jù)的內(nèi)容。6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法28 加密方法分為兩類:加密方法分為兩類:6.2.2 數(shù)據(jù)庫安全性控制的一般方法數(shù)據(jù)庫安全性控制的一般方法加密方法加密方法對稱密鑰加密法對稱密鑰加密法非對稱(公開)密鑰加密法非對稱(公開)密鑰加密法 加密方法涉及要素加密方法涉及要素:加密密鑰:加密密鑰(

23、 (好比密碼好比密碼) )、解密密鑰和算法。解密密鑰和算法。 加密時(shí)加密時(shí),用加密算法根據(jù)明文和加密密鑰,用加密算法根據(jù)明文和加密密鑰生成密文;生成密文;解密時(shí)解密時(shí),用解密算法對密文和解,用解密算法對密文和解密密鑰進(jìn)行運(yùn)算得到明文。密密鑰進(jìn)行運(yùn)算得到明文。296.2.3 SQL Seerver的安全性控制的安全性控制SQL Server2000有有3個(gè)等級的安全驗(yàn)證:個(gè)等級的安全驗(yàn)證: SQL Server安全驗(yàn)證安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證SQL Server安全驗(yàn)證安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證

24、306.2.3.1 SQL Server 安全驗(yàn)證安全驗(yàn)證 SQL Server安全驗(yàn)證安全驗(yàn)證是根據(jù)用戶登錄是根據(jù)用戶登錄 SQL Server時(shí)提供的登錄名和密碼驗(yàn)證用戶是否時(shí)提供的登錄名和密碼驗(yàn)證用戶是否可以連接可以連接SQL Server。 SQL Server安全身份驗(yàn)證機(jī)制提供兩種模安全身份驗(yàn)證機(jī)制提供兩種模式:式:Windows驗(yàn)證模式驗(yàn)證模式和和混合驗(yàn)證模式混合驗(yàn)證模式。Windows驗(yàn)證模式驗(yàn)證模式混合驗(yàn)證模式混合驗(yàn)證模式SQL Server安全驗(yàn)證安全驗(yàn)證311. Windows身份身份驗(yàn)證模式驗(yàn)證模式 Windows 驗(yàn)證利用驗(yàn)證利用Windows 操作系統(tǒng)本身操作系統(tǒng)本

25、身驗(yàn)證用戶合法性的能力,驗(yàn)證用戶合法性的能力,允許用戶通過允許用戶通過 Windows 用戶帳戶連接到用戶帳戶連接到SQL Server。 使用這種模式,用戶只能使用使用這種模式,用戶只能使用Windows驗(yàn)驗(yàn)證登錄證登錄, 不能使用不能使用SQL Server 驗(yàn)證登錄。驗(yàn)證登錄。6.2.3.1 SQL Server 安全驗(yàn)證安全驗(yàn)證322.混合驗(yàn)證模式混合驗(yàn)證模式 使用這種驗(yàn)證模式,用戶可以使用使用這種驗(yàn)證模式,用戶可以使用Windows 驗(yàn)證或者驗(yàn)證或者SQL Server驗(yàn)證連接到驗(yàn)證連接到SQL Server 。登錄時(shí)兩者中選擇一種。登錄時(shí)兩者中選擇一種。6.2.3.1 SQL Se

26、rver 安全驗(yàn)證安全驗(yàn)證33 SQL Server 把設(shè)定的用戶名身份信息把設(shè)定的用戶名身份信息(比如登錄名比如登錄名和密碼和密碼)存在存在Master數(shù)據(jù)庫的表數(shù)據(jù)庫的表sysxlogins中。中。 SQL Server有一個(gè)特殊的有一個(gè)特殊的內(nèi)置登錄名內(nèi)置登錄名: sa(System Administrator,系統(tǒng)管理員,系統(tǒng)管理員),擁有在,擁有在SQL Server上的一切權(quán)限;上的一切權(quán)限; BUILTIN Administrator是另一個(gè)內(nèi)置登錄名,是另一個(gè)內(nèi)置登錄名,這是這是SQL Server為為Windows NT(基于基于NT的的)系統(tǒng)管系統(tǒng)管理員設(shè)置的默認(rèn)登錄名,也

27、擁有理員設(shè)置的默認(rèn)登錄名,也擁有SQL Server上一上一切權(quán)限。切權(quán)限。6.2.3.1 SQL Server 安全驗(yàn)證安全驗(yàn)證34 在在SQL Server上管理用戶身份信息主要有上管理用戶身份信息主要有兩種方法兩種方法: 一是在企業(yè)管理器中利用圖形界面來管理;一是在企業(yè)管理器中利用圖形界面來管理; 另一種是利用另一種是利用SQL Server提供的提供的管理用戶管理用戶身份的存儲過程,來管理用戶身份的存儲過程,來管理用戶。這些存儲。這些存儲過程必須在系統(tǒng)數(shù)據(jù)庫過程必須在系統(tǒng)數(shù)據(jù)庫Master中使用(當(dāng)中使用(當(dāng)然要有足夠的權(quán)限)。然要有足夠的權(quán)限)。6.2.3.1 SQL Server

28、安全驗(yàn)證安全驗(yàn)證356.2.3.1 SQL Server 安全驗(yàn)證安全驗(yàn)證可視化定義可視化定義新登錄用戶新登錄用戶36(1) sp_addlogin:創(chuàng)建用戶身份信息創(chuàng)建用戶身份信息 Exec sp_addlogin s1, 111111, 教學(xué)數(shù)據(jù)教學(xué)數(shù)據(jù)庫庫 創(chuàng)建一條用戶身份信息,登錄名創(chuàng)建一條用戶身份信息,登錄名s1,密碼密碼111111,默認(rèn)數(shù)據(jù)庫默認(rèn)數(shù)據(jù)庫教學(xué)數(shù)據(jù)庫教學(xué)數(shù)據(jù)庫。(2) sp_droplogin:刪除用戶身份信息刪除用戶身份信息 Exec sp_droplogin s1 刪除刪除s1用戶身份信息。用戶身份信息。6.2.3.1 SQL Server 安全驗(yàn)證安全驗(yàn)證37(

29、3) sp_grantlogin:將:將Windows的用戶或用戶組添加的用戶或用戶組添加成成SQL Server的登錄名。的登錄名。 Exec sp_grantlogin zhujing-pcu1將將Windows用戶用戶u1添加成添加成SQL Server的登錄名。的登錄名。 (zhujing-pc為計(jì)算機(jī)域名為計(jì)算機(jī)域名)(4) sp_denylogin:拒絕某拒絕某Windows用戶用戶(或用戶組或用戶組)連接到連接到SQL Server。 Exec sp_denylogin u1 拒絕拒絕Windows用戶用戶u1連接到連接到SQL Server 。6.2.3.1 SQL Serve

30、r 安全驗(yàn)證安全驗(yàn)證38(5) sp_revokelogin:刪除某:刪除某Windows用戶在用戶在SQL Server上的用戶身份信息。上的用戶身份信息。 Exec sp_revokelogin zhujing-pcu1刪除刪除Windows用戶用戶u1在在SQL Server上的身份信息。上的身份信息。6.2.3.1 SQL Server 安全驗(yàn)證安全驗(yàn)證396.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證 用戶成功連接到用戶成功連接到SQL Server后,如果想后,如果想訪問某個(gè)數(shù)據(jù)庫,他們還必須在數(shù)據(jù)庫訪問某個(gè)數(shù)據(jù)庫,他們還必須在數(shù)據(jù)庫中有賬號,否則對該數(shù)據(jù)庫的訪問就會中有賬號,否則對

31、該數(shù)據(jù)庫的訪問就會遭到拒絕。遭到拒絕。406.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證 數(shù)據(jù)庫賬號與登錄名區(qū)別:數(shù)據(jù)庫賬號與登錄名區(qū)別: 登錄名登錄名作用范圍是整個(gè)作用范圍是整個(gè)SQL Server,使用,使用一個(gè)登錄名可以跟服務(wù)器上所有數(shù)據(jù)庫進(jìn)一個(gè)登錄名可以跟服務(wù)器上所有數(shù)據(jù)庫進(jìn)行交互。行交互。 數(shù)據(jù)庫賬號數(shù)據(jù)庫賬號的作用范圍只是一個(gè)數(shù)據(jù)庫,的作用范圍只是一個(gè)數(shù)據(jù)庫,它是一個(gè)或多個(gè)登錄名在某個(gè)數(shù)據(jù)庫上的它是一個(gè)或多個(gè)登錄名在某個(gè)數(shù)據(jù)庫上的映射,數(shù)據(jù)庫賬號相關(guān)信息存儲在各個(gè)數(shù)映射,數(shù)據(jù)庫賬號相關(guān)信息存儲在各個(gè)數(shù)據(jù)庫的據(jù)庫的sysusers表中。表中。41 數(shù)據(jù)庫賬號與登錄名關(guān)系:數(shù)據(jù)庫賬號與登

32、錄名關(guān)系: 同一個(gè)登錄名可以映射到不同數(shù)據(jù)庫上的同一個(gè)登錄名可以映射到不同數(shù)據(jù)庫上的不同數(shù)據(jù)庫賬號;但在一個(gè)數(shù)據(jù)庫上,一個(gè)不同數(shù)據(jù)庫賬號;但在一個(gè)數(shù)據(jù)庫上,一個(gè)登錄名只能有一個(gè)映射,多個(gè)登錄名可以映登錄名只能有一個(gè)映射,多個(gè)登錄名可以映射到同一個(gè)數(shù)據(jù)庫賬號。射到同一個(gè)數(shù)據(jù)庫賬號。 默認(rèn)情況下,新創(chuàng)建的每個(gè)數(shù)據(jù)庫只有一個(gè)默認(rèn)情況下,新創(chuàng)建的每個(gè)數(shù)據(jù)庫只有一個(gè)賬號賬號dbo,系統(tǒng)管理員登錄名,系統(tǒng)管理員登錄名sa默認(rèn)映射到默認(rèn)映射到每個(gè)數(shù)據(jù)庫的每個(gè)數(shù)據(jù)庫的dbo賬號。賬號。6.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證42 guest賬號賬號:一般情況下,數(shù)據(jù)庫賬號總:一般情況下,數(shù)據(jù)庫賬號總跟某個(gè)

33、(或某些)登錄名之間有映射關(guān)系,跟某個(gè)(或某些)登錄名之間有映射關(guān)系,但是但是guest賬號除外,他不跟特定登錄名賬號除外,他不跟特定登錄名建立映射關(guān)系,那些在數(shù)據(jù)庫中沒有對應(yīng)建立映射關(guān)系,那些在數(shù)據(jù)庫中沒有對應(yīng)賬號的登錄名都映射到賬號的登錄名都映射到guest。 master和和tempdb數(shù)據(jù)庫中必須存在數(shù)據(jù)庫中必須存在guest賬號,其他數(shù)據(jù)庫中可以任意添加賬號,其他數(shù)據(jù)庫中可以任意添加或刪除或刪除guest賬號。賬號。6.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證43 當(dāng)一個(gè)登錄名請求訪問一個(gè)數(shù)據(jù)庫時(shí),當(dāng)一個(gè)登錄名請求訪問一個(gè)數(shù)據(jù)庫時(shí),SQL Server在該數(shù)據(jù)庫的在該數(shù)據(jù)庫的sysu

34、sers表中表中查找該登錄名對應(yīng)的數(shù)據(jù)庫賬號,如果查查找該登錄名對應(yīng)的數(shù)據(jù)庫賬號,如果查到,則可以訪問該數(shù)據(jù)庫,如果沒找到,到,則可以訪問該數(shù)據(jù)庫,如果沒找到, SQL Server則試圖將該登錄賬號映射成則試圖將該登錄賬號映射成guest數(shù)據(jù)庫賬號,如果還失敗,那么這數(shù)據(jù)庫賬號,如果還失敗,那么這個(gè)登錄名就不能訪問該數(shù)據(jù)庫。個(gè)登錄名就不能訪問該數(shù)據(jù)庫。6.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證44 管理數(shù)據(jù)庫賬號的核心是管理登錄名跟數(shù)管理數(shù)據(jù)庫賬號的核心是管理登錄名跟數(shù)據(jù)庫賬號之間的映射關(guān)系。管理數(shù)據(jù)庫賬據(jù)庫賬號之間的映射關(guān)系。管理數(shù)據(jù)庫賬號可用企業(yè)管理器的圖形界面。也可以通號可用企業(yè)管理

35、器的圖形界面。也可以通過系統(tǒng)存儲過程進(jìn)行。過系統(tǒng)存儲過程進(jìn)行。(1)(1)sp_grantdbaccess 創(chuàng)建數(shù)據(jù)庫賬號,創(chuàng)建數(shù)據(jù)庫賬號,并建立登錄名到賬號的映射。該存儲過程并建立登錄名到賬號的映射。該存儲過程只能對當(dāng)前數(shù)據(jù)庫使用。只能對當(dāng)前數(shù)據(jù)庫使用。例:例:use use 教學(xué)數(shù)據(jù)庫教學(xué)數(shù)據(jù)庫 Exec Exec sp_grantdbaccesssp_grantdbaccess s1 s1 ,u1,u16.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證45說明:說明: 如果數(shù)據(jù)庫賬號如果數(shù)據(jù)庫賬號u1不存在,則創(chuàng)建該賬號,不存在,則創(chuàng)建該賬號,在數(shù)據(jù)庫中把登錄名在數(shù)據(jù)庫中把登錄名s1映射到賬號

36、映射到賬號u1。第。第二個(gè)參數(shù)二個(gè)參數(shù)(數(shù)據(jù)庫賬號數(shù)據(jù)庫賬號)可省略,省略時(shí)表可省略,省略時(shí)表示它跟第一個(gè)參數(shù)示它跟第一個(gè)參數(shù)(登錄名登錄名)相同。相同。6.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證46(2) (2) sp_revokedbaccess 刪除數(shù)據(jù)庫賬號,刪除數(shù)據(jù)庫賬號,該存儲過程只能對當(dāng)前數(shù)據(jù)庫使用。該存儲過程只能對當(dāng)前數(shù)據(jù)庫使用。例:例:Exec sp_revokedbaccess s1,u1 刪除數(shù)據(jù)庫中的賬號刪除數(shù)據(jù)庫中的賬號u1。在刪除任何登錄。在刪除任何登錄名之前,必須先刪除各個(gè)數(shù)據(jù)庫中該賬號名之前,必須先刪除各個(gè)數(shù)據(jù)庫中該賬號映射的賬號,以免留下映射的賬號,以免留下

37、“孤立孤立”賬號,沒賬號,沒有任何登錄名映射到它。每個(gè)數(shù)據(jù)庫的有任何登錄名映射到它。每個(gè)數(shù)據(jù)庫的dbo賬號都不能刪除。賬號都不能刪除。6.2.3.2 數(shù)據(jù)庫安全驗(yàn)證數(shù)據(jù)庫安全驗(yàn)證476.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證一個(gè)用戶通過登錄名的映射在一個(gè)數(shù)據(jù)庫中一個(gè)用戶通過登錄名的映射在一個(gè)數(shù)據(jù)庫中擁有賬號后就可以訪問這個(gè)數(shù)據(jù)庫了,但是擁有賬號后就可以訪問這個(gè)數(shù)據(jù)庫了,但是用戶在這個(gè)數(shù)據(jù)庫上究竟可以做些什么操作,用戶在這個(gè)數(shù)據(jù)庫上究竟可以做些什么操作,這要由這個(gè)數(shù)據(jù)庫上的權(quán)限設(shè)置來決定。數(shù)這要由這個(gè)數(shù)據(jù)庫上的權(quán)限設(shè)置來決定。數(shù)據(jù)庫的權(quán)限設(shè)置在數(shù)據(jù)庫賬號之上(只有據(jù)庫的權(quán)限設(shè)置在數(shù)

38、據(jù)庫賬號之上(只有CREATE DATABASE語句權(quán)限例外,它由語句權(quán)限例外,它由sa授權(quán)登錄名),有效作用范圍是單個(gè)數(shù)據(jù)授權(quán)登錄名),有效作用范圍是單個(gè)數(shù)據(jù)庫,權(quán)限不能跨越數(shù)據(jù)庫。庫,權(quán)限不能跨越數(shù)據(jù)庫。48數(shù)據(jù)庫的權(quán)限分為兩類數(shù)據(jù)庫的權(quán)限分為兩類:語句權(quán)限和對象權(quán)限。語句權(quán)限和對象權(quán)限。1. 語句權(quán)限語句權(quán)限 語句權(quán)限語句權(quán)限是指創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對象以是指創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對象以及備份數(shù)據(jù)庫的權(quán)限。及備份數(shù)據(jù)庫的權(quán)限。 語句權(quán)限針對的是語句權(quán)限針對的是SQL語句的執(zhí)行,而不語句的執(zhí)行,而不是數(shù)據(jù)庫中已經(jīng)存在的某些對象。表是數(shù)據(jù)庫中已經(jīng)存在的某些對象。表6-1列出列出了了SQL Serv

39、er中語句權(quán)限適用的語句。中語句權(quán)限適用的語句。6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證49語句語句權(quán)限說明權(quán)限說明(只能由只能由sa授予登錄名授予登錄名)CREATE DATABASE允許創(chuàng)建數(shù)據(jù)庫允許創(chuàng)建數(shù)據(jù)庫CREATE DEFAULT允許創(chuàng)建默認(rèn)值允許創(chuàng)建默認(rèn)值CREATE PROCEDURE允許創(chuàng)建存儲過程允許創(chuàng)建存儲過程CREATE RULE允許創(chuàng)建規(guī)則允許創(chuàng)建規(guī)則CREATE TABLE允許創(chuàng)建表允許創(chuàng)建表CREATE VIEW允許創(chuàng)建視圖允許創(chuàng)建視圖BACKUP DATABASE允許備份數(shù)據(jù)庫允許備份數(shù)據(jù)庫BACKUP LOG允許備份日志允許備份日志表表6.1

40、語句權(quán)限適用的語句語句權(quán)限適用的語句6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證502. 對象權(quán)限對象權(quán)限是指操作數(shù)據(jù)和執(zhí)行存儲過程的權(quán)限。是指操作數(shù)據(jù)和執(zhí)行存儲過程的權(quán)限。表表6.2 對象權(quán)限適用的對象和操作對象權(quán)限適用的對象和操作操作操作權(quán)限說明權(quán)限說明適用范圍適用范圍SELECT允許查詢允許查詢表、視圖、表的列表、視圖、表的列UPDATE允許修改允許修改表、視圖、表的列表、視圖、表的列INSERT允許插入允許插入表、視圖表、視圖DELETE允許刪除允許刪除表、視圖表、視圖EXECUTE允許調(diào)用過程允許調(diào)用過程 存儲過程存儲過程REFERENCE 允許引用允許引用(參參照完整性

41、照完整性)表、表的列表、表的列513. 權(quán)限管理權(quán)限管理 權(quán)限管理可以通過企業(yè)管理器進(jìn)行,也可權(quán)限管理可以通過企業(yè)管理器進(jìn)行,也可以用以用T-SQL完成。下面我們簡單介紹一下如完成。下面我們簡單介紹一下如何用何用T-SQL管理權(quán)限。管理權(quán)限。權(quán)限管理主要有授權(quán)、收回權(quán)限和拒絕三類。權(quán)限管理主要有授權(quán)、收回權(quán)限和拒絕三類。授權(quán)授權(quán)是規(guī)定某數(shù)據(jù)庫賬號可以執(zhí)行某個(gè)操作,是規(guī)定某數(shù)據(jù)庫賬號可以執(zhí)行某個(gè)操作,用用GRANT語句進(jìn)行授權(quán)操作。語句進(jìn)行授權(quán)操作。6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證52授權(quán)語句授權(quán)語句: GRANT ALL PRIVILEGES |權(quán)限權(quán)限1,權(quán)限權(quán)限2

42、, ON 對象名對象名 TO 用戶賬號用戶賬號1,賬號賬號2, 6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證例例1:授予授予u1賬號創(chuàng)建視圖的權(quán)限。賬號創(chuàng)建視圖的權(quán)限。 GRANT CREATE VIEW TO u153例例2:授予授予u1賬號對學(xué)生表具有賬號對學(xué)生表具有insert權(quán)限。權(quán)限。 GRANT INSERT ON 學(xué)生學(xué)生 TO u1 例例3:把查學(xué)生表和修改學(xué)生學(xué)號的權(quán)限授予用戶把查學(xué)生表和修改學(xué)生學(xué)號的權(quán)限授予用戶u4。 GRANT SELECT, UPDATE(學(xué)號學(xué)號) ON 學(xué)生學(xué)生 TO u46.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證54回收

43、權(quán)限語句回收權(quán)限語句: REVOKE 權(quán)限權(quán)限1, ON 對象名對象名 FROM 用戶名用戶名例例4:回收:回收u1賬號創(chuàng)建視圖的權(quán)限。賬號創(chuàng)建視圖的權(quán)限。 REVOKE CREATE VIEW FROM u16.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證回收權(quán)限回收權(quán)限:是撤銷某數(shù)據(jù)庫賬戶在某數(shù)據(jù)對:是撤銷某數(shù)據(jù)庫賬戶在某數(shù)據(jù)對象上的操作權(quán)限。象上的操作權(quán)限。55拒絕語句拒絕語句:DENY 權(quán)限權(quán)限1, ON 對象名對象名 TO 用戶名用戶名例例4:規(guī)定:規(guī)定u1賬號不能創(chuàng)建視圖。賬號不能創(chuàng)建視圖。 DENY CREATE VIEW TO u16.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)

44、據(jù)庫對象的安全驗(yàn)證拒絕拒絕:是顯式地規(guī)定某數(shù)據(jù)庫賬戶不能執(zhí)行:是顯式地規(guī)定某數(shù)據(jù)庫賬戶不能執(zhí)行某個(gè)操作。某個(gè)操作。564. 角色角色 用戶在用戶在SQL Server系統(tǒng)內(nèi)進(jìn)行任何操作,系統(tǒng)內(nèi)進(jìn)行任何操作,必須要有相應(yīng)的權(quán)限,因此為不同用戶分配必須要有相應(yīng)的權(quán)限,因此為不同用戶分配合適的權(quán)限是數(shù)據(jù)庫管理員例行公事。然后,合適的權(quán)限是數(shù)據(jù)庫管理員例行公事。然后,如果一個(gè)數(shù)據(jù)庫用戶太多,如有如果一個(gè)數(shù)據(jù)庫用戶太多,如有5000人,要人,要為他們一一分配權(quán)限工作量就顯得太大。而為他們一一分配權(quán)限工作量就顯得太大。而現(xiàn)實(shí)中許多用戶權(quán)限是相同的,或者大部分現(xiàn)實(shí)中許多用戶權(quán)限是相同的,或者大部分的權(quán)限只是

45、少數(shù)幾種情形的組合,為此,的權(quán)限只是少數(shù)幾種情形的組合,為此,SQL Server提供了提供了“角色角色”,以方便權(quán)限管,以方便權(quán)限管理。理。6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證57實(shí)際工作時(shí),權(quán)限管理大多通過角色進(jìn)行,實(shí)際工作時(shí),權(quán)限管理大多通過角色進(jìn)行,很少直接對用戶(數(shù)據(jù)庫賬號)分配權(quán)限。很少直接對用戶(數(shù)據(jù)庫賬號)分配權(quán)限。角色有三種類型:角色有三種類型: 用戶定義的角色用戶定義的角色固定的數(shù)據(jù)庫角色固定的數(shù)據(jù)庫角色(SQL Server系統(tǒng)定義系統(tǒng)定義)固定的服務(wù)器角色固定的服務(wù)器角色 (SQL Server系統(tǒng)定義系統(tǒng)定義)6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)

46、據(jù)庫對象的安全驗(yàn)證58角色角色權(quán)限權(quán)限Public包含數(shù)據(jù)庫中用戶的所有默認(rèn)權(quán)限包含數(shù)據(jù)庫中用戶的所有默認(rèn)權(quán)限D(zhuǎn)b_owner數(shù)據(jù)所有者數(shù)據(jù)所有者, 擁有數(shù)據(jù)庫一切權(quán)限擁有數(shù)據(jù)庫一切權(quán)限D(zhuǎn)b_accessadmin添加或刪除數(shù)據(jù)庫賬號、組和角色添加或刪除數(shù)據(jù)庫賬號、組和角色Db_ddladmin添加、修改或刪除數(shù)據(jù)庫中對象添加、修改或刪除數(shù)據(jù)庫中對象Db_securityadmin可以管理語句權(quán)限和對象權(quán)限可以管理語句權(quán)限和對象權(quán)限D(zhuǎn)b_backupoperator可以進(jìn)行數(shù)據(jù)庫備份和恢復(fù)可以進(jìn)行數(shù)據(jù)庫備份和恢復(fù)表表6.3 固定的數(shù)據(jù)庫角色固定的數(shù)據(jù)庫角色6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)

47、據(jù)庫對象的安全驗(yàn)證59角色角色權(quán)限權(quán)限D(zhuǎn)b_datareader可以對任何表查詢可以對任何表查詢, ,但不能更新但不能更新Db_datawriter可以對任何表進(jìn)行插入、刪除和修可以對任何表進(jìn)行插入、刪除和修改,但不能查詢。改,但不能查詢。Db_denydatareader不能讀取任何表中數(shù)據(jù)不能讀取任何表中數(shù)據(jù)Db_denydatawriter不能寫不能寫(插入、修改、刪除插入、修改、刪除)任何表任何表中數(shù)據(jù)中數(shù)據(jù)表表6.3 固定的數(shù)據(jù)庫角色固定的數(shù)據(jù)庫角色(續(xù)續(xù))固定的服務(wù)器角色,固定的服務(wù)器角色,如下表如下表6.4 6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證60角色角色權(quán)限

48、權(quán)限Server Administrators配置服務(wù)器范圍的設(shè)定配置服務(wù)器范圍的設(shè)定Security Administrators管理和審核服務(wù)器登錄管理和審核服務(wù)器登錄System Administrators可以執(zhí)行可以執(zhí)行SQL Server的任何操作的任何操作Process Administrators管理管理SQL Server進(jìn)程進(jìn)程Disk Administrators管理磁盤文件管理磁盤文件Setup Administrators管理擴(kuò)展的存儲過程管理擴(kuò)展的存儲過程Bulk Insert Administrators可以執(zhí)行大量數(shù)據(jù)的測試可以執(zhí)行大量數(shù)據(jù)的測試Database

49、 Creators可以創(chuàng)建數(shù)據(jù)庫可以創(chuàng)建數(shù)據(jù)庫表表6.4 固定的服務(wù)器角色固定的服務(wù)器角色6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證61一般情況下用戶從多個(gè)角色獲得的權(quán)限是疊一般情況下用戶從多個(gè)角色獲得的權(quán)限是疊加的,如果其中一個(gè)角色沒有被授予某個(gè)權(quán)加的,如果其中一個(gè)角色沒有被授予某個(gè)權(quán)限(或者授予后又回收了),而另一個(gè)角色限(或者授予后又回收了),而另一個(gè)角色被授予了該權(quán)限,則該用戶仍然擁有該權(quán)限。被授予了該權(quán)限,則該用戶仍然擁有該權(quán)限。實(shí)際工作中實(shí)際工作中 ,有時(shí)也需要排除某角色的某個(gè),有時(shí)也需要排除某角色的某個(gè)操作權(quán)限,凡成為該角色的用戶,都不能擁操作權(quán)限,凡成為該角色的用

50、戶,都不能擁有該權(quán)限。對此可以用有該權(quán)限。對此可以用“拒絕拒絕”權(quán)限管理方權(quán)限管理方法。法?!熬芙^拒絕”具有最高優(yōu)先權(quán)。具有最高優(yōu)先權(quán)。 用戶定義的角色:用戶定義的角色:6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證62如果某個(gè)用戶同時(shí)是幾個(gè)角色的成員,如果如果某個(gè)用戶同時(shí)是幾個(gè)角色的成員,如果其中一個(gè)角色拒絕了某個(gè)權(quán)限其中一個(gè)角色拒絕了某個(gè)權(quán)限A,則不管其,則不管其他角色是否授權(quán)了他角色是否授權(quán)了A,該用戶都沒有,該用戶都沒有A權(quán)限。權(quán)限。 例例:用戶:用戶u是角色是角色A、B和和C的成員。三個(gè)角的成員。三個(gè)角色權(quán)限如表色權(quán)限如表6.5所示。則用戶所示。則用戶u的權(quán)限如表的權(quán)限如表

51、6.6 。6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證63權(quán)限權(quán)限角色角色A角色角色B角色角色CSelect on table1 Select on view1 Update on tables2Delete on table3 表表6.5 角色角色A、B和和C的權(quán)限的權(quán)限6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證64權(quán)限權(quán)限角色角色ASelect on table1 Select on view1 Update on tables2Delete on table3 表表6.6 用戶用戶u 的權(quán)限的權(quán)限6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證65過了一

52、段時(shí)間后,需要對權(quán)限調(diào)整,調(diào)整后過了一段時(shí)間后,需要對權(quán)限調(diào)整,調(diào)整后三個(gè)角色的權(quán)限如表三個(gè)角色的權(quán)限如表6.7所示。則調(diào)整后用所示。則調(diào)整后用戶戶U的權(quán)限如表的權(quán)限如表6.8 。權(quán)限權(quán)限角色角色A角色角色B角色角色CSelect on table1 0Select on view10Update on tables2Delete on table3 X表表6.7 角色角色A、B和和C的權(quán)限的權(quán)限6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證66權(quán)限權(quán)限角色角色ASelect on table1 Select on view1Update on tables2Delete on ta

53、ble3X表表6.8 調(diào)整后用戶調(diào)整后用戶u 的權(quán)限的權(quán)限O表示權(quán)限被撤銷,表示權(quán)限被撤銷,X表示權(quán)限被拒絕。表示權(quán)限被拒絕。6.2.3.2 數(shù)據(jù)庫對象的安全驗(yàn)證數(shù)據(jù)庫對象的安全驗(yàn)證 數(shù)據(jù)庫技術(shù)及應(yīng)用數(shù)據(jù)庫技術(shù)及應(yīng)用DB676.3 并發(fā)控制并發(fā)控制數(shù)據(jù)庫是一個(gè)共享資源,從理論上講,對數(shù)數(shù)據(jù)庫是一個(gè)共享資源,從理論上講,對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行存取的用戶數(shù)目可以是任意據(jù)庫中數(shù)據(jù)進(jìn)行存取的用戶數(shù)目可以是任意多。讓多個(gè)用戶程序并行地存取數(shù)據(jù)庫,可多。讓多個(gè)用戶程序并行地存取數(shù)據(jù)庫,可以提高數(shù)據(jù)庫系統(tǒng)的利用率。但這樣可能出以提高數(shù)據(jù)庫系統(tǒng)的利用率。但這樣可能出現(xiàn)多個(gè)用戶程序并發(fā)地訪問同一數(shù)據(jù)資源的現(xiàn)多個(gè)用戶

54、程序并發(fā)地訪問同一數(shù)據(jù)資源的情況,對此并發(fā)不加控制,就會破壞數(shù)據(jù)的情況,對此并發(fā)不加控制,就會破壞數(shù)據(jù)的一致性。所以,必須對并發(fā)操作加以控制,一致性。所以,必須對并發(fā)操作加以控制,以正確順序方式調(diào)度并發(fā)操作。以正確順序方式調(diào)度并發(fā)操作。686.3.1 事務(wù)事務(wù)1事務(wù)(事務(wù)(Transaction)事務(wù)事務(wù)是是用戶定義的一個(gè)數(shù)據(jù)庫操作序列,用戶定義的一個(gè)數(shù)據(jù)庫操作序列,這些操作要么全做要么全不做,是一個(gè)不這些操作要么全做要么全不做,是一個(gè)不可分割的整體可分割的整體。 在在RDB中,一個(gè)事務(wù)可以是一個(gè)中,一個(gè)事務(wù)可以是一個(gè)SQL語句,語句,或一組或一組SQL語句或整個(gè)程序。語句或整個(gè)程序。 但事務(wù)

55、與程序是不同的概念,一個(gè)程序中但事務(wù)與程序是不同的概念,一個(gè)程序中可以包含多個(gè)事務(wù)。可以包含多個(gè)事務(wù)。 為什么要引入事務(wù)的概念呢?讓我們來看為什么要引入事務(wù)的概念呢?讓我們來看個(gè)例子。個(gè)例子。69例如例如:假設(shè)你來到假設(shè)你來到ATM機(jī)前進(jìn)行轉(zhuǎn)帳工作,讓機(jī)器機(jī)前進(jìn)行轉(zhuǎn)帳工作,讓機(jī)器“把把100元從你的活期存款帳戶轉(zhuǎn)到定期帳戶元從你的活期存款帳戶轉(zhuǎn)到定期帳戶”。你插入信用卡,進(jìn)行了必要的操作,機(jī)器將對銀你插入信用卡,進(jìn)行了必要的操作,機(jī)器將對銀行數(shù)據(jù)庫做兩次更新:行數(shù)據(jù)庫做兩次更新:(1)首先從你的活期存款余額取出首先從你的活期存款余額取出100元元;(2) 接著將接著將100元轉(zhuǎn)到你的定期存款帳

56、戶中。你確元轉(zhuǎn)到你的定期存款帳戶中。你確信你轉(zhuǎn)帳的錢已經(jīng)在你的定期存款帳戶。信你轉(zhuǎn)帳的錢已經(jīng)在你的定期存款帳戶。 若若100元從你的活期存款帳戶剛剛轉(zhuǎn)出后,突然元從你的活期存款帳戶剛剛轉(zhuǎn)出后,突然停電,你的定期帳戶中又沒得到這筆錢,怎么辦,停電,你的定期帳戶中又沒得到這筆錢,怎么辦,你的錢丟失了?你的錢丟失了?6.3.1 事務(wù)事務(wù)70事務(wù)定義事務(wù)定義: 事務(wù)可由用戶使用事務(wù)開始和結(jié)束語句顯事務(wù)可由用戶使用事務(wù)開始和結(jié)束語句顯式定義。式定義。BEGIN TRANSACTION (事務(wù)開始)(事務(wù)開始) COMMIT(ROLLBACK)(事務(wù)結(jié)束)(事務(wù)結(jié)束)End TRANSACTION 事務(wù)結(jié)

57、束事務(wù)結(jié)束n如果用戶沒有顯式定義事務(wù),則由如果用戶沒有顯式定義事務(wù),則由DBMS按缺省規(guī)定自動劃分事務(wù)。按缺省規(guī)定自動劃分事務(wù)。6.3.1 事務(wù)事務(wù)71v解釋解釋:COMMIT:提交,提交事務(wù)的所有操作。提交,提交事務(wù)的所有操作。即,將事務(wù)對數(shù)據(jù)庫所做的所有更新寫回即,將事務(wù)對數(shù)據(jù)庫所做的所有更新寫回到物理數(shù)據(jù)庫中去,事務(wù)正常結(jié)束。到物理數(shù)據(jù)庫中去,事務(wù)正常結(jié)束。ROLLBACK:回滾。在事務(wù)運(yùn)行過程中發(fā)回滾。在事務(wù)運(yùn)行過程中發(fā)生了某種故障,事務(wù)不能繼續(xù)進(jìn)行,系統(tǒng)生了某種故障,事務(wù)不能繼續(xù)進(jìn)行,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有已完成的操作撤將事務(wù)中對數(shù)據(jù)庫的所有已完成的操作撤消,使數(shù)據(jù)庫恢復(fù)到該事務(wù)

58、執(zhí)行前的狀態(tài)。消,使數(shù)據(jù)庫恢復(fù)到該事務(wù)執(zhí)行前的狀態(tài)。6.3.1 事務(wù)事務(wù)722事務(wù)的特性事務(wù)的特性(1)原子性原子性(Atomicity):一個(gè)事務(wù)中對數(shù)據(jù)一個(gè)事務(wù)中對數(shù)據(jù)庫的所有操作,是一個(gè)不可分割的整體,庫的所有操作,是一個(gè)不可分割的整體,要么都做,要么都不做。要么都做,要么都不做。( (由由DBMSDBMS的事務(wù)的事務(wù)管理子系統(tǒng)來實(shí)現(xiàn)原子性。管理子系統(tǒng)來實(shí)現(xiàn)原子性。) )(2)一致性一致性(Consistency):一個(gè)事務(wù)獨(dú)立執(zhí)):一個(gè)事務(wù)獨(dú)立執(zhí)行的結(jié)果,將保持?jǐn)?shù)據(jù)庫的一致性。即事行的結(jié)果,將保持?jǐn)?shù)據(jù)庫的一致性。即事務(wù)的執(zhí)行結(jié)果必須是使數(shù)據(jù)庫從一個(gè)一致務(wù)的執(zhí)行結(jié)果必須是使數(shù)據(jù)庫從一個(gè)一

59、致狀態(tài)變到另一個(gè)一致狀態(tài)。狀態(tài)變到另一個(gè)一致狀態(tài)。( (完整性控制完整性控制子系統(tǒng)保證子系統(tǒng)保證) )6.3.1 事務(wù)事務(wù)73(3)隔離性隔離性(Isolation):在多個(gè)事務(wù)并發(fā)執(zhí)):在多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),一個(gè)事務(wù)的執(zhí)行不受其他事務(wù)干擾。行時(shí),一個(gè)事務(wù)的執(zhí)行不受其他事務(wù)干擾。系統(tǒng)應(yīng)保證這些事務(wù)的并發(fā)執(zhí)行與這些事系統(tǒng)應(yīng)保證這些事務(wù)的并發(fā)執(zhí)行與這些事務(wù)先后單獨(dú)執(zhí)行時(shí)的結(jié)果一樣。務(wù)先后單獨(dú)執(zhí)行時(shí)的結(jié)果一樣。 ( (隔離性由隔離性由DBMSDBMS的并發(fā)控制子系統(tǒng)保證。的并發(fā)控制子系統(tǒng)保證。) )6.3.1 事務(wù)事務(wù)74(4)持續(xù)性持續(xù)性(Durability):也稱持久性。指):也稱持久性。指一

60、個(gè)事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的一個(gè)事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久的。即使以后發(fā)生故障,改變就應(yīng)該是永久的。即使以后發(fā)生故障,也應(yīng)保留這個(gè)事務(wù)的執(zhí)行結(jié)果。也應(yīng)保留這個(gè)事務(wù)的執(zhí)行結(jié)果。 ( (持續(xù)性由持續(xù)性由DBMSDBMS的恢復(fù)子系統(tǒng)保證。的恢復(fù)子系統(tǒng)保證。) ) 上述四個(gè)性質(zhì)簡稱事務(wù)的上述四個(gè)性質(zhì)簡稱事務(wù)的ACID性質(zhì)。保性質(zhì)。保證事務(wù)的證事務(wù)的ACID性質(zhì)是事務(wù)處理的重要任性質(zhì)是事務(wù)處理的重要任務(wù)。務(wù)。6.3.1 事務(wù)事務(wù)75 事務(wù)的事務(wù)的ACID性質(zhì)可能遭到破壞的因素:性質(zhì)可能遭到破壞的因素:(1) 多個(gè)事務(wù)并發(fā)運(yùn)行時(shí),不同事務(wù)的操作交多個(gè)事務(wù)并發(fā)運(yùn)行時(shí),不同事務(wù)的操

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論