朱 敏
摘要:針對目前面臨的數(shù)據(jù)庫安全問題,文章從數(shù)據(jù)庫系統(tǒng)的安全模型入手,對SqlSever數(shù)據(jù)庫的安全配置進行描述,分析討論了SQL SERVER數(shù)據(jù)庫使用中的安全問題,針對不同的用戶分析了可能存在的安全問題,并提出了一些具體的解決方法和建議,從而提高用戶對數(shù)據(jù)庫安全防范意識。
關(guān)鍵詞:SQL Server;數(shù)據(jù)庫;數(shù)據(jù)庫安全;訪問控制
中圖分類號:TP393文獻標識碼:A文章編號:1009-2374(2009)02-0037-02
SQL Server是微軟公司開發(fā)和推廣的數(shù)據(jù)庫管理系統(tǒng)(DBMS),在Windows NT或Windows2000下運行,是一個客戶朋艮務器關(guān)系式數(shù)據(jù)庫系統(tǒng)。由于SQL Server實現(xiàn)和管理數(shù)據(jù)庫應用程序最為容易,是設計中、小型數(shù)據(jù)庫的首選工具,在各個方面得到了廣泛的應用。
一、SQL SERVER中的安全性問題
(一)模型中的數(shù)據(jù)庫人口
數(shù)據(jù)庫的使用者可以分成三類:一般的用戶,管理員(包括數(shù)據(jù)庫庫管理員和系統(tǒng)管理員)程序員。不同的數(shù)據(jù)庫使用者進人數(shù)據(jù)庫的人口也是不同的。
一般的用戶(數(shù)據(jù)庫應用程序的使用者)是從模型中的最外圍一用戶來訪問、存取、控制數(shù)據(jù)庫的。用戶標識和鑒別是模型提供的最外層的安全包保護措施。從技術(shù)角度講,這個人口是最安全的。數(shù)據(jù)庫的安全性由程序保證。這就要求程序代碼的健壯性和安全性。由于程序代碼的問題導致的數(shù)據(jù)庫安全性早已引起重視。很多文獻列出的注入SQL攻擊就是程序代碼引起的,這些問題,程序員在編寫代碼的過程要注意。從管理角度講,用戶名和口令要保密。只要用戶的權(quán)限不是很高,即使泄漏了,也只是當前用戶對應得外模式數(shù)據(jù),對整個數(shù)據(jù)庫來講,這種威脅并不是致命的。
管理員(數(shù)據(jù)庫及數(shù)據(jù)庫應用系統(tǒng)的管理員。包括數(shù)據(jù)庫庫管理員和系統(tǒng)管理員)的安全性是至關(guān)重要的,他可以從模型的任意一層進入數(shù)據(jù)庫,從第1層用戶進入的話,安全問題和一般用戶一樣。從第2層數(shù)據(jù)庫管理進入的話,要特別注意,這個時候管理員的權(quán)限很大,安全問題很突出。一般管理員(區(qū)別于超級管理員)不能直接在數(shù)據(jù)庫服務器上通過DBMS進人數(shù)據(jù)庫。
程序員(數(shù)據(jù)庫應用程序的開發(fā)者)因為其特殊性,在應用系統(tǒng)開發(fā)的過程中,和數(shù)據(jù)庫管理員一樣,可以從OS,DBMS和用戶進入數(shù)據(jù)庫。甚至有時候是以超級管理員的身份進入數(shù)據(jù)庫的,這就使得數(shù)據(jù)庫的安全問題尤為突出,另外,程序員在數(shù)據(jù)庫應用程序正常使用以后,其身份又只相當于一般的用戶,甚至沒有操作的權(quán)限,那么從管理員、甚至是超級管理員身份變成一般用戶的過程中,用戶和密碼的泄露、傳播,數(shù)據(jù)庫操作權(quán)限的過大都給數(shù)據(jù)庫的正確、安全運行帶來影響,甚至是致命的問題。
(二)存取控制
數(shù)據(jù)庫安全最重要的一點就是確保只授權(quán)給有資格的用戶訪問數(shù)據(jù)庫的權(quán)限,同時令所有未被授權(quán)的人員無法接近數(shù)據(jù),這就是數(shù)據(jù)庫系統(tǒng)的存取控制機制。從數(shù)據(jù)庫安全的技術(shù)角度來看,MS SQL SERVER2000用用戶權(quán)限定義和合法權(quán)限檢查機制保證了系統(tǒng)的安全性,但是在數(shù)據(jù)庫管理層面上,往往是用戶權(quán)限分配和使用過程中的擴大化和濫用,導致存取控制形同虛設.造成安全隱患。下面是實際使用MS SQL SERVER2000中的問題:
1.MS SQL SERVER2000有一個SA的默認,很多數(shù)據(jù)庫使用者直接用的就是這個用戶,這樣,也就是說不管當前的數(shù)據(jù)庫使用者真正訪問和操作數(shù)據(jù)庫的權(quán)限有多大,一律賦予超級用戶權(quán)限,可以訪問和操作數(shù)據(jù)庫的所有數(shù)據(jù),存取控制形同虛設,數(shù)據(jù)庫從一定程度上就完全不安全。
2.某些情況下,為方便管理,超級用戶會新建用戶,但賦予新建用戶的權(quán)限過大,有些甚至具有超級用戶的權(quán)限,這樣存取控制同樣形同虛設。
3.對重要的數(shù)據(jù)庫管理員沒有密碼或弱密碼,MS SQLSERVER2000默認安裝,SA的密碼為空,一些用戶會取像“1234”這樣一些密碼,這就是弱密碼,同樣其他超級用戶也存在沒有密碼或弱密碼的情況,這樣很容易遭受攻擊,等于把SA交給所有能連接計算機的人員。
4.對于上述的三種情況,因為存取控制的形同虛設不僅帶來數(shù)據(jù)庫的安全問題,還能帶來整個計算機系統(tǒng)的安全性問題。MSSQL SERVER中,sa或者其他超級用戶,或者是MASTER的存儲過程執(zhí)行權(quán)限者,可以通過執(zhí)行MASTER 中的存儲過程cmd shell execute,增加任意級別的操作系統(tǒng)用戶,從而控制整個計算機系統(tǒng),進行任意的破壞。具體操作步驟:
STEPh以SA用戶登陸數(shù)據(jù)庫服務器;STEP2:執(zhí)行存儲過程MASTER。CMD—SHELL—EXECUTE“NET ADD USERNAME PASSWORD/USERE”:STEP3: 執(zhí)行存儲過程MASTER.CMD_SHELL—EXECUTE“NET ADD USERNAME ADMINISTRATOR/GROUP”:STE P4:用新增加超級用戶進入服務器操作系統(tǒng)。
二、SQL Sewer數(shù)據(jù)庫訪問控制策略
訪問控制(access contro1)是對用戶訪問數(shù)據(jù)庫各種資源的權(quán)力的控制。SQL Server對用戶的訪問控制分為兩個階段:一是安全帳戶認證。二是訪問許可認證。在安全帳戶認證階段。Windows操作系統(tǒng)或SQL Server對用戶登錄進行認證。如果認證成功,用戶則可連接到SQL Server,否則數(shù)據(jù)庫服務器將拒絕用戶的連接請求訪問許可確認指的是用戶成功連接到SQL Server后。系統(tǒng)根據(jù)數(shù)據(jù)庫中保存的與服務器登錄標識相對應的用戶帳戶來判斷他們是否擁有對數(shù)據(jù)庫的訪問許可。
(一)SQL Server的安全帳戶認證模式
SQL Server服務器安全認證有以下兩種模式:Windows認證模式和Windows與SQL Server混合認證模式。Windows認證更為安全。因為Windows操作系統(tǒng)具有較高的安全性(C2級安全標準)。SQL Server認證管理較為簡單,當SQL Server在Windows NT或Windows2000上運行時,系統(tǒng)管理員必須制定系統(tǒng)使用的認證模式。當采用混合認證模式時,SQL Server既允許使用Windows認證模式又允許使用SQL Server認證模式。
在完成SQL Server安裝以后,SQL Server就建立了一個特殊帳戶sa。sa是系統(tǒng)管理員(System Administrator)的簡稱,sa帳戶擁有最高的管理權(quán)限,可以執(zhí)行服務器范圍內(nèi)的所有操作,既不能更改sa用戶名稱,也不能刪除sa,但可以更改其密碼。在剛剛完成SQL Server的安裝時候,sa帳戶沒有任何密碼,所以要盡快為其設置密碼。
(二)訪問許可確認
用戶在實現(xiàn)安全登錄之后,檢驗用戶的下一個安全等級是數(shù)據(jù)庫訪問權(quán)限。數(shù)據(jù)庫的訪問權(quán)限是通過映射數(shù)據(jù)庫的用戶和登錄帳戶之間的關(guān)系來實現(xiàn)。安全帳戶認證決定用戶能否向SQL Server發(fā)送命令,而訪問權(quán)限確認則決定用戶能否在數(shù)據(jù)庫中執(zhí)行T—SQL語句。
三、合理分配權(quán)限