国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQLServer數據庫安全規劃全攻略2

2024-07-21 02:12:48
字體:
來源:轉載
供稿:網友

三、設置全局組

構造安全策略的下一個步驟是確定用戶應該屬于什么組。通常,每一個組織或應用程序的用戶都可以按照他們對數據的特定訪問要求分成許多類別。例如,會計應用軟件的用戶一般包括:數據輸入操作員,數據輸入管理員,報表編寫員,會計師,審計員,財務經理等。每一組用戶都有不同的數據庫訪問要求。

控制數據訪問權限最簡單的方法是,對于每一組用戶,分別地為它創建一個滿足該組用戶權限要求的、域內全局有效的組。我們既可以為每一個應用分別創建組,也可以創建適用于整個企業的、涵蓋廣泛用戶類別的組。然而,如果你想要能夠精確地了解組成員可以做些什么,為每一個應用程序分別創建組是一種較好的選擇。例如,在前面的會計系統中,我們應該創建data entry operators、accounting data entry managers等組。請記住,為了簡化管理,最好為組取一個能夠明確表示出作用的名字。

除了面向特定應用程序的組之外,我們還需要幾個基本組。基本組的成員負責管理服務器。按照習慣,我們可以創建下面這些基本組:sql server administrators,sql server users,sql server denied users,sql server db creators,sql server security operators,sql server database security operators,sql server developers,以及 db_name users(其中db_name是服務器上一個數據庫的名字)。當然,如果必要的話,你還可以創建其他組。

創建了全局組之后,接下來我們可以授予它們訪問sql server的權限。首先為sql server users創建一個nt驗證的登錄并授予它登錄權限,把master數據庫設置為它的默認數據庫,但不要授予它訪問任何其他數據庫的權限,也不要把這個登錄帳戶設置為任何服務器角色的成員。接著再為sql server denied users重復這個過程,但這次要拒絕登錄訪問。在sql server中,拒絕權限始終優先。創建了這兩個組之后,我們就有了一種允許或拒絕用戶訪問服務器的便捷方法。

為那些沒有直接在sysxlogins系統表里面登記的組授權時,我們不能使用enterpris managr,因為enterprise manager只允許我們從現有登錄名字的列表選擇,而不是域內所有組的列表。要訪問所有的組,請打開query analyzer,然后用系統存儲過程sp_addsrvrolemember以及sp_addrolemember進行授權。

對于操作服務器的各個組,我們可以用sp_addsrvrolemember存儲過程把各個登錄加入到合適的服務器角色:sql server administrators成為sysadmins角色的成員,sql server db creators成為dbcreator角色的成員,sql server security operators成為securityadmin角色的成員。注意sp_addsrvrolemember存儲過程的第一個參數要求是帳戶的完整路徑。例如,bigco域的joes應該是bigco/joes(如果你想用本地帳戶,則路徑應該是server_name/joes)。

要創建在所有新數據庫中都存在的用戶,你可以修改model數據庫。為了簡化工作,sql server自動把所有對model數據庫的改動復制到新的數據庫。只要正確運用model數據庫,我們無需定制每一個新創建的數據庫。另外,我們可以用sp_addrolemember存儲過程把sql server security operators加入到db_securityadmin,把sql server developers加入到db_owner角色。

注意我們仍然沒有授權任何組或帳戶訪問數據庫。事實上,我們不能通過enterprise manager授權數據庫訪問,因為enterprise manager的用戶界面只允許我們把數據庫訪問權限授予合法的登錄帳戶。sql server不要求nt帳戶在我們把它設置為數據庫角色的成員或分配對象權限之前能夠訪問數據庫,但enterprise manager有這種限制。盡管如此,只要我們使用的是sp_addrolemember存儲過程而不是enterprise manager,就可以在不授予域內nt帳戶數據庫訪問權限的情況下為任意nt帳戶分配權限。

到這里為止,對model數據庫的設置已經完成。但是,如果你的用戶群體對企業范圍內各個應用數據庫有著類似的訪問要求,你可以把下面這些操作移到model數據庫上進行,而不是在面向特定應用的數據庫上進行。

四、允許數據庫訪問

在數據庫內部,與迄今為止我們對登錄驗證的處理方式不同,我們可以把權限分配給角色而不是直接把它們分配給全局組。這種能力使得我們能夠輕松地在安全策略中使用sql server驗證的登錄。即使你從來沒有想要使用sql server登錄帳戶,本文仍舊建議分配權限給角色,因為這樣你能夠為未來可能出現的變化做好準備。

創建了數據庫之后,我們可以用sp_grantdbaccess存儲過程授權db_name users組訪問它。但應該注意的是,與sp_grantdbaccess對應的sp_denydbaccess存儲過程并不存在,也就是說,你不能按照拒絕對服務器訪問的方法拒絕對數據庫的訪問。如果要拒絕數據庫訪問,我們可以創建另外一個名為db_name denied users的全局組,授權它訪問數據庫,然后把它設置為db_denydatareader以及db_denydatawriter角色的成員。注意sql語句權限的分配,這里的角色只限制對對象的訪問,但不限制對ddl(data definition language,數據定義語言)命令的訪問。

正如對登錄過程的處理,如果訪問標記中的任意sid已經在sysusers系統表登記,sql將允許用戶訪問數據庫。因此,我們既可以通過用戶的個人nt帳戶sid授權用戶訪問數據庫,也可以通過用戶所在的一個(或者多個)組的sid授權。為了簡化管理,我們可以創建一個名為db_name users的擁有數據庫訪問權限的全局組,同時不把訪問權授予所有其他的組。這樣,我們只需簡單地在一個全局組中添加或者刪除成員就可以增加或者減少數據庫用戶。

五、分配權限

實施安全策略的最后一個步驟是創建用戶定義的數據庫角色,然后分配權限。完成這個步驟最簡單的方法是創建一些名字與全局組名字配套的角色。例如對于前面例子中的會計系統,我們可以創建accounting data entry operators、accounting data entry managers之類的角色。由于會計數據庫中的角色與帳務處理任務有關,你可能想要縮短這些角色的名字。然而,如果角色名字與全局組的名字配套,你可以減少混亂,能夠更方便地判斷出哪些組屬于特定的角色。

創建好角色之后就可以分配權限。在這個過程中,我們只需用到標準的grant、revoke和deny命令。但應該注意deny權限,這個權限優先于所有其他權限。如果用戶是任意具有deny權限的角色或者組的成員,sql server將拒絕用戶訪問對象。

接下來我們就可以加入所有sql server驗證的登錄。用戶定義的數據庫角色可以包含sql server登錄以及nt全局組、本地組、個人帳戶,這是它最寶貴的特點之一。用戶定義的數據庫角色可以作為各種登錄的通用容器,我們使用用戶定義角色而不是直接把權限分配給全局組的主要原因就在于此。

由于內建的角色一般適用于整個數據庫而不是單獨的對象,因此這里建議你只使用兩個內建的數據庫角色,,即db_securityadmin和db_owner。其他內建數據庫角色,例如db_datareader,它授予對數據庫里面所有對象的select權限。雖然你可以用db_datareader角色授予select權限,然后有選擇地對個別用戶或組拒絕select權限,但使用這種方法時,你可能忘記為某些用戶或者對象設置權限。一種更簡單、更直接而且不容易出現錯誤的方法是為這些特殊的用戶創建一個用戶定義的角色,然后只把那些用戶訪問對象所需要的權限授予這個用戶定義的角色。

六、簡化安全管理

sql server驗證的登錄不僅能夠方便地實現,而且與nt驗證的登錄相比,它更容易編寫到應用程序里。但是,如果用戶的數量超過25,或者服務器數量在一個以上,或者每個用戶都可以訪問一個以上的數據庫,或者數據庫有多個管理員,sql server驗證的登錄不容易管理。由于sql server沒有顯示用戶有效權限的工具,要記憶每個用戶具有哪些權限以及他們為何要得到這些權限就更加困難。即使對于一個數據庫管理員還要擔負其他責任的小型系統,簡化安全策略也有助于減輕問題的復雜程度。因此,首選的方法應該是使用nt驗證的登錄,然后通過一些精心選擇的全局組和數據庫角色管理數據庫訪問。

下面是一些簡化安全策略的經驗規則:

·用戶通過sql server users組獲得服務器訪問,通過db_name users組獲得數據庫訪問。

·用戶通過加入全局組獲得權限,而全局組通過加入角色獲得權限,角色直接擁有數據庫里的權限。

·需要多種權限的用戶通過加入多個全局組的方式獲得權限。

只要規劃得恰當,你能夠在域控制器上完成所有的訪問和權限維護工作,使得服務器反映出你在域控制器上進行的各種設置調整。雖然實際應用中情況可能有所變化,但本文介紹的基本措施仍舊適用,它們能夠幫助你構造出很容易管理的安全策略。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舟山市| 金川县| 新泰市| 依兰县| 云安县| 修文县| 西盟| 泽州县| 上林县| 石景山区| 南阳市| 阳山县| 屯门区| 台东县| 涟源市| 乐昌市| 祁阳县| 偃师市| 瑞安市| 曲靖市| 宜丰县| 秀山| 南靖县| 砚山县| 广宗县| 通州市| 汉源县| 新田县| 忻城县| 通江县| 福州市| 高州市| 安新县| 乌海市| 盱眙县| 伊吾县| 沂水县| 若羌县| 依安县| 交口县| 德庆县|