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