孫琪
(河南經(jīng)貿(mào)職業(yè)學(xué)院,河南 鄭州 450053)
SQL Server的安全級(jí)別分析
孫琪
(河南經(jīng)貿(mào)職業(yè)學(xué)院,河南 鄭州 450053)
SQL Server是一種廣泛使用的數(shù)據(jù)庫(kù)。本文介紹了SQL Server安全管理的設(shè)計(jì)方法,主要通過(guò)設(shè)置身份驗(yàn)證、管理登錄賬戶、管理數(shù)據(jù)庫(kù)用戶幾方面實(shí)現(xiàn)。用戶只要能夠理解其管理機(jī)制,就可以快速進(jìn)行數(shù)據(jù)庫(kù)的安全配置。
SQL;安全級(jí)別;數(shù)據(jù)庫(kù)安全
安全性對(duì)于任何一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)都是至關(guān)重要的。數(shù)據(jù)庫(kù)中通常存儲(chǔ)著大量的數(shù)據(jù),這些數(shù)據(jù)可能是個(gè)人信息、客戶資料或其他機(jī)密資料。如果有人未經(jīng)授權(quán)訪問(wèn)數(shù)據(jù)庫(kù),并竊取了查看和修改重要數(shù)據(jù)的權(quán)限,將會(huì)造成極大的危害。無(wú)論用戶如何獲得對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,堅(jiān)固的安全體系都可以確保對(duì)數(shù)據(jù)進(jìn)行保護(hù)。sql server使用登錄標(biāo)識(shí)、數(shù)據(jù)庫(kù)用戶、角色和組這些概念來(lái)保護(hù)數(shù)據(jù)庫(kù)中的信息資源,以防止這些資源的非授權(quán)使用。
安全性管理包括兩個(gè)方面的內(nèi)容,一方面是用戶登錄系統(tǒng)的管理(驗(yàn)證),另一方面是用戶使用數(shù)據(jù)庫(kù)對(duì)象的管理 (授權(quán))。只有特定的用戶使用特定的認(rèn)證模式,才能登錄到系統(tǒng)中,使用系統(tǒng)的資源。在數(shù)據(jù)庫(kù)中,只有具有一定權(quán)限的用戶,才能使用相應(yīng)的數(shù)據(jù)庫(kù)對(duì)象(即使用戶登錄到sqlserver系統(tǒng)中,若沒有一定的權(quán)限,仍然不能操作相應(yīng)的數(shù)據(jù)庫(kù)對(duì)象)。
驗(yàn)證(authentication)是指檢驗(yàn)用戶的身份標(biāo)識(shí),授權(quán)(authorization)是指允許用戶做些什么。驗(yàn)證過(guò)程在用戶登錄SQL Server的時(shí)候出現(xiàn),授權(quán)過(guò)程在用戶試圖訪問(wèn)數(shù)據(jù)或執(zhí)行命令的時(shí)候出現(xiàn)。
構(gòu)造安全策略的第一個(gè)步驟是確定SQL Server用哪種方式驗(yàn)證用戶。SQLServer的驗(yàn)證是把一組賬戶、密碼與Master數(shù)據(jù)庫(kù)Sysxlogins表中的一個(gè)記錄進(jìn)行匹配。Windows驗(yàn)證是請(qǐng)求域控制器檢查用戶身份的合法性。一般地,如果服務(wù)器可以訪問(wèn)域控制器,我們應(yīng)該使用Windows NT/2000驗(yàn)證。域控制器可以是Win2K服務(wù)器,也可以是NT服務(wù)器。無(wú)論在哪種情況下,SQL Server都接收到一個(gè)訪問(wèn)標(biāo)記(AccessToken)。訪問(wèn)標(biāo)記是在驗(yàn)證過(guò)程中構(gòu)造出來(lái)的一個(gè)特殊列表,其中包含了用戶的SID(安全標(biāo)識(shí)號(hào))以及一系列用戶所在組的SID。SQLServer以這些SID為基礎(chǔ)授予訪問(wèn)權(quán)限。
如果使用SQL Server驗(yàn)證的登錄,它最大的好處是很容易通過(guò)Enterprise Manager實(shí)現(xiàn)管理。使用SQL Server進(jìn)行驗(yàn)證最重要的缺點(diǎn)是,對(duì)于每一個(gè)數(shù)據(jù)庫(kù),我們必須分別地為它設(shè)置管理權(quán)限。如果某個(gè)用戶對(duì)兩個(gè)數(shù)據(jù)庫(kù)有相同的權(quán)限要求,我們必須手工設(shè)置兩個(gè)數(shù)據(jù)庫(kù)的權(quán)限,或者編寫腳本設(shè)置權(quán)限。如果用戶數(shù)量較少,比如25個(gè)以下,而且這些用戶的權(quán)限變化不是很頻繁,SQLServer驗(yàn)證的登錄或許適用。但是,在幾乎所有的其他情況下,這種登錄方式的管理負(fù)擔(dān)將超過(guò)它的優(yōu)點(diǎn)。
用戶必須使用特定的登錄賬戶才能連接到SQL Server。創(chuàng)建連接后,用戶必須使用特定的用戶賬戶才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),而且只能查看經(jīng)授權(quán)可以查看的表和視圖,只能執(zhí)行經(jīng)授權(quán)可以執(zhí)行的存儲(chǔ)過(guò)程和管理功能。
SQL Server的驗(yàn)證模式分為windows驗(yàn)證模式和混合驗(yàn)證模式。Windows身份驗(yàn)證模式使用戶可以通過(guò)windows操作系統(tǒng)用戶賬戶連接到SQLServer實(shí)例。當(dāng)用戶通過(guò)windows用戶賬戶進(jìn)行連接時(shí),SQL Server通過(guò)回叫windows以獲得信息,重新驗(yàn)證賬戶名和密碼?;旌向?yàn)證模式使用戶可以使用windows身份驗(yàn)證或SQL Server身份驗(yàn)證與SQL Server實(shí)例連接。在windows身份驗(yàn)證模式或混合模式下,通過(guò)windows用戶賬戶連接的用戶可以使用信任連接。
<域名><用戶名>:一個(gè)Windows用戶賬戶,允許作為SQLServer登錄賬戶使用。
BUILTINAdministrators:一個(gè)Windows組賬戶,凡屬于該組的用戶賬戶,都可以作為SQL Server登錄賬戶使用。
sa:SQL Server系統(tǒng)管理員登錄賬戶,該賬戶擁有最高的管理權(quán)限,可以執(zhí)行服務(wù)器范圍內(nèi)的所有操作。
由于sql server不能更改用戶名稱,也不能刪除這個(gè)超級(jí)用戶,所以我們必須對(duì)這個(gè)賬戶進(jìn)行最強(qiáng)的保護(hù),當(dāng)然包括使用一個(gè)非常強(qiáng)壯的密碼。
最好不要在數(shù)據(jù)庫(kù)應(yīng)用中使用sa賬戶,只有當(dāng)其他系統(tǒng)管理員不可用或忘記了密碼,無(wú)法登錄到SQL Server的時(shí)候,才使用sa這個(gè)特殊的登錄賬戶。建議數(shù)據(jù)庫(kù)管理員建立一個(gè)擁有和sa一樣權(quán)限的超級(jí)用戶來(lái)管理數(shù)據(jù)庫(kù)。
Sql server的認(rèn)證模式有windows身份認(rèn)證和混合身份認(rèn)證兩種,如果數(shù)據(jù)庫(kù)管理員不希望操作系統(tǒng)管理員通過(guò)登錄操作系統(tǒng)來(lái)接觸到數(shù)據(jù)庫(kù)的話,可以在賬戶管理中把系統(tǒng)賬號(hào)“builtinadministrators”刪除,不過(guò)這樣做的結(jié)果是,一旦sa賬戶忘記密碼的話,就沒有辦法來(lái)恢復(fù)了。
管理數(shù)據(jù)庫(kù)的過(guò)程實(shí)際上就是建立登錄賬戶和用戶賬戶之間映射關(guān)系的過(guò)程。
1.添加數(shù)據(jù)庫(kù)用戶
要授予一個(gè)登錄賬戶訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限,就必須將這個(gè)登錄賬戶在該數(shù)據(jù)庫(kù)中映射為一個(gè)數(shù)據(jù)庫(kù)用戶賬戶。
2.修改數(shù)據(jù)庫(kù)用戶
在數(shù)據(jù)庫(kù)建立一個(gè)數(shù)據(jù)庫(kù)用戶賬戶時(shí),要為賬戶設(shè)置某種權(quán)限,可以通過(guò)為它指定適當(dāng)?shù)臄?shù)據(jù)庫(kù)角色來(lái)實(shí)現(xiàn)。修改所設(shè)置的權(quán)限時(shí),只需要修改該賬戶所屬的數(shù)據(jù)庫(kù)角色即可。
3.刪除數(shù)據(jù)庫(kù)用戶
從當(dāng)前數(shù)據(jù)庫(kù)中刪除一個(gè)數(shù)據(jù)庫(kù)用戶,就刪除了一個(gè)登錄賬戶在當(dāng)前數(shù)據(jù)庫(kù)中映射。
SQLServer的安全機(jī)制一般主要包括三個(gè)方面:
服務(wù)器級(jí)別的安全機(jī)制:這個(gè)級(jí)別的安全性主要通過(guò)登錄賬戶進(jìn)行控制,要想訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,必須擁有一個(gè)登錄賬戶。登錄賬戶可以是Windows賬戶或組,也可以是SQLServer的登錄賬戶。登錄賬戶可以屬于相應(yīng)的服務(wù)器角色。至于角色,可以理解為權(quán)限的組合。
數(shù)據(jù)庫(kù)級(jí)別的安全機(jī)制:這個(gè)級(jí)別的安全性主要通過(guò)用戶賬戶進(jìn)行控制,要想訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),必須擁有該數(shù)據(jù)庫(kù)的一個(gè)用戶賬戶身份。用戶賬戶是通過(guò)登錄賬戶進(jìn)行映射的,可以屬于固定的數(shù)據(jù)庫(kù)角色或自定義數(shù)據(jù)庫(kù)角色。
數(shù)據(jù)對(duì)象級(jí)別的安全機(jī)制:這個(gè)級(jí)別的安全性通過(guò)設(shè)置數(shù)據(jù)對(duì)象的訪問(wèn)權(quán)限進(jìn)行控制。如果是使用圖形界面管理工具,可以在表上點(diǎn)右鍵,選擇屬性權(quán)限,然后在相應(yīng)的權(quán)限項(xiàng)目上打勾就可以了。
如果是使用sql語(yǔ)句,可以如下:
grant select|insert|update|delete on tablename to username
deny select|insert|update|delete on tablename to username
revoke select|insert|update|delete on tablename from username
grant是賦予權(quán)限,deny是拒絕權(quán)限,revoke是撤銷權(quán)限,而select|insert|update|delete是可以設(shè)置的各個(gè)權(quán)限項(xiàng)目。
[1]王雪峰.SQL Server 2000服務(wù)器的安全管理[J].電腦學(xué)習(xí),2009,(1).
[2]田海濤.SQL Server安全管理策略[J].統(tǒng)計(jì)與咨詢,2003,(4).
[3]李超.SQL SERVER 2000的安全機(jī)制[J].中國(guó)輕工教育,2006,(1).
[4]劉瑜,陳鐵英.Microsoft SQL Server數(shù)據(jù)庫(kù)的安全策略及實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2003,(1).
TN
A
1673-0046(2010)5-0170-02