時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
在SQL Server數(shù)據(jù)庫(kù)中,主要是通過(guò)角色來(lái)繼承相關(guān)的權(quán)限。但是,這個(gè)權(quán)限繼承很容易造成權(quán)限上的沖突。如現(xiàn)在有個(gè)銷售員賬戶SALE1,有一個(gè)銷售部門角色DE_SALES。其中銷售部門角色DE_SALES具有查詢所有客戶信息,即CUSTOM表的權(quán)限。但是銷售員賬戶SALE1其由于是為試用期的員工設(shè)置的臨時(shí)帳戶,所以其不能夠查詢CUSTOM表。但是,SALE1帳戶其是屬于銷售部門這個(gè)角色,其會(huì)繼承銷售部門這個(gè)角色的所有訪問(wèn)權(quán)限。此時(shí),SALE1帳戶所屬角色的權(quán)限跟自己帳戶的權(quán)限就產(chǎn)生了沖突。遇到這種情況,SQL Server數(shù)據(jù)庫(kù)該如何處理呢?
在SQLServer數(shù)據(jù)庫(kù)中,授予組或者角色的權(quán)限由該組或者角色的成員所繼承。雖然某個(gè)用戶可能在一個(gè)級(jí)別上授予或者廢除權(quán)限,但如果這些權(quán)限與更高級(jí)的權(quán)限發(fā)生沖突的話,則可能會(huì)打破數(shù)據(jù)庫(kù)管理員的權(quán)限設(shè)計(jì)思路,讓某個(gè)用戶意外的禁止或者允許訪問(wèn)某個(gè)數(shù)據(jù)庫(kù)對(duì)象。為了避免因?yàn)閿?shù)據(jù)庫(kù)權(quán)限沖突所導(dǎo)致的一系列問(wèn)題,SQLServer數(shù)據(jù)庫(kù)提出了一些解決措施。雖然通過(guò)這些措施不能夠完全避免權(quán)限之間的沖突,但是,至少讓數(shù)據(jù)庫(kù)管理員看到了解決問(wèn)題的希望。
招數(shù)一:明確拒絕
應(yīng)用場(chǎng)景:現(xiàn)在數(shù)據(jù)庫(kù)中有用戶Landy,其屬于銷售員SALES角色。其中,銷售員角色具有查詢客戶信息表Customs的權(quán)限。而由于某種原因,數(shù)據(jù)庫(kù)管理員限制用戶Landy訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象Customs表的權(quán)利。此時(shí)就會(huì)有對(duì)象訪問(wèn)權(quán)限上的沖突。此時(shí),數(shù)據(jù)庫(kù)管理員該如何才能夠避免這種沖突呢?
第一個(gè)招數(shù)就是學(xué)會(huì)使用拒絕操作。在數(shù)據(jù)庫(kù)中,拒絕權(quán)限始終優(yōu)先。在任何級(jí)別(無(wú)論是用戶或者角色)上的拒絕權(quán)限都拒絕該對(duì)象上的權(quán)限,無(wú)論該用戶現(xiàn)有的權(quán)限是否已授予權(quán)限還是被廢除權(quán)限。這聽(tīng)起來(lái)比較繞口,或許根據(jù)上面的例子來(lái)講,大家更容易明白。如上例,若要解決上面的權(quán)限沖突問(wèn)題,則我們只需要在用戶Landy的權(quán)限設(shè)置中,拒絕其具有數(shù)據(jù)庫(kù)對(duì)象表Customs表的Select權(quán)限。由于顯示的拒絕其總被優(yōu)先執(zhí)行,所以即使其所屬的角色具有表Customs的訪問(wèn)權(quán)限,但是其成員Landy由于被顯示的拒絕,根據(jù)拒絕優(yōu)先的選擇,則其最終不會(huì)有數(shù)據(jù)庫(kù)表Customs的訪問(wèn)權(quán)限。
所以筆者所傳授給大家的第一個(gè)招數(shù)就是要學(xué)會(huì)使用拒絕操作。各位數(shù)據(jù)庫(kù)管理員要牢記,在權(quán)限管理中,拒絕操作總是被優(yōu)先執(zhí)行。另外還有一個(gè)極端的例子,可以說(shuō)明這個(gè)問(wèn)題。如果數(shù)據(jù)庫(kù)管理員把Public進(jìn)行設(shè)置,設(shè)置為拒絕權(quán)限。此時(shí)由于拒絕權(quán)限被優(yōu)先執(zhí)行,則數(shù)據(jù)會(huì)禁止任何用戶訪問(wèn)能數(shù)據(jù)庫(kù)對(duì)象。故拒絕權(quán)限一般往往用在用戶級(jí)別上,可以實(shí)現(xiàn)對(duì)個(gè)別特殊用戶的權(quán)限控制,而不用給他們?cè)O(shè)置獨(dú)立的組。這讓數(shù)據(jù)庫(kù)權(quán)限管理更加的靈活。
招數(shù)二:廢除權(quán)限,可以讓某些帳戶恢復(fù)正常
應(yīng)用情景:現(xiàn)在數(shù)據(jù)庫(kù)中有用戶Landy,其屬于銷售員SALES角色。其中,銷售員角色具有查詢客戶信息表Customs的權(quán)限。而由于某種原因,數(shù)據(jù)庫(kù)管理員限制用戶Landy訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象Customs表的權(quán)利。此時(shí),數(shù)據(jù)庫(kù)管理員給Landy用戶顯示的拒絕訪問(wèn)Customs表的權(quán)利。但是,現(xiàn)在這個(gè)限制其訪問(wèn)客戶表的原因已經(jīng)消除,用戶Landy 可以正常訪問(wèn)表Customs了。此時(shí),該如何處理呢?
此時(shí),數(shù)據(jù)庫(kù)管理員可以通過(guò)廢除權(quán)限操作來(lái)完成需求。廢除權(quán)限只刪除所廢除級(jí)別(如用戶、角色或者組)上的已授予權(quán)限或者已拒絕權(quán)限,而在另外級(jí)別上所授予或者拒絕的同一權(quán)限仍然適用。廢除權(quán)限類似于拒絕權(quán)限,因?yàn)槎叨际窃谕患?jí)別上刪除已經(jīng)授予的權(quán)限。但是,廢除權(quán)限是刪除已經(jīng)授予的權(quán)限,并不妨礙用戶、組或者角色從更高級(jí)別繼承已授予的權(quán)限。為此,如果廢除用戶查看表的權(quán)限,并不一定能夠防止用戶查看該表。這跟拒絕權(quán)限操作就有本質(zhì)的區(qū)別。
舉例來(lái)說(shuō),在上面這個(gè)例子中,Landy用戶剛開(kāi)始其被顯示的拒絕訪問(wèn)表Customs。雖然其所屬的角色具有訪問(wèn)表Customs的權(quán)限,但是因?yàn)榫芙^優(yōu)先,所以用戶Landy最終不能過(guò)訪問(wèn)這個(gè)表。此時(shí),若限制原因消除,則數(shù)據(jù)庫(kù)管理員可以采取廢除權(quán)限操作,把Landy用戶上的拒絕權(quán)限廢除掉。因?yàn)閺U除權(quán)限只刪除用戶Landy上已拒絕訪問(wèn)這個(gè)表的權(quán)限,而不影響從角色SALES中繼承統(tǒng)一權(quán)限。為此,用戶Landy最終具有訪問(wèn)這個(gè)表Customs的權(quán)限。這就是廢除權(quán)限操作的本質(zhì)。
在實(shí)際工作中,廢除權(quán)限操作與拒絕權(quán)限操作往往被用來(lái)處理一些特殊的帳戶。如不少企業(yè)中,試用期員工其權(quán)限往往會(huì)受到限制。出于安全起見(jiàn),企業(yè)不會(huì)讓一些還在試用期的員工訪問(wèn)所有的數(shù)據(jù)。為此,就要對(duì)他們的權(quán)限進(jìn)行限制。此時(shí),就可以在這些用戶帳戶級(jí)別上顯示的拒絕,實(shí)現(xiàn)部分訪問(wèn)限制的需求。當(dāng)他們?cè)囉闷谶^(guò)后,若試用合格的話,就可以把這些帳戶的拒絕權(quán)限廢除掉。如此的話,他們就可以正常繼承他們所屬角色或者組的權(quán)限??梢?jiàn),拒絕權(quán)限與廢除權(quán)限結(jié)合,可以讓數(shù)據(jù)庫(kù)全縣的管理更加的統(tǒng)一。最終要的是,可以最大程度的避免因?yàn)闄?quán)限沖突而導(dǎo)致的數(shù)據(jù)管理上的安全漏洞。
另外,在實(shí)際配置中,需要注意一個(gè)問(wèn)題,雖然廢除權(quán)限具有廢除拒絕權(quán)限的能力,但是,他只能夠在一個(gè)級(jí)別上其作用。如上面這個(gè)例子中,另外還有一個(gè)T_SALES的角色,其權(quán)限設(shè)置中,顯示的拒絕訪問(wèn)表Customs。此時(shí),若用戶Landy同時(shí)屬于SALES角色和T_SALES角色。雖然通過(guò)廢除權(quán)限廢除了用戶Landy級(jí)別上的拒絕訪問(wèn)表Customs的權(quán)限。但是,用戶Landy所屬的T_SALES角色中的拒絕權(quán)限仍然具有優(yōu)先執(zhí)行的權(quán)力。所以,最終這個(gè)用戶仍然不能夠訪問(wèn)表Customs。所以,通過(guò)廢除對(duì)權(quán)限的拒絕可以刪除已經(jīng)拒絕的權(quán)限。但是,如果用戶在其他組或者角色級(jí)別有其他拒絕權(quán)限的話,在該用戶訪問(wèn)某個(gè)對(duì)象的權(quán)限仍然會(huì)被拒絕。
招數(shù)三:授權(quán)操作,讓用戶訪問(wèn)權(quán)限一目了然
應(yīng)用情景:現(xiàn)在數(shù)據(jù)庫(kù)中有用戶Landy,其屬于銷售員SALES角色。其中,銷售員角色具有查詢客戶信息表Customs的權(quán)限。而由于某種原因,數(shù)據(jù)庫(kù)管理員限制用戶Landy訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象Customs表的權(quán)利。此時(shí),數(shù)據(jù)庫(kù)管理員給Landy用戶顯示的拒絕訪問(wèn)Customs表的權(quán)利。但是,現(xiàn)在這個(gè)限制其訪問(wèn)客戶表的原因已經(jīng)消除,用戶Landy 可以正常訪問(wèn)表Customs了。此時(shí),該如何處理呢?
此時(shí),除了可以通過(guò)上面的廢除權(quán)限操作來(lái)處理,還可以通過(guò)授權(quán)操作來(lái)完成。廢除權(quán)限操作有一個(gè)缺陷,就是數(shù)據(jù)庫(kù)管理員要判斷這個(gè)用戶到底是否具有某個(gè)數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)權(quán)限時(shí),還需要去查看其所屬的角色或者組中的權(quán)限設(shè)置。這會(huì)增加一定的工作量。而授權(quán)操作則可以避免這種情況。授予權(quán)限刪除所授予級(jí)別傷的已經(jīng)拒絕權(quán)限或者已經(jīng)廢除權(quán)限,而在另一級(jí)別上所拒絕權(quán)限的同一權(quán)限仍然適用。但是,雖然在另一級(jí)別上所廢除的同一權(quán)限仍然適用,但他不阻止用戶訪問(wèn)該對(duì)象。也就是說(shuō),如果Sales角色可以訪問(wèn)表Customs,現(xiàn)在數(shù)據(jù)庫(kù)管理員授予了用戶Landy訪問(wèn)Customs表的權(quán)限,則用戶最終具有訪問(wèn)表Customs的權(quán)限。但是,如果Sales角色顯示的拒絕了表Customs的查詢權(quán)限,此時(shí)即使顯示的授予用戶Landy表Customs的訪問(wèn)權(quán)限,則該用戶仍然不能夠訪問(wèn)表Customs。因?yàn)榫芙^權(quán)限總是被優(yōu)先執(zhí)行。所以說(shuō),用戶最終得到的是對(duì)象上所授予、拒絕或者廢除權(quán)限的全部權(quán)限的并集。其中,拒絕權(quán)限具有最優(yōu)先的權(quán)利。
通過(guò)拒絕、廢除、授權(quán)等權(quán)限操作,可以減少因?yàn)闄?quán)限繼承所導(dǎo)致的權(quán)限沖突。最后,筆者建議,在高級(jí)別的權(quán)限設(shè)置上,如組或者角色上,最好不要輕易使用拒絕權(quán)限。拒絕權(quán)限因?yàn)榫哂凶顑?yōu)先的執(zhí)行權(quán)力,所以一般在用戶級(jí)別上采用即可。若在組或者角色上采用拒絕權(quán)限,則在用戶上所采取的廢除權(quán)限或者授予權(quán)限操作都將不能夠其作用。為此,為了提高權(quán)限管理的靈活性,筆者認(rèn)為拒絕權(quán)限在用戶級(jí)別上實(shí)施比較合理,可以提高權(quán)限管理的靈活性。
關(guān)鍵詞標(biāo)簽:SQL Server,數(shù)據(jù)庫(kù)
相關(guān)閱讀
熱門文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法