武警湖南總隊(duì)醫(yī)院信息科 李春林 周根鴻
目的:探討利用數(shù)據(jù)庫日志文件進(jìn)行安全預(yù)警,保護(hù)數(shù)據(jù)庫安全。方法:定期巡視數(shù)據(jù)庫日志文件,發(fā)現(xiàn)異常時(shí)進(jìn)行分析,使用數(shù)據(jù)日志分析工作進(jìn)行分析。結(jié)果:日志異常必定反映出數(shù)據(jù)產(chǎn)生異常。結(jié)論:加強(qiáng)對數(shù)據(jù)庫日志文件的定期巡查和分析,確保數(shù)據(jù)庫的安全運(yùn)行。
我院醫(yī)院信息系統(tǒng)采用ORACLE數(shù)據(jù)庫為基礎(chǔ)數(shù)據(jù)庫,版本為Oracle 11g,運(yùn)行方式為歸檔模式,日志文件大小為12M,數(shù)據(jù)規(guī)模為120G,自2015年升級以來連續(xù)正常運(yùn)轉(zhuǎn)。
在例行的數(shù)據(jù)庫巡查過程中,發(fā)現(xiàn)歸檔日志異常增加。即由過去的40min左右產(chǎn)生一個(gè)歸檔日志,變成了每10min左右連續(xù)產(chǎn)生2個(gè)甚至3個(gè)歸檔日志。有科室反映前端統(tǒng)計(jì)查詢程序有比平時(shí)慢的現(xiàn)象。而且這種頻繁的產(chǎn)生歸檔日志不是在數(shù)據(jù)庫生產(chǎn)高峰時(shí)段。如果不及時(shí)排除故障,將會造成磁盤空間的過快消耗,關(guān)鍵是要找到數(shù)據(jù)庫日志異常過快增加的根本原因,數(shù)據(jù)庫安全才有保障。正常和異常的日志分別如圖1、圖2所示:
圖1 數(shù)據(jù)庫正常時(shí)日志生成情況Fig.1 Log generation when the database is normal
圖2 數(shù)據(jù)庫異常時(shí)日志增加情況Fig.2 Log increase when the database is abnormal
日志文件是對整個(gè)數(shù)據(jù)庫的讀寫進(jìn)行忠實(shí)記錄的文件,主要包括對以下三類語句記錄:DML(Data Manipulation Language)語句如:SELECT、UPDATE、INSERT、DELETE;DDL(Grant、Deny、Revoke)語句如:CREATE、ALTER、DROP等; DCL(Data Control Language)語句如:Grant、Deny、Revoke等語句[1]。而歸檔日志文件是在在線重做日志文件達(dá)到規(guī)定容量后自動進(jìn)行歸檔而生成的,歸檔日志的異常增加一定是有異常的讀寫。我們迅速組織科室工程師們分析排查。經(jīng)檢查,未發(fā)現(xiàn)硬件方面故障。平時(shí)的數(shù)據(jù)庫日志都是有規(guī)律的增長,只有在每天的數(shù)據(jù)庫生產(chǎn)高峰時(shí)段9點(diǎn)至11點(diǎn)之間日志才有稍微頻繁增長,根據(jù)目前的不分時(shí)段的異常增長,表明某一事件在反復(fù)發(fā)生,而且是循環(huán)發(fā)生。同時(shí)啟動日志分析。使用LogMiner工具既可以用來分析在線日志,也可以用來分析離線日志文件,既可以分析本身自己數(shù)據(jù)庫的重作日志文件,也可以用來分析其他數(shù)據(jù)庫的重作日志文件[2,3]。通過日志分析,我們發(fā)現(xiàn)有大量的SELECT語句查詢。經(jīng)分析,與近期所上項(xiàng)目體檢系統(tǒng)有關(guān)系,該項(xiàng)目工程師在編程中為了統(tǒng)計(jì)某一時(shí)間段未檢項(xiàng)目有關(guān)結(jié)果信息,通過定時(shí)器使用了定時(shí)查詢。我們知道,日志一般指的是聯(lián)機(jī)重做日志文件(Redlog)。主要功能是恢復(fù)異常關(guān)閉的數(shù)據(jù)庫和保證數(shù)據(jù)的完整性、一致性。還有可恢復(fù)近期丟失的數(shù)據(jù)(這要看重做日志文件的容量)。重做文件的原理是:把DML(Insert、Update、Delete)語句所處理的前后記錄都寫入重做日志文件中。當(dāng)數(shù)據(jù)庫的數(shù)據(jù)出故障時(shí)利用重做日志文件中的數(shù)據(jù)重新運(yùn)行一次之前做過的業(yè)務(wù),以此來恢復(fù)數(shù)據(jù)庫中除了故障的數(shù)據(jù)。
重做日志文件至少要有兩組,一般是三組。寫滿第一組寫第二組,寫滿第二組寫第三組,寫滿第三組返回覆蓋寫第一組,以此類推。日志文件如果不定期清理,將會消耗大量的磁盤空間,我們規(guī)定一般一個(gè)月定時(shí)清理過時(shí)日志。
未優(yōu)化時(shí)語句是這梓的:
以上語句執(zhí)行頻率為每5分鐘執(zhí)行一次。因此產(chǎn)生大量的查詢。
對以上條件進(jìn)行優(yōu)化,加大過濾條件,同時(shí)減少執(zhí)行頻率為每30分鐘執(zhí)行一次。優(yōu)化后(條件增加是否檢查完成標(biāo)志,減少了數(shù)量查詢量)。
優(yōu)化后經(jīng)觀察,日志生成情況正常。
隨著信息系統(tǒng)的運(yùn)行時(shí)間增加,產(chǎn)生的數(shù)據(jù)的越來越多,大數(shù)據(jù)挖掘技術(shù)的日益成熟,數(shù)據(jù)的重要地位不言而喻,數(shù)據(jù)的安全性越來越重要。平時(shí)要重視數(shù)據(jù)庫的安全檢查,隨時(shí)關(guān)注日志的變化情況,日志是反映數(shù)據(jù)庫是否正常運(yùn)轉(zhuǎn)的晴雨表,也是數(shù)據(jù)庫損壞時(shí)恢復(fù)的要素[4]。隨著云、大、物、移、智技術(shù)在醫(yī)院信息化建設(shè)中的普遍運(yùn)用,信息系統(tǒng)的建設(shè)更加復(fù)雜和聯(lián)系緊密,與新系統(tǒng)之間的協(xié)同配合尤其重要,新上系統(tǒng)期間一定要進(jìn)行測試,未經(jīng)測試正常不能上線,以免造成不可挽回的損失。
引用
[1] 劉志敏,劉微.ORACLE數(shù)據(jù)庫日志挖掘工具的利用[J].中國醫(yī)療設(shè)備,2008,23(1):29-30+20.
[2] 李春林,周根鴻,張文體.重視日志審計(jì)確保數(shù)據(jù)安全[J].醫(yī)學(xué)信息,2007,20(10):1761-1762.
[3] 范曉丹,鐘俊華,林雪金,等.事務(wù)日志及其解析在醫(yī)院信息安全中的應(yīng)用[J].醫(yī)療衛(wèi)生裝備,2017,38(6):77-78+82.
[4] 楊金平.基于服務(wù)器群集與DATAGUARD的醫(yī)院HIS數(shù)據(jù)庫維護(hù)方案[J].中國數(shù)據(jù)醫(yī)學(xué),2012,7(4):86-87.