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