引言
數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫(kù)系統(tǒng)的主要指標(biāo)之一。數(shù)據(jù)庫(kù)的安全性和計(jì)算機(jī)系統(tǒng)的安全性,包括操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)的安全性是緊密聯(lián)系、相互支持的。
對(duì)于數(shù)據(jù)庫(kù)管理來(lái)說(shuō),保護(hù)數(shù)據(jù)不受內(nèi)部和外部侵害是一項(xiàng)重要的工作。Microsoft SQL Server 正日益廣泛的使用于各部門(mén)內(nèi)外,作為SQL Server(SQL Server是指Microsoft SQL Server,下文同)的數(shù)據(jù)庫(kù)系統(tǒng)管理員,需要深入的理解SQL Server的安全性控制策略,以實(shí)現(xiàn)管理安全性的目標(biāo)。
圖1給出了SQL Server安全控制策略示意圖。由圖可見(jiàn),SQL Server的安全控制策略是一個(gè)層次結(jié)構(gòu)系統(tǒng)的集合。只有滿(mǎn)足上一層系統(tǒng)的安全性要求之后,才可以進(jìn)入下一層。

1. 用戶(hù)標(biāo)識(shí)與驗(yàn)證
用戶(hù)標(biāo)示和驗(yàn)證是系統(tǒng)提供的最外層安全保護(hù)措施。其方法是由系統(tǒng)提供一定的方式讓用戶(hù)標(biāo)示自己的名字或身份。每次用戶(hù)要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核對(duì),通過(guò)鑒定后才提供機(jī)器使用權(quán)。
對(duì)于獲得上機(jī)權(quán)的用戶(hù)若要使用數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)庫(kù)管理系統(tǒng)還要進(jìn)行用戶(hù)標(biāo)識(shí)和鑒定。
用戶(hù)標(biāo)識(shí)和鑒定的方法有很多種,而且在一個(gè)系統(tǒng)中往往是多種方法并舉,以獲得更強(qiáng)的安全性。常用的方法有:
用一個(gè)用戶(hù)名或者用戶(hù)標(biāo)識(shí)號(hào)來(lái)標(biāo)明用戶(hù)身份。系統(tǒng)內(nèi)部紀(jì)錄著所有合法用戶(hù)的標(biāo)識(shí),系統(tǒng)驗(yàn)證此戶(hù)是否合法用戶(hù),若是,則可以進(jìn)入下一步的核實(shí);若不是,則不能使用系統(tǒng)。
為了進(jìn)一步核實(shí)用戶(hù),系統(tǒng)常常要求用戶(hù)輸入口令(Password)。為保密起見(jiàn),用戶(hù)在終端上輸入的口令不顯示在屏幕上。系統(tǒng)核對(duì)口令以驗(yàn)證用戶(hù)身份。
用戶(hù)標(biāo)識(shí)與驗(yàn)證在SQL Server中對(duì)應(yīng)的是Windows NT/2000登錄賬號(hào)和口令以及SQL Server用戶(hù)登錄賬號(hào)和口令。
2. SQL Server身份驗(yàn)證方式
用戶(hù)必須使用一個(gè)登錄賬號(hào),才能連接到SQL Server中。SQL Server可以識(shí)別兩類(lèi)的身份驗(yàn)證方式,即:SQL Server身份驗(yàn)證(SQL Server Authentication)方式和Windows身份驗(yàn)證(Windows Authentication)方式。這兩種方式的結(jié)構(gòu)如圖2所示。這兩種方式都有自己的登錄賬號(hào)類(lèi)型。

注意的是,如果在Microsoft Windows95/98/ME上使用SQL Server的Personal版,作為SQL Server宿主的Microsoft Windows95/98/ME系統(tǒng)只能使用SQL Server登錄。因此,Windows NT/2000身份驗(yàn)證、域用戶(hù)的賬號(hào)和域組賬號(hào)都是不可用的。
當(dāng)使用SQL Server身份驗(yàn)證方式時(shí), 由SQL Server系統(tǒng)管理員定義SQL Server賬號(hào)和口令。當(dāng)用戶(hù)連接SQL Serve時(shí),必須提供登錄賬號(hào)和口令。當(dāng)使用Windows身份驗(yàn)證方式時(shí),由Windows NT/2000賬號(hào)或者組控制用戶(hù)對(duì)SQL Server系統(tǒng)的訪問(wèn)。這時(shí),用戶(hù)不必提供SQL Server的Login賬號(hào)和口令就能連接到系統(tǒng)上。但是,在該用戶(hù)連接之前,SQL Serve系統(tǒng)管理員必須將Windows NT/2000賬號(hào)或者Windows NT/2000組定義為SQL Server的有效登錄賬號(hào)。
3. 身份驗(yàn)證模式
當(dāng)SQL Serve在Windows NT/2000上運(yùn)行時(shí),系統(tǒng)管理員必須指定系統(tǒng)的身份驗(yàn)證模式類(lèi)型。SQL Server的身份驗(yàn)證模式有兩種:Windows 身份驗(yàn)證(Windows Authentication)模式和混合模式(Mixed Mode)。身份驗(yàn)證模式和身份驗(yàn)證方式的關(guān)系是:
Windows身份驗(yàn)證模式 (Windows身份驗(yàn)證方式);
混合模式 (Windows 身份驗(yàn)證方式 和 SQL Server 身份驗(yàn)證方式)。
Windows 身份驗(yàn)證模式只允許使用Windows 身份驗(yàn)證方式,這時(shí)用戶(hù)無(wú)法以SQL Server的登錄賬號(hào)登錄服務(wù)器。它要求用戶(hù)登錄到Windows NT/2000,當(dāng)用戶(hù)訪問(wèn)SQL Server時(shí),不用再次登錄。雖然用戶(hù)仍會(huì)被提示登錄,但SQL Server的用戶(hù)名會(huì)自動(dòng)從用戶(hù)網(wǎng)絡(luò)登錄ID中提取。而混合身份驗(yàn)證模式即允許使用Windows NT/2000身份驗(yàn)證方式,又允許使用SQL Server身份驗(yàn)證方式。它使用戶(hù)既可以登錄SQL Server,也可用Windows NT/2000的集成登錄。
集成登錄只能在用命名管道連接客戶(hù)機(jī)服務(wù)器時(shí)使用。當(dāng)使用混合模式時(shí),無(wú)論是使用Windows NT/2000身份驗(yàn)證方式的用戶(hù),還是使用SQL Server身份驗(yàn)證方式的用戶(hù),都可以連接到SQL Server系統(tǒng)上。也就是說(shuō):身份驗(yàn)證模式是對(duì)服務(wù)器來(lái)說(shuō)的,而身份驗(yàn)證方式是對(duì)客戶(hù)端來(lái)說(shuō)的。
4. Windows身份驗(yàn)證模式
Windows 身份驗(yàn)證模式最適用于只在部門(mén)訪問(wèn)數(shù)據(jù)庫(kù)的情況。與SQL Server身份驗(yàn)證方式相比,Windows身份驗(yàn)證方式具有下列優(yōu)點(diǎn):提供了更多的功能,例如安全確認(rèn)和口令加密、審核、口令失效、最小口令長(zhǎng)度和賬號(hào)鎖定;通過(guò)增加單個(gè)登錄賬號(hào),允許在SQL Server系統(tǒng)中增加用戶(hù)組;允許用戶(hù)迅速訪問(wèn)SQL Server系統(tǒng),而不必使用另一個(gè)登錄賬號(hào)和口令。
SQL Server系統(tǒng)按照下列步驟處理Windows 身份驗(yàn)證方式中的登錄賬號(hào):
1)當(dāng)用戶(hù)連接到Windows NT/2000系統(tǒng)上時(shí),客戶(hù)機(jī)打開(kāi)一個(gè)到SQL Server系統(tǒng)的委托連接。該委托連接將Windows NT/2000的組和用戶(hù)賬號(hào)傳送到SQL Server系統(tǒng)中。因?yàn)榭蛻?hù)機(jī)打開(kāi)了一個(gè)委托連接,所以SQL Server系統(tǒng)知道Windows NT/2000已經(jīng)確認(rèn)該用戶(hù)有效。
2)如果SQL Server系統(tǒng)在系統(tǒng)表syslogins的SQL Server用戶(hù)清單中找到該用戶(hù)的Windows NT/2000用戶(hù)賬號(hào)或者組賬號(hào),就接受這次身份驗(yàn)證連接。這時(shí),SQL Server系統(tǒng)不需要重新驗(yàn)證口令是否有效,因?yàn)閃indows NT/2000已經(jīng)驗(yàn)證用戶(hù)的口令是有效的。
3)在這種情況下,該用戶(hù)的SQL Server系統(tǒng)登錄賬號(hào)即可以是Windows NT/2000的用戶(hù)賬號(hào),也可以是Windows NT/2000組賬號(hào)。當(dāng)然,這些用戶(hù)賬號(hào)或者組賬號(hào)都已定義為SQL Server系統(tǒng)登錄賬號(hào)。
4)如果多個(gè)SQL Server機(jī)器在一個(gè)域或者在一組信任域中,那么登錄到單個(gè)網(wǎng)絡(luò)域上,就可以訪問(wèn)全部的SQL Server機(jī)器。
5. 混合模式
混合模式最適合用于外界用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)或不能登錄到Windows域時(shí)。
混合方式的SQL Server身份驗(yàn)證方式有下列優(yōu)點(diǎn):混合方式允許非Windows NT/2000客戶(hù)、Internet客戶(hù)和混合的客戶(hù)組連接到SQL Server中;SQL Server身份驗(yàn)證方式又增加了一層基于Windows 的安全保護(hù)。SQL Server按照下列步驟處理自己的登錄賬號(hào):
1.當(dāng)一個(gè)使用SQL Server賬號(hào)和口令的用戶(hù)連接SQL Server時(shí),SQL Server驗(yàn)證該用戶(hù)是否在系統(tǒng)表syslogins中且其口令是否與以前紀(jì)錄的口令匹配。
2.如果在系統(tǒng)表syslogins中沒(méi)有該用戶(hù)賬號(hào),那么這次身份驗(yàn)證失敗,系統(tǒng)拒絕該用戶(hù)的連接。
結(jié)束語(yǔ)
SQL Server提供多層安全。在最外層,SQL Server的登錄安全性直接集成到Widows NT/2000的安全上,它允許Windows NT服務(wù)器驗(yàn)證用戶(hù)。使用這種“Windows 驗(yàn)證”SQL Server就可以利用Windows NT/2000的安全特性,例如安全驗(yàn)證和密碼加密、審核、密碼過(guò)期、最短密碼長(zhǎng)度,以及在多次登錄請(qǐng)求無(wú)效后鎖定帳號(hào)。