巧招解決SQL Server數(shù)據(jù)庫權(quán)限沖突
導(dǎo)讀:在SQLServer數(shù)據(jù)庫中,主要是通過角色來繼承相關(guān)的權(quán)限,但是,這個權(quán)限繼承很容易造成權(quán)限上的沖突。如現(xiàn)在有個銷售員賬戶SALE1,有一個銷售部門角色DE_SALES。其中銷售部門角色DE_SALES具有查詢所有客戶信息,即CUSTOM表的權(quán)限。但是銷售員賬戶SALE1其由于是為試用期的員工設(shè)置的臨時帳戶,所以其不能夠查詢CUSTOM表。但是,SALE1帳戶其是屬于銷售部門這個角色,其會繼承銷售部門這個角色的所有訪問權(quán)限。此時,SALE1帳戶所屬角色的權(quán)限跟自己帳戶的權(quán)限就產(chǎn)生了沖突。遇到這種情況,SQLServer數(shù)據(jù)庫該如何處理出現(xiàn)的這種權(quán)限沖突問題呢?下面將為您解答。
在SQLServer數(shù)據(jù)庫中,授予組或者角色的權(quán)限由該組或者角色的成員所繼承。雖然某個用戶可能在一個級別上授予或者廢除權(quán)限,但如果這些權(quán)限與更高級的權(quán)限發(fā)生沖突的話,則可能會打破數(shù)據(jù)庫管理員的權(quán)限設(shè)計思路,讓某個用戶意外的禁止或者允許訪問某個數(shù)據(jù)庫對象。為了避免因為數(shù)據(jù)庫權(quán)限沖突所導(dǎo)致的一系列問題,SQLServer數(shù)據(jù)庫提出了一些解決措施。雖然通過這些措施不能夠完全避免權(quán)限之間的沖突,但是,至少讓數(shù)據(jù)庫管理員看到了解決問題的希望。
招數(shù)一:明確拒絕。
應(yīng)用場景:現(xiàn)在數(shù)據(jù)庫中有用戶Landy,其屬于銷售員SALES角色。其中,銷售員角色具有查詢客戶信息表Customs的權(quán)限。而由于某種原因,數(shù)據(jù)庫管理員限制用戶Landy訪問數(shù)據(jù)庫對象Customs表的權(quán)利。此時就會有對象訪問權(quán)限上的沖突。此時,數(shù)據(jù)庫管理員該如何才能夠避免這種沖突呢?
***個招數(shù)就是學(xué)會使用拒絕操作。在數(shù)據(jù)庫中,拒絕權(quán)限始終優(yōu)先。在任何級別(無論是用戶或者角色)上的拒絕權(quán)限都拒絕該對象上的權(quán)限,無論該用戶現(xiàn)有的權(quán)限是否已授予權(quán)限還是被廢除權(quán)限。這聽起來比較繞口,或許根據(jù)上面的例子來講,大家更容易明白。如上例,若要解決上面的權(quán)限沖突問題,則我們只需要在用戶Landy的權(quán)限設(shè)置中,拒絕其具有數(shù)據(jù)庫對象表Customs表的Select權(quán)限。由于顯示的拒絕其總被優(yōu)先執(zhí)行,所以即使其所屬的角色具有表Customs的訪問權(quán)限,但是其成員Landy由于被顯示的拒絕,根據(jù)拒絕優(yōu)先的選擇,則其最終不會有數(shù)據(jù)庫表Customs的訪問權(quán)限。
所以筆者所傳授給大家的***個招數(shù)就是要學(xué)會使用拒絕操作。各位數(shù)據(jù)庫管理員要牢記,在權(quán)限管理中,拒絕操作總是被優(yōu)先執(zhí)行。另外還有一個極端的例子,可以說明這個問題。如果數(shù)據(jù)庫管理員把Public進(jìn)行設(shè)置,設(shè)置為拒絕權(quán)限。此時由于拒絕權(quán)限被優(yōu)先執(zhí)行,則數(shù)據(jù)會禁止任何用戶訪問能數(shù)據(jù)庫對象。故拒絕權(quán)限一般往往用在用戶級別上,可以實現(xiàn)對個別特殊用戶的權(quán)限控制,而不用給他們設(shè)置獨立的組。這讓數(shù)據(jù)庫權(quán)限管理更加的靈活。
招數(shù)二:廢除權(quán)限,可以讓某些帳戶恢復(fù)正常。
應(yīng)用情景:現(xiàn)在數(shù)據(jù)庫中有用戶Landy,其屬于銷售員SALES角色。其中,銷售員角色具有查詢客戶信息表Customs的權(quán)限。而由于某種原因,數(shù)據(jù)庫管理員限制用戶Landy訪問數(shù)據(jù)庫對象Customs表的權(quán)利。此時,數(shù)據(jù)庫管理員給Landy用戶顯示的拒絕訪問Customs表的權(quán)利。但是,現(xiàn)在這個限制其訪問客戶表的原因已經(jīng)消除,用戶Landy可以正常訪問表Customs了。此時,該如何處理呢?
此時,數(shù)據(jù)庫管理員可以通過廢除權(quán)限操作來完成需求。廢除權(quán)限只刪除所廢除級別(如用戶、角色或者組)上的已授予權(quán)限或者已拒絕權(quán)限,而在另外級別上所授予或者拒絕的同一權(quán)限仍然適用。廢除權(quán)限類似于拒絕權(quán)限,因為二者都是在同一級別上刪除已經(jīng)授予的權(quán)限。但是,廢除權(quán)限是刪除已經(jīng)授予的權(quán)限,并不妨礙用戶、組或者角色從更高級別繼承已授予的權(quán)限。為此,如果廢除用戶查看表的權(quán)限,并不一定能夠防止用戶查看該表。這跟拒絕權(quán)限操作就有本質(zhì)的區(qū)別。
舉例來說,在上面這個例子中,Landy用戶剛開始其被顯示的拒絕訪問表Customs。雖然其所屬的角色具有訪問表Customs的權(quán)限,但是因為拒絕優(yōu)先,所以用戶Landy最終不能過訪問這個表。此時,若限制原因消除,則數(shù)據(jù)庫管理員可以采取廢除權(quán)限操作,把Landy用戶上的拒絕權(quán)限廢除掉。因為廢除權(quán)限只刪除用戶Landy上已拒絕訪問這個表的權(quán)限,而不影響從角色SALES中繼承統(tǒng)一權(quán)限。為此,用戶Landy最終具有訪問這個表Customs的權(quán)限。這就是廢除權(quán)限操作的本質(zhì)。
在實際工作中,廢除權(quán)限操作與拒絕權(quán)限操作往往被用來處理一些特殊的帳戶。如不少企業(yè)中,試用期員工其權(quán)限往往會受到限制。出于安全起見,企業(yè)不會讓一些還在試用期的員工訪問所有的數(shù)據(jù)。為此,就要對他們的權(quán)限進(jìn)行限制。此時,就可以在這些用戶帳戶級別上顯示的拒絕,實現(xiàn)部分訪問限制的需求。當(dāng)他們試用期過后,若試用合格的話,就可以把這些帳戶的拒絕權(quán)限廢除掉。如此的話,他們就可以正常繼承他們所屬角色或者組的權(quán)限。可見,拒絕權(quán)限與廢除權(quán)限結(jié)合,可以讓數(shù)據(jù)庫全縣的管理更加的統(tǒng)一。最終要的是,可以***程度的避免因為權(quán)限沖突而導(dǎo)致的數(shù)據(jù)管理上的安全漏洞。
這些就是我要為大家介紹的解決SQL Server數(shù)據(jù)庫權(quán)限沖突的方法二則,希望在您日后的工作中能有所幫助。
【編輯推薦】