許多Windows系統(tǒng)管理員,還兼職著微軟SQL Server數(shù)據(jù)庫管理員(DBA)的身份。另一方面,企業(yè)將許多機密的信息存儲到了SQL Server數(shù)據(jù)庫中。作為一名DBA新手,則需要了解SQL Server的安全模式和如何配置其安全設(shè)置,以保證“合法”用戶的訪問并阻止“非法”訪問。而在SQL Server中登陸、用戶、角色、權(quán)限提供了對數(shù)據(jù)庫訪問的權(quán)限,接下來在數(shù)據(jù)庫安全性上著重分析它們的關(guān)系。
● 安全層次和驗證模式
一、安全層次 SQL Server支持三級安全層次。在我們登陸到SQL Server時,其實我們是經(jīng)過了三步的驗證。 第一層次是用戶提供正確的賬號和密碼登錄到SQL Server,或者已經(jīng)成功登陸了一個可以映射到SQL Server的windows賬號。但是在SQL Server登陸并不意味著能夠訪問數(shù)據(jù)庫,而是要經(jīng)過第二層次的驗證。 第二層次的權(quán)限允許用戶與一個或多個數(shù)據(jù)庫相連,這一層次的實現(xiàn)要在數(shù)據(jù)庫對象的用戶中綁定登陸賬戶。 第三個層次的安全權(quán)限允許用戶擁有對指定數(shù)據(jù)庫中的對象的訪問權(quán)限,例如:可以指定用戶有權(quán)使用哪些表和視圖、運行哪些存儲過程。在第一層次中的windows賬號,其實是在我們裝機時給windows指定的自己登陸到windows系統(tǒng)的賬號,而作為windows系統(tǒng)管理員的我們其實也兼職了SQL Server的管理權(quán),那我們?nèi)绾卧O(shè)置才能保證只有我們指定的用戶才能訪問SQL數(shù)據(jù)庫呢?就是我們下面要說的驗證模式。
二、SQL登陸驗證模式
SQL的登陸驗證模式有兩種,一種是Windows的驗證模式,另一種是Windows和SQL Server混合驗證模式。如果我們選擇windows模式登陸并把windows賬號映射到SQL Server的登陸上,那么合法的windows用戶也就連接到了SQL Server中。 Windows模式的登陸需要在SQL Server中設(shè)置。方法: 打開SQL Server企業(yè)管理器,找到安全性文件夾,打開后再登陸中新建一個windows身份驗證模式的賬戶。需要注意的是在新建賬戶時,賬戶的名稱一定要填我們windows賬戶的名字,如:我的計算機在用戶中名稱為張信秀,則在填名稱時一定要填張信秀。
SQL Server的驗證模式相對windows的登陸模式在設(shè)置上沒有特別的要求,只需填上我們的密碼即可。 接下來進入我們的重點——角色、權(quán)限,首先我們在圖上來區(qū)分。
● 登陸、權(quán)限、角色
在往下說之前我們先介紹下安全賬戶。返回到安全層次上來說,賬戶在登錄到SQL Server后,如果想獲得訪問某個數(shù)據(jù)庫的權(quán)限,是必須要在SQL中獲得安全賬戶的,確保登陸的賬號是安全的,就好比是我們出國的護照簽證一樣,想要去哪個國家必須獲得該國家的簽證和出入境章,這個安全賬戶就是在數(shù)據(jù)庫對象的用戶中綁定一個登陸賬號,證明這個登陸賬號是安全的。 賬戶、角色、權(quán)限他們?nèi)呤菦]有嚴格的關(guān)系的,如果有的話就是角色給賬戶分配職能,而權(quán)限卻又限制著角色和賬戶對數(shù)據(jù)庫的操作。它們?nèi)呔秃孟袷枪纠锏膯T工、職權(quán)、規(guī)章,公司按照職能分配不同的員工,但是每個員工卻又受到公司規(guī)章的限制。 一、數(shù)據(jù)庫角色 數(shù)據(jù)庫角色控制著數(shù)據(jù)庫的安全性。當(dāng)最終用戶成功地連接到分析服務(wù)器之后,會在那個服務(wù)器上的數(shù)據(jù)庫角色中查找最終用戶的用戶名,來確定用戶對數(shù)據(jù)庫的可能操作。 數(shù)據(jù)庫角色在創(chuàng)建時有兩種: 1、標準角色:不允許嵌套,在使用時只需在安全賬戶中添加,通過分配權(quán)限確保了用戶能夠進行的操作; 2、應(yīng)用程序角色:為了讓標準角色嵌套,來控制角色所能進行的操作,創(chuàng)建后SQL Server把它當(dāng)做賬戶看待(因為它是應(yīng)用程序級別的),它的作用是為權(quán)限提供相應(yīng)的加密,用存儲過程sp_setapprole激活才可進行授予權(quán)限的操作。 二、權(quán)限 權(quán)限有三種類型, 1、語句權(quán)限:限制對表update、insert等的操作,在創(chuàng)建角色時或添加安全用戶后設(shè)置; 2、對象權(quán)限:限制用戶對數(shù)據(jù)庫對象的創(chuàng)建,在數(shù)據(jù)庫屬性內(nèi)設(shè)置; 3、暗示性權(quán)限:SQL Server數(shù)據(jù)庫自帶的那些角色或用戶,如:服務(wù)器角色、數(shù)據(jù)庫所有者(dbo)等擁有的權(quán)限,不需要了解他,因為它是系統(tǒng)自己設(shè)置的用戶不能夠設(shè)置。 最后我們在代碼中應(yīng)用下三者:
● 總結(jié): 在新建登陸時,利用服務(wù)器角色分配賬戶的功能,利用數(shù)據(jù)庫角色管理用戶對數(shù)據(jù)庫進行的操作。在新建角色時為角色分配權(quán)限,來限制用戶的操作。 懂得SQL Server安全性的機制后,我們就可以開發(fā)自己的數(shù)據(jù)庫安全策略了。你下一步所需要的可能就是產(chǎn)生一個SQL Server腳本了。在SQL Server企業(yè)管理器中,右擊一個數(shù)據(jù)庫,選擇“所有任務(wù)”,選擇“生成SQL腳本”,這個選項能夠產(chǎn)生一個腳本,對包括安全策略在內(nèi)的數(shù)據(jù)庫進行更新。一個腳本文件可以代替通過鼠標在SQL Server事件管理器中進行點擊和選擇的操作,大大減少DBA的工作量。 |
|