Oracle數(shù)據(jù)庫(kù)安全策略與實(shí)現(xiàn)方法
數(shù)據(jù)庫(kù)安全性問(wèn)題一直是圍繞著數(shù)據(jù)庫(kù)管理員的惡夢(mèng),數(shù)據(jù)庫(kù)數(shù)據(jù)的丟失以及數(shù)據(jù)庫(kù)被非法用戶的侵入使得數(shù)據(jù)庫(kù)管理員身心疲憊不堪。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,數(shù)據(jù)庫(kù)的應(yīng)用十分廣泛,深入到各個(gè)領(lǐng)域,但隨之而來(lái)產(chǎn)生了數(shù)據(jù)的安全問(wèn)題。各種應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)中大量數(shù)據(jù)的安全問(wèn)題、敏感數(shù)據(jù)的防竊取和防篡改問(wèn)題,越來(lái)越引起人們的高度重視。數(shù)據(jù)庫(kù)系統(tǒng)作為信息的聚集體,是計(jì)算機(jī)信息系統(tǒng)的核心部件,其安全性至關(guān)重要,關(guān)系到企業(yè)興衰、國(guó)家安全。因此,如何有效地保證數(shù)據(jù)庫(kù)系統(tǒng)的安全,實(shí)現(xiàn)數(shù)據(jù)的保密性、完整性和有效性,已經(jīng)成為如今關(guān)注的一個(gè)話題。
· 絕密保典杜絕胸險(xiǎn); · 銀行卡 安全快捷換Q幣; · 溝通無(wú)極限手機(jī)Q時(shí)代; · 魔法表情秀出百變心情; · 管中窺豹明察秋毫; · QQ秀 秀出個(gè)性真自我;
甲骨文董事長(zhǎng)拉里·埃里森在Oracle OpenWorld大會(huì)上,談到了一個(gè)觀點(diǎn)——要保護(hù)數(shù)據(jù)庫(kù)安全,關(guān)鍵在于加密。他還認(rèn)為,我們不僅要為發(fā)往互聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)中的數(shù)據(jù)加密,還要為從硬盤(pán)轉(zhuǎn)移到后端系統(tǒng)的過(guò)程中的數(shù)據(jù)加密。他還建議企業(yè)禁止用戶在沒(méi)有進(jìn)行加密的情況下實(shí)施數(shù)據(jù)備份。“因?yàn)槿绻麤](méi)有加密的備份CD或者DVD光盤(pán)一旦丟失,你就會(huì)失去信息。”
數(shù)據(jù)庫(kù)系統(tǒng)的安全性很大程度上依賴于數(shù)據(jù)庫(kù)管理系統(tǒng)。如果數(shù)據(jù)庫(kù)管理系統(tǒng)安全機(jī)制非常強(qiáng)大,則數(shù)據(jù)庫(kù)系統(tǒng)的安全性能就較好。目前市場(chǎng)上流行的是關(guān)系式數(shù)據(jù)庫(kù)管理系統(tǒng),其安全性功能很弱,這就導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)的安全性存在一定的威脅。因此,數(shù)據(jù)庫(kù)管理員應(yīng)從以下幾個(gè)方面對(duì)數(shù)據(jù)庫(kù)的安全進(jìn)行考慮。
一:用戶角色的管理
這是保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)安全的重要手段之一。它通過(guò)建立不同的用戶組和用戶口令驗(yàn)證,可以有效地防止非法的Oracle用戶進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng),造成不必要的麻煩和損壞;另外在Oracle數(shù)據(jù)庫(kù)中,可以通過(guò)授權(quán)來(lái)對(duì)Oracle用戶的操作進(jìn)行限制,即允許一些用戶可以對(duì)Oracle服務(wù)器進(jìn)行訪問(wèn),也就是說(shuō)對(duì)整個(gè)數(shù)據(jù)庫(kù)具有讀寫(xiě)的權(quán)利,而大多數(shù)用戶只能在同組內(nèi)進(jìn)行讀寫(xiě)或?qū)φ麄€(gè)數(shù)據(jù)庫(kù)只具有讀的權(quán)利。在此,特別強(qiáng)調(diào)對(duì)SYS和SYSTEM兩個(gè)特殊賬戶的保密管理。
為了保護(hù)ORACLE數(shù)據(jù)庫(kù)服務(wù)器的安全,應(yīng)保證$ORACLE_HOME/bin目錄下的所有內(nèi)容的所有權(quán)為Oracle用戶所有。 為了加強(qiáng)數(shù)據(jù)庫(kù)在網(wǎng)絡(luò)中的安全性,對(duì)于遠(yuǎn)程用戶,應(yīng)使用加密方式通過(guò)密碼來(lái)訪問(wèn)數(shù)據(jù)庫(kù),加強(qiáng)網(wǎng)絡(luò)上的DBA權(quán)限控制,如拒絕遠(yuǎn)程的DBA訪問(wèn)等。
二:數(shù)據(jù)庫(kù)的加密
由于數(shù)據(jù)庫(kù)系統(tǒng)在操作系統(tǒng)下都是以文件形式進(jìn)行管理的,因此入侵者可以直接利用操作系統(tǒng)的漏洞竊取數(shù)據(jù)庫(kù)文件,或者直接利用OS工具來(lái)非法偽造、篡改數(shù)據(jù)庫(kù)文件內(nèi)容。這種隱患一般數(shù)據(jù)庫(kù)用戶難以察覺(jué),分析和堵塞這種漏洞被認(rèn)為是B2級(jí)的安全技術(shù)措施。
數(shù)據(jù)庫(kù)管理系統(tǒng)分層次的安全加密方法主要用來(lái)解決這一問(wèn)題,它可以保證當(dāng)前面的層次已經(jīng)被突破的情況下仍能保障數(shù)據(jù)庫(kù)數(shù)據(jù)的安全,這就要求數(shù)據(jù)庫(kù)管理系統(tǒng)必須有一套強(qiáng)有力的安全機(jī)制。解決這一問(wèn)題的有效方法之一是數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行加密處理,使得即使數(shù)據(jù)不幸泄露或者丟失,也難以被人破譯和閱讀。
我們可以考慮在三個(gè)不同層次實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的加密,這三個(gè)層次分別是OS層、DBMS內(nèi)核層和DBMS外層。
⑴ 在OS層加密。在OS層無(wú)法辨認(rèn)數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)關(guān)系,從而無(wú)法產(chǎn)生合理的密鑰,對(duì)密鑰合理的管理和使用也很難。所以,對(duì)大型數(shù)據(jù)庫(kù)來(lái)說(shuō),在OS層對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行加密很難實(shí)現(xiàn)。
⑵ 在DBMS內(nèi)核層實(shí)現(xiàn)加密。這種加密是指數(shù)據(jù)在物理存取之前完成加/解密工作。這種加密方式的優(yōu)點(diǎn)是加密功能強(qiáng),并且加密功能幾乎不會(huì)影響DBMS的功能,可以實(shí)現(xiàn)加密功能與數(shù)據(jù)庫(kù)管理系統(tǒng)之間的無(wú)縫耦合。其缺點(diǎn)是加密運(yùn)算在服務(wù)器端進(jìn)行,加重了服務(wù)器的負(fù)載,而且DBMS和加密器之間的接口需要DBMS開(kāi)發(fā)商的支持。
⑶ 在DBMS外層實(shí)現(xiàn)加密。比較實(shí)際的做法是將數(shù)據(jù)庫(kù)加密系統(tǒng)做成DBMS的一個(gè)外層工具,根據(jù)加密要求自動(dòng)完成對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的加/解密處理。采用這種加密方式進(jìn)行加密,加/解密運(yùn)算可在客戶端進(jìn)行,它的優(yōu)點(diǎn)是不會(huì)加重?cái)?shù)據(jù)庫(kù)服務(wù)器的負(fù)載并且可以實(shí)現(xiàn)網(wǎng)上傳輸?shù)募用埽秉c(diǎn)是加密功能會(huì)受到一些限制,與數(shù)據(jù)庫(kù)管理系統(tǒng)之間的耦合性稍差。
下面我們進(jìn)一步解釋在DBMS外層實(shí)現(xiàn)加密功能的原理:
三:數(shù)據(jù)保護(hù)
數(shù)據(jù)庫(kù)的數(shù)據(jù)保護(hù)主要是數(shù)據(jù)庫(kù)的備份,當(dāng)計(jì)算機(jī)的軟硬件發(fā)生故障時(shí),利用備份進(jìn)行數(shù)據(jù)庫(kù)恢復(fù),以恢復(fù)破壞的數(shù)據(jù)庫(kù)文件或控制文件或其他文件。
另一種數(shù)據(jù)保護(hù)就是日志,Oracle數(shù)據(jù)庫(kù)提供日志,用以記錄數(shù)據(jù)庫(kù)中所進(jìn)行的各種操作,包括修改、調(diào)整參數(shù)等,在數(shù)據(jù)庫(kù)內(nèi)部建立一個(gè)所有作業(yè)的完整記錄。
再一個(gè)就是控制文件的備份,它一般用于存儲(chǔ)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的狀態(tài),控制文件中的某些狀態(tài)信息在實(shí)例恢復(fù)和介質(zhì)恢復(fù)期間用于引導(dǎo)Oracle數(shù)據(jù)庫(kù)。
日常工作中,數(shù)據(jù)庫(kù)的備份是數(shù)據(jù)庫(kù)管理員必須不斷要進(jìn)行的一項(xiàng)工作,Oracle數(shù)據(jù)庫(kù)的備份主要有以下幾種方式:
1.邏輯備份
邏輯備份就是將某個(gè)數(shù)據(jù)庫(kù)的記錄讀出并將其寫(xiě)入到一個(gè)文件中,這是經(jīng)常使用的一種備份方式。
● export(導(dǎo)出):此命令可以將某個(gè)數(shù)據(jù)文件、某個(gè)用戶的數(shù)據(jù)文件或整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份。
● import(導(dǎo)入):此命令將export建立的轉(zhuǎn)儲(chǔ)文件讀入數(shù)據(jù)庫(kù)系統(tǒng)中,也可按某個(gè)數(shù)據(jù)文件、用戶或整個(gè)數(shù)據(jù)庫(kù)進(jìn)行。
2.物理備份
物理備份也是數(shù)據(jù)庫(kù)管理員經(jīng)常使用的一種備份方式。它可以對(duì)Oracle數(shù)據(jù)庫(kù)的所有內(nèi)容進(jìn)行拷貝,方式可以是多種,有脫機(jī)備份和聯(lián)機(jī)備份,它們各有所長(zhǎng),在實(shí)際中應(yīng)根據(jù)具體情況和所處狀態(tài)進(jìn)行選擇。
● 脫機(jī)備份
其操作是在Oracle數(shù)據(jù)庫(kù)正常關(guān)閉后,對(duì)Oracle數(shù)據(jù)庫(kù)進(jìn)行備份,備份的內(nèi)容包括:所有用戶的數(shù)據(jù)庫(kù)文件和表;所有控制文件;所有的日志文件;數(shù)據(jù)庫(kù)初始化文件等。可采取不同的備份方式,如:利用磁帶轉(zhuǎn)儲(chǔ)命令(tar)將所有文件轉(zhuǎn)儲(chǔ)到磁帶上,或?qū)⑺形募瓨訌?fù)制(copy,rcp)到另一個(gè)備份磁盤(pán)中或另一個(gè)主機(jī)的磁盤(pán)中。
● 聯(lián)機(jī)備份
這種備份方式也是切實(shí)有效的,它可以將聯(lián)機(jī)日志轉(zhuǎn)儲(chǔ)歸擋,在 Oracle數(shù)據(jù)庫(kù)內(nèi)部建立一個(gè)所有進(jìn)程和作業(yè)的詳細(xì)準(zhǔn)確的完全記錄。
物理備份的另一個(gè)好處是可將Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)完整轉(zhuǎn)儲(chǔ), 一旦發(fā)生故障,可以方便及時(shí)地恢復(fù),以減少數(shù)據(jù)庫(kù)管理員重新安裝Oracle帶來(lái)的麻煩。
有了上述幾種備份方法,即使計(jì)算機(jī)發(fā)生故障,如介質(zhì)損壞、軟件系統(tǒng)異常等情況時(shí),也不必驚慌失措,可以通過(guò)備份進(jìn)行不同程度的恢復(fù),使Oracle數(shù)據(jù)庫(kù)系統(tǒng)盡快恢復(fù)到正常狀態(tài)。幾種數(shù)據(jù)庫(kù)損壞情況的恢復(fù)方式有:
1.?dāng)?shù)據(jù)文件損壞
這種情況可以用最近所做的數(shù)據(jù)庫(kù)文件備份進(jìn)行恢復(fù),即將備份中的對(duì)應(yīng)文件恢復(fù)到原來(lái)位置,重新加載數(shù)據(jù)庫(kù)。
2.控制文件損壞
若數(shù)據(jù)庫(kù)系統(tǒng)中的控制文件損壞,則數(shù)據(jù)庫(kù)系統(tǒng)將不能正常運(yùn)行,那么,只須將數(shù)據(jù)庫(kù)系統(tǒng)關(guān)閉,然后從備份中將相應(yīng)的控制文件恢復(fù)到原位置,重新啟動(dòng)數(shù)據(jù)庫(kù)系統(tǒng)。
3.整個(gè)文件系統(tǒng)損壞
在大型的操作系統(tǒng)中,如UNIX,由于磁盤(pán)或磁盤(pán)陣列的介質(zhì)不可靠或損壞是經(jīng)常發(fā)生的,這將導(dǎo)致整個(gè)Oracle數(shù)據(jù)庫(kù)系統(tǒng)崩潰,這種情形只能:
● 將磁盤(pán)或磁盤(pán)陣列重新初始化,去掉失效或不可靠的壞塊。
● 重新創(chuàng)建文件系統(tǒng)。
● 利用備份將數(shù)據(jù)庫(kù)系統(tǒng)完整地恢復(fù)。
● 啟動(dòng)數(shù)據(jù)庫(kù)系統(tǒng)。
數(shù)據(jù)庫(kù)加密系統(tǒng)分成兩個(gè)功能獨(dú)立的主要部件:一個(gè)是加密字典管理程序,另一個(gè)是數(shù)據(jù)庫(kù)加/解密引擎。數(shù)據(jù)庫(kù)加密系統(tǒng)將用戶對(duì)數(shù)據(jù)庫(kù)信息具體的加密要求以及基礎(chǔ)信息保存在加密字典中,通過(guò)調(diào)用數(shù)據(jù)加/解密引擎實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的加密、脫密及數(shù)據(jù)轉(zhuǎn)換等功能。數(shù)據(jù)庫(kù)信息的加/解密處理是在后臺(tái)完成的,對(duì)數(shù)據(jù)庫(kù)服務(wù)器是透明的。
按以上方式實(shí)現(xiàn)的數(shù)據(jù)庫(kù)加密系統(tǒng)具有很多優(yōu)點(diǎn):首先,系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的最終用戶是完全透明的,管理員可以根據(jù)需要進(jìn)行明文和密文的轉(zhuǎn)換工作;其次,加密系統(tǒng)完全獨(dú)立于數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),無(wú)須改動(dòng)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)就能實(shí)現(xiàn)數(shù)據(jù)加密功能;第三,加解密處理在客戶端進(jìn)行,不會(huì)影響數(shù)據(jù)庫(kù)服務(wù)器的效率。
數(shù)據(jù)庫(kù)加/解密引擎是數(shù)據(jù)庫(kù)加密系統(tǒng)的核心部件,它位于應(yīng)用程序與數(shù)據(jù)庫(kù)服務(wù)器之間,負(fù)責(zé)在后臺(tái)完成數(shù)據(jù)庫(kù)信息的加/解密處理,對(duì)應(yīng)用開(kāi)發(fā)人員和操作人員來(lái)說(shuō)是透明的。數(shù)據(jù)加/解密引擎沒(méi)有操作界面,在需要時(shí)由操作系統(tǒng)自動(dòng)加載并駐留在內(nèi)存中,通過(guò)內(nèi)部接口與加密字典管理程序和用戶應(yīng)用程序通訊。數(shù)據(jù)庫(kù)加/解密引擎由三大模塊組成:加/解密處理模塊、用戶接口模塊和數(shù)據(jù)庫(kù)接口模塊。其中,“數(shù)據(jù)庫(kù)接口模塊”的主要工作是接受用戶的操作請(qǐng)求,并傳遞給“加/解密處理模塊”,此外還要代替“加/解密處理模塊”去訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,并完成外部接口參數(shù)與加/脫密引擎內(nèi)部數(shù)據(jù)結(jié)構(gòu)之間的轉(zhuǎn)換。“加/解密處理模塊”完成數(shù)據(jù)庫(kù)加/解密引擎的初始化、內(nèi)部專用命令的處理、加密字典信息的檢索、加密字典緩沖區(qū)的管理、SQL命令的加密變換、查詢結(jié)果的脫密處理以及加脫密算法實(shí)現(xiàn)等功能,另外還包括一些公用的輔助函數(shù)。
相關(guān)文章:
1. 學(xué)好Oracle的六條總結(jié)2. 上海Oracle OpenWorld大會(huì)紀(jì)事-07.193. Oracle數(shù)據(jù)庫(kù)經(jīng)典優(yōu)化之索引原理篇4. 帶你深入了解Oracle數(shù)據(jù)庫(kù)的熱備份原理5. oracle statspack實(shí)例(一)6. Oracle存儲(chǔ)過(guò)程的幾種調(diào)用方式圖文詳解7. Oracle數(shù)據(jù)塊原理深入剖析8. 通過(guò)Backup Exec實(shí)施Oracle來(lái)災(zāi)難恢復(fù)9. Oracle數(shù)據(jù)庫(kù)中分區(qū)表的操作方法詳解10. 破解Oracle中國(guó)高層頻繁變動(dòng)之謎
