當(dāng)在服務(wù)器上運(yùn)行SQL Server 時(shí),我們總是要想方設(shè)法去使SQL Server 免遭非法用戶(hù)的侵入,拒絕其訪問(wèn)數(shù)據(jù)庫(kù),保證數(shù)據(jù)的安全性。SQL Server 提供了強(qiáng)大的內(nèi)置的安全性和數(shù)據(jù)保護(hù),來(lái)幫助實(shí)現(xiàn)這種理所當(dāng)然的要求。從前面的介紹中我們可以看出SQL Server 提供
當(dāng)在服務(wù)器上運(yùn)行SQL Server 時(shí),,我們總是要想方設(shè)法去使SQL Server 免遭非法用戶(hù)的侵入,拒絕其訪問(wèn)數(shù)據(jù)庫(kù),保證數(shù)據(jù)的安全性。SQL Server 提供了強(qiáng)大的內(nèi)置的安全性和數(shù)據(jù)保護(hù),來(lái)幫助實(shí)現(xiàn)這種理所當(dāng)然的要求。從前面的介紹中我們可以看出SQL Server 提供了從操作系統(tǒng),SQL ServerE, 數(shù)據(jù)庫(kù)到對(duì)象的多級(jí)別的安全保護(hù)。其中也涉及到角色、數(shù)據(jù)庫(kù)用戶(hù)、權(quán)限等多個(gè)與安全性有關(guān)的概念。現(xiàn)在我們面臨的問(wèn)題就是如何在SQL Server 內(nèi)把這些不同的與安全性有關(guān)的組件結(jié)合起來(lái),充分地利用各種組件的優(yōu)點(diǎn),考慮到其可能存在的缺點(diǎn)來(lái)?yè)P(yáng)長(zhǎng)避短,制定可靠的安全策略。使SQL Server 更健壯,更為“不可侵犯”。
下面我們將介紹幾種安全性管理策略,您應(yīng)該做的就是看懂并理解這些策略方法,然后將它們簡(jiǎn)單地結(jié)合到一起就可以了。
1 使用視圖作為安全機(jī)制
在游標(biāo)和視圖一章我們已經(jīng)提到視圖可以做為一種安全機(jī)制的主要原因在于視圖是一張?zhí)摫?而且它是由查詢(xún)語(yǔ)句來(lái)定義的,是一個(gè)數(shù)據(jù)結(jié)果集,通過(guò)視圖,用戶(hù)僅能查詢(xún)修改他所能看到的數(shù)據(jù),其它的數(shù)據(jù)庫(kù)或表對(duì)于該用戶(hù)既不可見(jiàn)也無(wú)法訪問(wèn)。通過(guò)視圖的權(quán)限設(shè)置,用戶(hù)只具有相應(yīng)的訪問(wèn)視圖的權(quán)限,但并不具有訪問(wèn)視圖所引用的基本表的相應(yīng)權(quán)限。
通過(guò)使用不同的視圖并對(duì)用戶(hù)授予不同的權(quán)限,不同的用戶(hù)可以看到不同的結(jié)果集,可以實(shí)現(xiàn)行級(jí)或列級(jí)的數(shù)據(jù)安全性。下面的幾個(gè)例子說(shuō)明了視圖是如何實(shí)現(xiàn)數(shù)據(jù)安全性。
2 使用了行級(jí)、列級(jí)別安全性的視圖
例14-18: 在該例中某一銷(xiāo)售點(diǎn)只能查看它自己的銷(xiāo)售信息。我們使用pubs 數(shù)據(jù)庫(kù)中的sales 表。
首先創(chuàng)建視圖
3 視圖與權(quán)限結(jié)合
如果將訪問(wèn)視圖的權(quán)限授予給用戶(hù),這樣即使該用戶(hù)不具有訪問(wèn)視圖所引用的基本表的權(quán)限,但其仍可以從中查看相應(yīng)的數(shù)據(jù)信息。
視圖與權(quán)限相結(jié)合究竟能帶來(lái)什么好處呢?下面我們舉一個(gè)例子來(lái)進(jìn)行說(shuō)明。首先假設(shè)用戶(hù)A 對(duì)sales 表的payterms 列沒(méi)有SELECT 權(quán)限,對(duì)其它列有且僅有SELECT 權(quán)限,如果要查看其它銷(xiāo)售信息不能使用這樣的語(yǔ)句:
select * from sales
而必須指出其余列的列名。這就要求用戶(hù)了解表的結(jié)構(gòu),通常來(lái)說(shuō)讓用戶(hù)了解表結(jié)構(gòu)是一件很不聰明的事,那么如何解決這一問(wèn)題呢?
很簡(jiǎn)單如果創(chuàng)建一個(gè)視圖view1, 該視圖包含除payterms 列外的所有列,并且將 SELECT 權(quán)限授予用戶(hù)A, 這樣用戶(hù)A 就可以執(zhí)行語(yǔ)句:select * from view1, 從而查看到銷(xiāo)售信息。
4 使用存儲(chǔ)過(guò)程作為安全機(jī)制
如果用戶(hù)不具有訪問(wèn)視圖和表的權(quán)限,那么通過(guò)存儲(chǔ)過(guò)程仍能夠讓其查詢(xún)相應(yīng)的數(shù)據(jù)信息,實(shí)現(xiàn)的方法很簡(jiǎn)單,只要讓該用戶(hù)具有存儲(chǔ)過(guò)程的EXEC 權(quán)限就可以了。當(dāng)然要確保該存儲(chǔ)過(guò)程中包含了查詢(xún)語(yǔ)句。比如可創(chuàng)建下面的存儲(chǔ)過(guò)程:
create procedure selsales as
select * from sales
然后將存儲(chǔ)過(guò)程的EXEC 權(quán)限授予用戶(hù),當(dāng)用戶(hù)執(zhí)行該存儲(chǔ)過(guò)程時(shí)就可以查看到相應(yīng)信息。
使用存儲(chǔ)過(guò)程的優(yōu)點(diǎn)在于不必對(duì)視圖和表的訪問(wèn)權(quán)限進(jìn)行分配。
小結(jié)
本文主要討論了SQL Server 的安全性管理問(wèn)題。涉及到數(shù)據(jù)庫(kù)用戶(hù)、角色、權(quán)限等作為一名系統(tǒng)管理員或安全管理員,在進(jìn)行安全屬性配置前,首先要確定應(yīng)使用哪種身份認(rèn)證模式。要注意恰當(dāng)?shù)厥褂胓uest 用戶(hù)和public 角色,并深刻了解應(yīng)用角色對(duì)于實(shí)現(xiàn)數(shù)據(jù)查詢(xún)和處理的可控性所展示出的優(yōu)點(diǎn)。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com