許多Windows系統管理員,還兼職著(zhù)微軟SQL Server數據庫管理員(DBA)的身份。另一方面,企業(yè)將許多機密的信息存儲到了SQL Server數據庫中。作為一名DBA新手,則需要了解SQL Server的安全模式和如何配置其安全設置,以保證“合法”用戶(hù)的訪(fǎng)問(wèn)并阻止“非法”訪(fǎng)問(wèn)。而在SQL Server中登陸、用戶(hù)、角色、權限提供了對數據庫訪(fǎng)問(wèn)的權限,接下來(lái)在數據庫安全性上著(zhù)重分析它們的關(guān)系。
● 安全層次和驗證模式
一、安全層次
SQL Server支持三級安全層次。在我們登陸到SQL Server時(shí),其實(shí)我們是經(jīng)過(guò)了三步的驗證。
第一層次是用戶(hù)提供正確的賬號和密碼登錄到SQL Server,或者已經(jīng)成功登陸了一個(gè)可以映射到SQL Server的windows賬號。但是在SQL Server登陸并不意味著(zhù)能夠訪(fǎng)問(wèn)數據庫,而是要經(jīng)過(guò)第二層次的驗證。
第二層次的權限允許用戶(hù)與一個(gè)或多個(gè)數據庫相連,這一層次的實(shí)現要在數據庫對象的用戶(hù)中綁定登陸賬戶(hù)。
第三個(gè)層次的安全權限允許用戶(hù)擁有對指定數據庫中的對象的訪(fǎng)問(wèn)權限,例如:可以指定用戶(hù)有權使用哪些表和視圖、運行哪些存儲過(guò)程。在第一層次中的windows賬號,其實(shí)是在我們裝機時(shí)給windows指定的自己登陸到windows系統的賬號,而作為windows系統管理員的我們其實(shí)也兼職了SQL Server的管理權,那我們如何設置才能保證只有我們指定的用戶(hù)才能訪(fǎng)問(wèn)SQL數據庫呢?就是我們下面要說(shuō)的驗證模式。

二、SQL登陸驗證模式

SQL的登陸驗證模式有兩種,一種是Windows的驗證模式,另一種是Windows和SQL Server混合驗證模式。如果我們選擇windows模式登陸并把windows賬號映射到SQL Server的登陸上,那么合法的windows用戶(hù)也就連接到了SQL Server中。
Windows模式的登陸需要在SQL Server中設置。方法:
打開(kāi)SQL Server企業(yè)管理器,找到安全性文件夾,打開(kāi)后再登陸中新建一個(gè)windows身份驗證模式的賬戶(hù)。需要注意的是在新建賬戶(hù)時(shí),賬戶(hù)的名稱(chēng)一定要填我們windows賬戶(hù)的名字,如:我的計算機在用戶(hù)中名稱(chēng)為張信秀,則在填名稱(chēng)時(shí)一定要填張信秀。

SQL Server的驗證模式相對windows的登陸模式在設置上沒(méi)有特別的要求,只需填上我們的密碼即可。
接下來(lái)進(jìn)入我們的重點(diǎn)——角色、權限,首先我們在圖上來(lái)區分。
● 登陸、權限、角色

在往下說(shuō)之前我們先介紹下安全賬戶(hù)。返回到安全層次上來(lái)說(shuō),賬戶(hù)在登錄到SQL Server后,如果想獲得訪(fǎng)問(wèn)某個(gè)數據庫的權限,是必須要在SQL中獲得安全賬戶(hù)的,確保登陸的賬號是安全的,就好比是我們出國的護照簽證一樣,想要去哪個(gè)國家必須獲得該國家的簽證和出入境章,這個(gè)安全賬戶(hù)就是在數據庫對象的用戶(hù)中綁定一個(gè)登陸賬號,證明這個(gè)登陸賬號是安全的。
賬戶(hù)、角色、權限他們三者是沒(méi)有嚴格的關(guān)系的,如果有的話(huà)就是角色給賬戶(hù)分配職能,而權限卻又限制著(zhù)角色和賬戶(hù)對數據庫的操作。它們三者就好像是公司里的員工、職權、規章,公司按照職能分配不同的員工,但是每個(gè)員工卻又受到公司規章的限制。
一、數據庫角色
數據庫角色控制著(zhù)數據庫的安全性。當最終用戶(hù)成功地連接到分析服務(wù)器之后,會(huì )在那個(gè)服務(wù)器上的數據庫角色中查找最終用戶(hù)的用戶(hù)名,來(lái)確定用戶(hù)對數據庫的可能操作。
數據庫角色在創(chuàng )建時(shí)有兩種:
1、標準角色:不允許嵌套,在使用時(shí)只需在安全賬戶(hù)中添加,通過(guò)分配權限確保了用戶(hù)能夠進(jìn)行的操作;
2、應用程序角色:為了讓標準角色嵌套,來(lái)控制角色所能進(jìn)行的操作,創(chuàng )建后SQL Server把它當做賬戶(hù)看待(因為它是應用程序級別的),它的作用是為權限提供相應的加密,用存儲過(guò)程sp_setapprole激活才可進(jìn)行授予權限的操作。
二、權限
權限有三種類(lèi)型,
1、語(yǔ)句權限:限制對表update、insert等的操作,在創(chuàng )建角色時(shí)或添加安全用戶(hù)后設置;
2、對象權限:限制用戶(hù)對數據庫對象的創(chuàng )建,在數據庫屬性?xún)仍O置;
3、暗示性權限:SQL Server數據庫自帶的那些角色或用戶(hù),如:服務(wù)器角色、數據庫所有者(dbo)等擁有的權限,不需要了解他,因為它是系統自己設置的用戶(hù)不能夠設置。
最后我們在代碼中應用下三者:
● 總結:
在新建登陸時(shí),利用服務(wù)器角色分配賬戶(hù)的功能,利用數據庫角色管理用戶(hù)對數據庫進(jìn)行的操作。在新建角色時(shí)為角色分配權限,來(lái)限制用戶(hù)的操作。
懂得SQL Server安全性的機制后,我們就可以開(kāi)發(fā)自己的數據庫安全策略了。你下一步所需要的可能就是產(chǎn)生一個(gè)SQL Server腳本了。在SQL Server企業(yè)管理器中,右擊一個(gè)數據庫,選擇“所有任務(wù)”,選擇“生成SQL腳本”,這個(gè)選項能夠產(chǎn)生一個(gè)腳本,對包括安全策略在內的數據庫進(jìn)行更新。一個(gè)腳本文件可以代替通過(guò)鼠標在SQL Server事件管理器中進(jìn)行點(diǎn)擊和選擇的操作,大大減少DBA的工作量。
聯(lián)系客服