近幾年,醫院信息系統應用越來越廣泛繁雜,醫院各種藥品處方數據、門診住院收費數據以及記錄患者診療過程的電子病歷都在醫院信息系統中得到統一存儲,醫院信息系統的信息安全也逐漸引起醫院的高度重視[1]。僅靠規章制度已無法完全禁止這些敏感數據不被非法統計、泄漏和修改,因此需要通過相應的技術手段為醫院制度落實提供原始證據,保存所有的查詢、更改記錄,從而確保準確解決實際問題[2]。
醫療工作對醫院信息系統的依托性越來越強,導致非法入侵醫院信息系統的手段錯綜復雜。原有的簡單用戶名、使用權限以及日志生成等管理已經無法滿足醫院內審計控制的需求,出現了以下問題:一個用戶名多人使用,長期閑置用戶名被使用,系統管理員分配的權限過大,黑客非法接入醫院局域網絡[3]。
造成這些安全問題的原因主要為:首先,醫院信息系統對于人員職責分配不明確,以及監管失控等[4];其次,由于醫院信息系統是一個龐雜的系統,安全漏洞屢見不鮮,黑客攻擊層出不窮;再次,個別醫院內部工作人員受到統方等利益驅使[5],在不受防火墻、入侵檢測等網絡安全設備影響的情況下在系統內部進行統方,給數據庫的安全帶來極大的威脅。
目前筆者所在醫院使用的數據庫管理系統已經提供了記錄和監視數據活動的功能,但存在很多漏洞。比如,依靠數據庫日志文件的審計方法,在開啟數據庫日志文件的功能時會影響數據庫自身的性能,并且數據庫日志文件也占據大量的存儲空間。日志文件顯示的是操作人員對數據庫的修改、插入和刪除等操作記錄,并沒有顯示對數據庫數據的查詢或瀏覽記錄[6],因此無法禁止不法人員查詢和竊取數據庫中重要的、保密的數據。更嚴重的是,數據庫日志文件有被插入、刪除、修改的風險,無法體現審計的有效性與公正性。再比如,當審計和監視的事件數量太大時,使用數據庫的安全監視功能會影響服務器進程管理,從而導致跟蹤文件或跟蹤表變得很大,尤其在進行長時間監視的情況下,直接影響醫療信息系統的性能和效率。綜上分析,應用數據庫審計系統勢在必行。
數據庫審計系統能夠對醫院信息系統網絡中的各種數據庫進行全方位的安全審計,能保護醫院信息系統中的數據庫和服務器,具體包括以下幾方面。
審計系統記錄了所有對保護數據的訪問信息,其中包括文件操作、數據庫執行SQL語句或存儲過程等。系統審計所有用戶對關鍵數據的訪問行為,防止外部黑客入侵訪問和內部人員非法獲取統方等敏感信息。
審計系統統計和查詢所有被保護數據的變更記錄,包括核心業務數據庫表結構、關鍵數據文件的修改操作等,防止外部和內部人員非法篡改重要的醫療數據。
審計系統統計和查詢所有用戶的登錄成功和失敗嘗試記錄,記錄所有用戶的訪問操作和用戶配置信息及其權限變更情況,可用于事故和故障的追蹤和診斷。
審計系統記錄和發現用戶違規訪問,支持設定用戶黑白名單,支持定義復雜的合規規則,支持告警和阻斷。
應用數據庫審計系統能夠對網絡訪問數據庫的操作行為進行細粒度分析。該系統提供實時監控、違規響應、歷史行為回溯等操作分析功能,是滿足數據庫風險管理和內控要求、提升內部安全監管和保障數據庫安全的有效手段。
數據庫審計系統能夠深入細致地審計數據庫的各種操作及其內容,能夠監控和審計用戶通過各種方式訪問數據庫的行為。系統審計的行為包括DDL、DML、DCL及其他操作,審計的內容可以細化到庫、表、記錄、用戶、存儲過程、函數、調用參數等[7](表1)。

表1 數據庫審計系統審計的操作行為
系統不僅能夠審計數據庫操作請求,還能審計操作的返回結果,包括成功或者失敗。如果失敗,還能夠審計到返回的錯誤碼。
數據庫審計系統對訪問數據庫、FTP操作進行實時、詳細的監控和審計,包括各種登錄命令、數據操作指令、網絡操作指令,并審計操作結果,支持過程回放,真實地展現用戶的操作。基于會話的行為分析技術,管理員可以對當前網絡中所有訪問者進行基于時間的審查,了解每個訪問者任意一段時間內先后進行了什么操作,并支持訪問過程回放。數據庫審計系統真正實現了對“誰、什么時間段內、在什么機器上、對什么(數據)、進行了哪些操作、結果如何”的全程審計[8]。
數據庫審計系統在識別出安全事故后,能夠自動或者用戶手動地對威脅進行響應,采取安全對策,從而形成安全審計的閉環。數據庫審計系統能夠對業務網中所有IP的流量進行分析,因而能夠更為精確地定位安全威脅,并對符合策略的告警事件進行阻斷,實時自動阻止可疑行為[9]。數據庫審計系統可通過與網絡設備或安全設備共同協作來關閉威脅通信,以阻止正在進行的攻擊。數據庫審計系統可以與第三方網絡設備、安全設備進行聯動。通過數據庫審計系統與其他數據庫審計系統安全管理產品的綜合使用,可以實現完整的從安全風險監控、分析到決策的安全管理流程的閉環。
數據庫審計系統具有報表分析功能。系統的報表分析引擎從多種角度、多種維度對數據進行分析,提供實時分析、歷史分析等分析手段,對比統計的結果和分析數據的發展趨勢,將結果以圖形方式(柱圖、餅圖、曲線圖等)顯示、打印,報告可用PDF、DOC或XLS等格式存檔。
通過端口鏡像或者TAP方式將數據庫審計系統連接到網絡中。將審計系統設備放置在醫療相關服務器集中的交換機上,對交換機的端口做鏡像,再連接到審計系統上。系統管理員通過瀏覽器可以從院區任何位置登錄數據庫審計系統進行各項操作[10](圖1)。

圖1 數據庫審計系統與核心交換機、服務器等連接網絡拓撲圖
數據庫審計系統設備在醫院主服務器與客戶端之間,對所有經過數據庫服務器的數據進行審計分析,具體方法如下。
4.2.1 數據抓取
查找所有經過數據庫審計系統的物理網卡列表,通過本系統IP地址定位當前正在使用的計算機網卡,真正抓取局域網中流經計算機網卡的數據幀信息。
4.2.2 數據過濾
數據在應用層將通過3方面進行數據過濾:接受TCP協議的數據包的協議過濾,接受訪問目的地址為數據庫服務器IP地址的數據包,接受Oracle數據庫目的端口過濾并按照審計需求留存需要的數據、過濾掉其余的數據(圖2)。
4.2.3 數據分析
根據TCP協議的數據結構對留存的數據進行分析處理,將所有數據設置為可讀數據。在局域網中抓取到的數據庫數據幀信息在網絡傳輸過程中保持不變,對這些數據庫數據幀信息進行分析得到相關局域網絡的信息。數據庫審計系統的數據分析在傳輸層與TCP協議一致,按照TCP/IP協議的數據結構對抓取到的數據庫數據幀數據進行解析以獲得網絡層和傳輸層的相關信息。應用層的信息經過傳輸層和網絡層的封裝后,對TCP/IP協議的具體數據結構進行分析。
4.2.4 日志生成
將符合條件的數據生成日志存儲在日志文件中,對所有的留存數據按照權限審計、語句審計、用戶審計3種策略分類并進行統計分析(圖3)。

圖2 數據庫審計系統——留存數據顯示

圖3 數據庫審計系統——日志生成
通過數據庫審計系統自動報警或系統管理員進入系統查看,就可以對醫院信息系統數據庫的操作行為進行審計判斷,從而實現對統方操作及惡意刪除、修改、破壞數據庫的行為進行實時準確判斷[11],并記錄統方行為及惡意操作人所使用計算機的IP地址、發生時間以及操作人所使用的用戶名等,保證了醫院信息系統數據的安全性[12](圖4)。

圖4 數據庫審計系統——記錄事件結果
在審計系統應用過程中,筆者發現數據庫審計系統存在一個漏洞,即系統在獲取連接數據庫客戶端的IP地址及MAC地址時,比對在用戶注冊表中不存在的地址后不能以會話的方式自動斷開,醫院信息系統的安全仍然存在隱患。對此,筆者重新調整了系統并在系統中建立了系統自動生成的日志表和存放不法登錄的黑客的黑名單表,使以上不安全因素得以解決[13]。
在系統應用過程中,借助審計系統的多端口偵聽(Multi-Port Detection)技術,還可以同時偵聽多個不同網段的網絡通訊,對在物理或邏輯上隔離的多個網絡進行了審計(圖5)。

圖5 數據庫審計系統連接多個不同網段的網絡拓撲圖
本文對醫院信息系統數據庫的安全狀況進行分析的同時,提出了應用數據庫審計系統的必要性。從審計系統的功能及應用效果來看,實現了對數據庫進行準確、高效、全面的審計,有效地解決了醫院信息系統在使用過程中的安全問題,而且審計系統自身的可用性沒有對整個醫院信息系統的可用性造成任何影響。