王 靜
提要本文提出了網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)庫安全遇到的威脅以及數(shù)據(jù)庫總體安全策略。通過這些策略來保障數(shù)據(jù)庫系統(tǒng)的完整性、保密性和可用性,抵御針對數(shù)據(jù)庫安全的各種威脅。
關(guān)鍵詞:網(wǎng)絡(luò);網(wǎng)絡(luò)數(shù)據(jù)庫;數(shù)據(jù)庫安全
中圖分類號:F49文獻(xiàn)標(biāo)識碼:A
一、引言
隨著網(wǎng)絡(luò)化開放環(huán)境的發(fā)展,B/S模式的網(wǎng)絡(luò)應(yīng)用越來越多,數(shù)據(jù)庫安全問題也日漸突出。根據(jù)我國GB17859-1999《計(jì)算機(jī)信息系統(tǒng)安全保護(hù)等級劃分準(zhǔn)則》中的描述:數(shù)據(jù)庫安全就是保證數(shù)據(jù)庫信息的保密性、完整性、一致性和可用性。
網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用系統(tǒng)是數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)技術(shù)相結(jié)合進(jìn)行信息處理的系統(tǒng)。這種結(jié)合大大提高了網(wǎng)絡(luò)功能,同時(shí)也將數(shù)據(jù)庫應(yīng)用延伸到網(wǎng)絡(luò)上,發(fā)揮數(shù)據(jù)庫強(qiáng)大的數(shù)據(jù)管理作用。但是,由于網(wǎng)絡(luò)連接中存在著種種安全隱患,這些安全隱患也必然會影響網(wǎng)絡(luò)數(shù)據(jù)庫的安全。
二、網(wǎng)絡(luò)數(shù)據(jù)庫簡介
網(wǎng)絡(luò)數(shù)據(jù)庫就是以后臺數(shù)據(jù)庫為基礎(chǔ),加上一定的前臺程序提供訪問控制,通過瀏覽器完成數(shù)據(jù)存儲、查詢等操作的信息集合?,F(xiàn)在流行的網(wǎng)絡(luò)數(shù)據(jù)庫主要為B/W/D三層結(jié)構(gòu)模型。(圖1)
這個(gè)模型由數(shù)據(jù)庫和網(wǎng)絡(luò)結(jié)合而成,分別由瀏覽器、Web服務(wù)器和應(yīng)用服務(wù)器以及數(shù)據(jù)庫服務(wù)器三部分組成。第一層客戶端為通用的瀏覽器軟件,是用戶與整個(gè)系統(tǒng)的接口。瀏覽器將代碼轉(zhuǎn)化成可提供交互功能的網(wǎng)頁,允許用戶輸入信息提交給后臺。并提出處理請求。這個(gè)后臺就是第二層的Web服務(wù)器。服務(wù)器將啟動相應(yīng)的進(jìn)程來響應(yīng)請求,并動態(tài)生成嵌入處理結(jié)果的代碼,并返回給客戶端瀏覽器。如果客戶端提交的請求包括數(shù)據(jù)的存取,Web服務(wù)器還需要與數(shù)據(jù)庫服務(wù)器協(xié)同完成這一請求。第三層數(shù)據(jù)庫服務(wù)器負(fù)責(zé)協(xié)調(diào)不同的Web服務(wù)器發(fā)出的SQL請求,從而有效管理數(shù)據(jù)庫。
三、網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)庫面臨的威脅
(一)網(wǎng)絡(luò)數(shù)據(jù)庫的完整性分析。數(shù)據(jù)庫的完整性指保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)不被破壞和刪除,我們主要從操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)進(jìn)行分析。首先,在操作系統(tǒng)下,網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)都是以文件形式進(jìn)行管理的,因此入侵者通過網(wǎng)絡(luò)可以直接利用操作系統(tǒng)的漏洞竊取數(shù)據(jù)庫文件,或者直接利用OS工具非法偽造、篡改數(shù)據(jù)庫文件內(nèi)容,而且一般網(wǎng)絡(luò)數(shù)據(jù)庫用戶難以察覺。其次,從數(shù)據(jù)庫系統(tǒng)的角度來看,許多DBA很容易忽略檢查嚴(yán)重的安全隱患和不正確的配置,而且數(shù)據(jù)庫廠商一般沒有提供專門的審計(jì)接口,即使提供其現(xiàn)有的功能也不太完整。另外,現(xiàn)有數(shù)據(jù)庫系統(tǒng)也存在多方面的攻擊隱患,如SQLServer就存在多種攻擊隱患,包括存在于UDP監(jiān)控器端口上的緩沖區(qū)溢出、利用SQLPing等工具向SQL監(jiān)控器端口攻擊、通過網(wǎng)絡(luò)嗅探等方式獲取密碼、利用xp_cmdshell stored procedure(擴(kuò)展存儲過程)讀取文件系統(tǒng)和注冊表、通過臨時(shí)存儲過程或SQLAgent繞過訪問控制機(jī)制等。
(二)網(wǎng)絡(luò)數(shù)據(jù)庫的保密性分析。數(shù)據(jù)庫的保密性指保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)不被泄露和未授權(quán)的獲取。SQL Server 2000使用Tabular Data Stream協(xié)議來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,如果不加密的話,所有的網(wǎng)絡(luò)傳輸都是明文的,包括密碼、數(shù)據(jù)庫內(nèi)容等等,這很可能被第三方人員截取、篡改。因此,當(dāng)用戶或應(yīng)用程序需要訪問SQLServer時(shí),就要發(fā)生一個(gè)相互交換憑證的過程。這些信息要盡可能進(jìn)行加密處理,以防止有人窺探網(wǎng)絡(luò)上的通信,并使用窺探到的信息假冒一個(gè)合法的用戶進(jìn)行信任欺騙。
(三)網(wǎng)絡(luò)數(shù)據(jù)庫的可用性分析。數(shù)據(jù)庫的可用性是確保數(shù)據(jù)庫中的數(shù)據(jù)不因人為的和自然的原因?qū)κ跈?quán)用戶不可用。通常情況下,對數(shù)據(jù)庫訪問的控制只能通過用戶控制即用戶名/密碼來進(jìn)行。在開放的網(wǎng)絡(luò)環(huán)境中,一方面數(shù)據(jù)庫要給網(wǎng)絡(luò)上的用戶提供盡可能方便的服務(wù);另一方面數(shù)據(jù)庫還要受到來自黑客的各種攻擊,這也增加了密碼保護(hù)管理的難度,導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)庫的可用性受到威脅。這就涉及“我是誰”和“允許我干什么”的問題。
(四)網(wǎng)絡(luò)數(shù)據(jù)庫的一致性分析。數(shù)據(jù)庫的一致性是確保數(shù)據(jù)庫中的數(shù)據(jù)滿足實(shí)體完整性、參照完整性和用戶定義完整性要求?,F(xiàn)在,許多站點(diǎn)都采用了ASP、PHP、JSP等腳本語言配合網(wǎng)絡(luò)數(shù)據(jù)庫的形式。如果不對網(wǎng)頁中用戶提交的數(shù)據(jù)進(jìn)行合法性判斷和過濾,惡意的瀏覽者就可以通過提交精心構(gòu)造的數(shù)據(jù)庫查詢代碼,進(jìn)行“SQL注入”攻擊。這就需要從應(yīng)用程序的代碼安全性著手,提高數(shù)據(jù)庫系統(tǒng)的安全性。
四、網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)庫總體安全策略
數(shù)據(jù)庫的安全性主要指保護(hù)數(shù)據(jù)庫,以防止不合法的使用所造成的數(shù)據(jù)泄密、更改或破壞。
(一)身份認(rèn)證。在面向多用戶開放共享的網(wǎng)絡(luò)環(huán)境下,訪問數(shù)據(jù)庫系統(tǒng)的用戶必須要求進(jìn)行身份認(rèn)證,以防止非法用戶訪問。這是網(wǎng)絡(luò)數(shù)據(jù)庫安全系統(tǒng)防止非法用戶侵入的第一道防線。當(dāng)前流行的幾種RDBMS中,身份認(rèn)證一般有三級:系統(tǒng)登錄、數(shù)據(jù)庫連接和數(shù)據(jù)庫對象使用。系統(tǒng)登錄一般由網(wǎng)絡(luò)操作系統(tǒng)提供檢查,要求用戶輸入用戶名和口令加以驗(yàn)證。通過系統(tǒng)安全檢查后用戶才可以處理業(yè)務(wù)流程。當(dāng)要求訪問數(shù)據(jù)庫時(shí),就要求數(shù)據(jù)庫管理系統(tǒng)驗(yàn)證當(dāng)前用戶身份是否可以進(jìn)行數(shù)據(jù)庫訪問。在取得數(shù)據(jù)庫登陸身份后,對數(shù)據(jù)庫中的數(shù)據(jù)對象進(jìn)行操作之前,數(shù)據(jù)庫管理系統(tǒng)要再次檢驗(yàn)用戶對數(shù)據(jù)庫對象的訪問權(quán)限,以核實(shí)該用戶是否有權(quán)對該數(shù)據(jù)庫對象進(jìn)行指定的操作。
(二)存儲訪問控制。所謂訪問控制,簡單地說,就是對應(yīng)保護(hù)的數(shù)據(jù)所進(jìn)行的存取訪問權(quán)限的確定、授予和實(shí)施。例如,針對一組數(shù)據(jù)庫記錄標(biāo)識,通過訪問控制,可以授權(quán)符合某一級別或者某一特征的用戶進(jìn)行的訪問方式,即讀、寫、查詢、增加、刪除、修改等操作的組合。數(shù)據(jù)的訪問控制必須和用戶的身份認(rèn)證結(jié)合起來,才能形成有效的安全機(jī)制。
(三)審計(jì)追蹤和攻擊檢測。身份驗(yàn)證和存儲訪問控制是目前網(wǎng)絡(luò)信息系統(tǒng)設(shè)計(jì)中最為普遍的安全性方法,但目前的軟件工程技術(shù)水平還無法證明或者保證任何一個(gè)系統(tǒng)不存在安全漏洞,也沒有一種可行的方法,可以徹底解決合法用戶在通過身份認(rèn)證后濫用特權(quán)的問題。因而,一些網(wǎng)絡(luò)信息系統(tǒng)中的大型DBMS提供的審計(jì)追蹤和攻擊檢測便成了一個(gè)十分重要的安全措施,也是任何一個(gè)安全系統(tǒng)中不可缺少的最后一道防線。審計(jì)功能在系統(tǒng)運(yùn)行時(shí),可以自動對數(shù)據(jù)庫的所有操作記錄在審計(jì)日志中,以此來監(jiān)視各用戶對數(shù)據(jù)庫施加的動作。攻擊檢測系統(tǒng)則是根據(jù)審計(jì)數(shù)據(jù)分析檢測內(nèi)部和外部攻擊者的攻擊企圖,再現(xiàn)導(dǎo)致系統(tǒng)現(xiàn)狀的事件,分析發(fā)現(xiàn)系統(tǒng)安全的弱點(diǎn),追查相關(guān)責(zé)任者。
(四)網(wǎng)絡(luò)數(shù)據(jù)庫的備份與恢復(fù)。數(shù)據(jù)備份與恢復(fù)是實(shí)現(xiàn)信息系統(tǒng)安全運(yùn)行的重要技術(shù)之一,能保證該系統(tǒng)因各種原因遭到破壞時(shí),能盡快投入使用。為了保證數(shù)據(jù)庫的安全性,應(yīng)用數(shù)據(jù)庫的備份是很重要的舉措。一般的數(shù)據(jù)備份解決方案為以下三種:磁帶備份、雙機(jī)熱備份、手工備份方法。
五、結(jié)束語
Internet的飛速發(fā)展,使得網(wǎng)絡(luò)不再是單純的信使,而是一個(gè)交互的平臺,使用很多像電子商務(wù)等的功能越來越頻繁,因此網(wǎng)絡(luò)數(shù)據(jù)庫的安全越來越重要。多用戶、高可靠性、頻繁的更新和大文件是數(shù)據(jù)庫的特性,這必然使得數(shù)據(jù)庫的建設(shè)和維護(hù)顯得非常困難和繁瑣,同時(shí)這也使攻擊者有機(jī)可乘,利用數(shù)據(jù)庫的一些不易覺察的漏洞,進(jìn)行非法操作。我們可以采取上文所述的幾方面措施,在設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)時(shí)做統(tǒng)籌安排,提高數(shù)據(jù)庫中數(shù)據(jù)的安全性。
(作者單位:西安歐亞學(xué)院)
參考文獻(xiàn):
[1]陳黎,我國網(wǎng)絡(luò)數(shù)據(jù)庫發(fā)展現(xiàn)狀[J],中國信息導(dǎo)報(bào),2004.
[2]姜啟濤,網(wǎng)絡(luò)數(shù)據(jù)庫的安全及優(yōu)化[J],計(jì)算機(jī)與信息技術(shù),2006.10.
[3]王巖明,冼沛勇,建立數(shù)據(jù)安全系統(tǒng),維護(hù)企業(yè)信息安全[J],計(jì)算機(jī)與網(wǎng)絡(luò),2003.24.
[4]張敏,徐震,馮登國,數(shù)據(jù)庫安全[M],北京,科學(xué)出版社,2000.