摘要:針對目前面臨的數(shù)據(jù)庫安全問題,,文章從數(shù)據(jù)庫系統(tǒng)的安全模型入手,對SqlSever數(shù)據(jù)庫的安全配置進行描述,,分析討論了SQL SERVER數(shù)據(jù)庫使用中的安全問題,,針對不同的用戶分析了可能存在的安全問題,并提出了一些具體的解決方法和建議,從而提高用戶對數(shù)據(jù)庫安全防范意識,。 關(guān)鍵詞:SQL Server,;數(shù)據(jù)庫;數(shù)據(jù)庫安全,;訪問控制 SQL Server是微軟公司開發(fā)和推廣的數(shù)據(jù)庫管理系統(tǒng)(DBMS),,在Windows NT或Windows2000下運行,是一個客戶朋艮務(wù)器關(guān)系式數(shù)據(jù)庫系統(tǒng),。由于SQL Server實現(xiàn)和管理數(shù)據(jù)庫應(yīng)用程序最為容易,,是設(shè)計中、小型數(shù)據(jù)庫的首選工具,,在各個方面得到了廣泛的應(yīng)用,。 一,、SQL SERVER中的安全性問題 (一)模型中的數(shù)據(jù)庫人口 數(shù)據(jù)庫的使用者可以分成三類:一般的用戶,,管理員(包括數(shù)據(jù)庫庫管理員和系統(tǒng)管理員)程序員。不同的數(shù)據(jù)庫使用者進人數(shù)據(jù)庫的人口也是不同的,。 一般的用戶(數(shù)據(jù)庫應(yīng)用程序的使用者)是從模型中的最外圍一用戶來訪問,、存取、控制數(shù)據(jù)庫的,。用戶標識和鑒別是模型提供的最外層的安全包保護措施。從技術(shù)角度講,,這個人口是最安全的,。數(shù)據(jù)庫的安全性由程序保證。這就要求程序代碼的健壯性和安全性,。由于程序代碼的問題導致的數(shù)據(jù)庫安全性早已引起重視。很多文獻列出的注入SQL攻擊就是程序代碼引起的,,這些問題,,程序員在編寫代碼的過程要注意,。從管理角度講,用戶名和口令要保密,。只要用戶的權(quán)限不是很高,即使泄漏了,,也只是當前用戶對應(yīng)得外模式數(shù)據(jù),,對整個數(shù)據(jù)庫來講,,這種威脅并不是致命的。 管理員(數(shù)據(jù)庫及數(shù)據(jù)庫應(yīng)用系統(tǒng)的管理員,。包括數(shù)據(jù)庫庫管理員和系統(tǒng)管理員)的安全性是至關(guān)重要的,,他可以從模型的任意一層進入數(shù)據(jù)庫,,從第1層用戶進入的話,,安全問題和一般用戶一樣,。從第2層數(shù)據(jù)庫管理進入的話,要特別注意,這個時候管理員的權(quán)限很大,,安全問題很突出,。一般管理員(區(qū)別于超級管理員)不能直接在數(shù)據(jù)庫服務(wù)器上通過DBMS進人數(shù)據(jù)庫,。 程序員(數(shù)據(jù)庫應(yīng)用程序的開發(fā)者)因為其特殊性,,在應(yīng)用系統(tǒng)開發(fā)的過程中,,和數(shù)據(jù)庫管理員一樣,可以從OS,,DBMS和用戶進入數(shù)據(jù)庫。甚至有時候是以超級管理員的身份進入數(shù)據(jù)庫的,,這就使得數(shù)據(jù)庫的安全問題尤為突出,,另外,,程序員在數(shù)據(jù)庫應(yīng)用程序正常使用以后,其身份又只相當于一般的用戶,,甚至沒有操作的權(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)限分配和使用過程中的擴大化和濫用,,導致存取控制形同虛設(shè).造成安全隱患。下面是實際使用MS SQL SERVER2000中的問題: 1.MS SQL SERVER2000有一個SA的默認,很多數(shù)據(jù)庫使用者直接用的就是這個用戶,這樣,,也就是說不管當前的數(shù)據(jù)庫使用者真正訪問和操作數(shù)據(jù)庫的權(quán)限有多大,,一律賦予超級用戶權(quán)限,可以訪問和操作數(shù)據(jù)庫的所有數(shù)據(jù),存取控制形同虛設(shè),,數(shù)據(jù)庫從一定程度上就完全不安全。 2.某些情況下,為方便管理,,超級用戶會新建用戶,但賦予新建用戶的權(quán)限過大,,有些甚至具有超級用戶的權(quán)限,,這樣存取控制同樣形同虛設(shè),。 3.對重要的數(shù)據(jù)庫管理員沒有密碼或弱密碼,,MS SQLSERVER2000默認安裝,,SA的密碼為空,一些用戶會取像“1234”這樣一些密碼,,這就是弱密碼,,同樣其他超級用戶也存在沒有密碼或弱密碼的情況,這樣很容易遭受攻擊,,等于把SA交給所有能連接計算機的人員,。 4.對于上述的三種情況,因為存取控制的形同虛設(shè)不僅帶來數(shù)據(jù)庫的安全問題,,還能帶來整個計算機系統(tǒng)的安全性問題,。MSSQL SERVER中,,sa或者其他超級用戶,或者是MASTER的存儲過程執(zhí)行權(quán)限者,,可以通過執(zhí)行MASTER 中的存儲過程cmd shell execute,增加任意級別的操作系統(tǒng)用戶,,從而控制整個計算機系統(tǒng),,進行任意的破壞。具體操作步驟: STEPh以SA用戶登陸數(shù)據(jù)庫服務(wù)器,;STEP2:執(zhí)行存儲過程MASTER,。CMD—SHELL—EXECUTE“NET ADD USERNAME PASSWORD/USERE”:STEP3: 執(zhí)行存儲過程MASTER.CMD_SHELL—EXECUTE“NET ADD USERNAME ADMINISTRATOR/GROUP”:STE P4:用新增加超級用戶進入服務(wù)器操作系統(tǒng),。 二,、SQL Sewer數(shù)據(jù)庫訪問控制策略 訪問控制(access contro1)是對用戶訪問數(shù)據(jù)庫各種資源的權(quán)力的控制,。SQL Server對用戶的訪問控制分為兩個階段:一是安全帳戶認證,。二是訪問許可認證,。在安全帳戶認證階段,。Windows操作系統(tǒng)或SQL Server對用戶登錄進行認證,。如果認證成功,用戶則可連接到SQL Server,,否則數(shù)據(jù)庫服務(wù)器將拒絕用戶的連接請求訪問許可確認指的是用戶成功連接到SQL Server后,。系統(tǒng)根據(jù)數(shù)據(jù)庫中保存的與服務(wù)器登錄標識相對應(yīng)的用戶帳戶來判斷他們是否擁有對數(shù)據(jù)庫的訪問許可,。 (一)SQL Server的安全帳戶認證模式 SQL Server服務(wù)器安全認證有以下兩種模式: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í)行服務(wù)器范圍內(nèi)的所有操作,,既不能更改sa用戶名稱,,也不能刪除sa,但可以更改其密碼,。在剛剛完成SQL Server的安裝時候,,sa帳戶沒有任何密碼,所以要盡快為其設(shè)置密碼,。 (二)訪問許可確認 用戶在實現(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)限 實施安全策略的最后一個步驟是創(chuàng)建用戶定義的數(shù)據(jù)庫角色,,然后分配權(quán)限,。完成這個步驟最簡單的方法是創(chuàng)建一些名字與全局組名字配套的角色,。例如對于前面例子中的會計系統(tǒng),,我們可以創(chuàng)建Accounting Data Entry Opera.tOrs,、Accounting Data Entry Managers之類的角色,。由于會計數(shù)據(jù)庫中的角色與帳務(wù)處理任務(wù)有關(guān),,你可能想要縮短這些角色的名字,。然而,如果角色名字與全局組的名字配套,,你可以減少混亂,,能夠更方便地判斷出哪些組屬于特定的角色。創(chuàng)建好角色之后就可以分配權(quán)限,。在這個過程中,,我們只需用到標準的GRANT,、REVOKE和DENY命令。但應(yīng)該注意DENY權(quán)限,,這個權(quán)限優(yōu)先于所有其他權(quán)限,。如果用戶是任意具有DENY權(quán)限的角色或者組的成員,SQLServer將拒絕用戶訪問對象,。接下來就可以加入所有SQL Server驗證的登錄。用戶定義的數(shù)據(jù)庫角色可以包含SQL Server登錄以及NT全局組,、本地組,、個人帳戶,這是它最寶貴的特點之一,。用戶定義的數(shù)據(jù)庫角色可以作為各種登錄的通用容器,,我們使用用戶定義角色而不是直接把權(quán)限分配給全局組的主要原因就在于此,。 由于內(nèi)建的角色一般適用于整個數(shù)據(jù)庫而不是單獨的對象,,因此這里建議你只使用兩個內(nèi)建的數(shù)據(jù)庫角色,,即db— securityadmin和db—owner。其他內(nèi)建數(shù)據(jù)庫角色,,例如db—datareader,它授予對數(shù)據(jù)庫里面所有對象的sE.LECT權(quán)限。雖然你可以用db—datareader角色授予sE.LECT權(quán)限,,然后有選擇地對個別用戶或組拒絕SELECT權(quán)限,但使用這種方法時,,你可能忘記為某些用戶或者對象設(shè)置權(quán)限,。一種更簡單,、更直接而且不容易出現(xiàn)錯誤的方法是為這些特殊的用戶創(chuàng)建一個用戶定義的角色,,然后只把那些用戶訪問對象所需要的權(quán)限授予這個用戶定義的角色。 本文介紹了SQL Server數(shù)據(jù)庫的安全機制,,在實際應(yīng)用中的有關(guān)安全性設(shè)置,,包括Windows2000操作系統(tǒng)安全設(shè)置、網(wǎng)絡(luò)安全設(shè)置,、MS SQL Server2000的安全設(shè)置知識等安全方法,,并提出了一些安全措施,,對于提高SQL Server數(shù)據(jù)庫的安全性有比較好的效果,對中,、小型數(shù)據(jù)庫的設(shè)計有一定的借鑒意義,。 參考文獻 [1]劉啟原,劉怡.數(shù)據(jù)庫與信息系統(tǒng)的安全[M].科學出版社,,2000. [2]李海泉.李?。嬎銠C網(wǎng)絡(luò)安全與加密技術(shù)[M].科學出版社.2001. [3]曹效陽.淺談SQL Server中的安全策略[J].現(xiàn)代計算機,2006,,(l). |
|
來自: 竹林茅廬 > 《數(shù)據(jù)庫》