金憲珊,李佳俊
(杭州中醫院 計算機網絡中心,江蘇 杭州 310007)
基于DBMS_FGA的數據安全控制系統的設計
金憲珊,李佳俊
(杭州中醫院 計算機網絡中心,江蘇 杭州 310007)
醫院信息系統(HIS)存儲著處方信息、病人資料等敏感重要的數據,近年來醫院數據被非法竊取的事情經常發生。我們利用Oracle數據庫提供的DBMS_FGA包,部署細粒度審計系統,監控醫院敏感數據;并用handler_module存儲過程設計了數據安全控制系統,防止敏感數據被盜。
HIS;Oracle數據庫;網絡安全
醫院信息系統(HIS)有著敏感重要的數據,如處方信息、病人資料等。由于醫院數據非常重要,數據的安全性是HIS系統管理的重要環節。數據的安全是指只有合法的用戶才可讀取。近年來,醫院數據被非法讀取的事情經常發生。隨著計算機技術的發展,醫院也采取了很多安全控制方法,但很多醫院缺少數據審計系統,醫院數據是否做到安全也不確定。
Oracle9i Database 推出了一種稱為細粒度審計 (FGA) 的新特性,該特性允許將單個的 SELECT 語句聯同用戶提交的確切語句一起進行審計。Oracle提供了一個DBMS_FGA包,可以在線對單個的表進行審計并查詢審計資料。除了簡單地跟蹤語句之外,FGA 還通過在每次用戶選擇特定的數據集時執行一段代碼,提供了一種方法來模擬用于 SELECT 語句的觸發器。
下面將就這個包的使用做簡單的介紹,這個包共有四個過程:



HIS系統是龐大的信息系統,有著大量數據表,如果對大量表、表中每個字段、每次用戶從表中選擇時都記錄審計線索,則線索的大小將增長,導致空間和管理問題,因此只能選擇比較重要、敏感的表和字段,在滿足特定條件時進行審計,而不是每次都進行審計。這種類型的條件稱為審計條件,并作為一項參數傳遞到 dbms_fga.add_policy 過程。例如如果要對藥品使用情況表進行審計,可以定義如下:

其中'TCMHIS'是用戶名稱,'MZ_ YPXINXI '是對象名稱,'CHK_ MZ_ YPXINXI '是 策略名 稱,'YPXH,YSGH'是要審計的字段,審計字段要選擇關鍵字段;'SYRQ between sysdate -9 and sysdate -1'是審計條件,審計條件的選擇既要滿足實際需要又要使線索盡量小。
審計系統可以監控醫院敏感數據,我們可以根據審計日志分析系統安全狀況。如果醫院內部用戶有非法操作,我們可以進一步規范權限,對利用職務之便進行非法操作的行為,可以將審計信息反饋管理部門。如果有外來人員進行非法操作,說明前臺安全措施有漏洞,這也是驗證系統安全性的好方法。
如果審計中發現非法操作,可以采取進一步措施,對重要數據訪問進行控制。
FGA 的功能不只是記錄審計線索中的事件;FGA 還可以通過handler_module任意執行過程。過程可以執行一項操作,比如當用戶從表中選擇特定行時向審計者發送電子郵件警告,或者可以寫到不同的審計線索中。這種存儲代碼段可以是獨立的過程或者是程序包中的過程,稱為策略的處理器模塊。實際上由于安全性原因,它不必與基表本身處于同一模式中,特意將它放置在不同的模式中。我們在審計基礎上增加handler_module過程控制非法SQL 語句訪問數據,控制非法機器語句訪問數據:

同時需要增加表manager_auditip:Ip地址表;manager_auditonoff:策略控制表;manager_auditconfig:配置表(存放合法語句)和包dbms_ check。表和包都要進行加密。
程序邏輯判斷說明(如圖1):

圖1 控制系統程序邏輯判斷圖
(1)manager_auditip中是否有相應的IP地址記錄,如果有,則通過,如沒有,步驟2。
(2)manager_auditonoff中是否有該策略的設置,如果status=0 關閉,則通過,如果status=1 開啟,步驟3。
(3)manager_auditconfig中是否有status=1的匹配記錄,如果有,則通過,如果無,則阻止。
上述設計實現日常系統正常運行和控制非法操作的靈活管理。manager_auditip表允許醫院中特權用戶進行特權操作,但特權操作只能在指定機器上操作,其對敏感數據的操作也接受審計。必要時配置監控等設施以便外部監督。manager_auditconfig收集HIS系統正常操作語句,語句有可能很長,我們可以按一定規律摘取部分語句,當然對規律的保密很重要。由于HIS系統系統開發人員眾多、開發周期長,在部署審計控制系統時不能收集全部信息,而審計控制不能影響正常運作,為保證信息系統的正常運行,設計manager_auditonoff 表,通過status開關審計的開啟,必要時關閉審計。
為了提高安全性,不能對用戶 TCMHIS(將要被審計的表的所有者)授予dbms_fga執行權限;而應該將權限授予一個安全的用戶(比如 SYSTEM),此用戶應該執行添加策略的過程。信息系統開發和維護過程中知道用戶 TCMHIS(將要被審計的表的所有者)密碼的人員很多,而實際工作過程中也很難管理這些人員。事實上HIS系統敏感重要數據經常發生被非法竊取的主要原因也在于HIS用戶密碼泄露。除了HIS用戶也不能對其他用戶授予執行權限,這就要檢查數據庫dbms_fga 對象權限,進行權限管理。
首先查看dbms_fga該對象的權限賦予了誰,我們檢查時顯示sys.dbms_fga execut權限給予了role execute catalog_role。再查看execute_catalog_role角色給了誰,結果顯示exp_full_database,imp_full_database,DBA,SYS。這說明有exp_full_database,imp_full_database的就有dbms_fga的執行權限。還要檢查EXECUTE_CATALOG_ROLE 有什么系統權限和對象權限。擁有EXP_FULL_DATABASE角色的用戶很多,必須把dbms_fga的execute權限從execute_catalog_role中去除,然后單獨把dbms_fga的執行權限賦給SYSTEM用戶,加強操作系統和數據庫DBA、SYS、SYSMAN、SYSTEM用戶和密碼管理。這樣其他用戶就無法操作disable_policy,真正審計和控制重要敏感信息了。
信息系統的安全防范有著很多途徑,我們也采取了各種措施,但總做不到萬無一失。通過后臺的審計系統可以驗證系統是否安全,如果發現非法現象,可以進一步部署控制系統,在對ORACLE 用戶進行有效權限管理的基礎上,該控制系統是比較有效的。
[1] 劉逸敏.關系數據庫中基于安全策略的數據訪問控制模型[J].中國數字醫學,2009,4(3):39-43.
[2] 蔡立軍.Oracle 9i關系數據庫實用教程[M].北京:中國水利水電出版社,2004.
[3] 劉艷輝,徐香.醫院信息系統的數據安全策略[J].醫學信息,2006,19(5):774-776.
[4] 鄭阿奇,丁有和,周怡君,等.Oracle實用教程[M].北京:電子工業出版社,2006.
[5] 趙元杰.Oracle 10g系統管理員簡明教程[M].北京:人民郵電出版社,2006.
[6] Carol McCullough-Dieter. Oracle8 實用大全[M].北京:中國水利水電出版社,1998.
Design and Realiziation of Fine Grained Audit and Data Security Control System Based on DBMS_FGA
JIN Xian-shan,LI Jia-jun
(Computer Network Center,Hangzhou Traditional Chinese Medicine Hospital, Hangzhou Zhejiang 310007,China)
The hospital information system have sensitive data such as prescription information,patient data.We designed fine grained audit system based on DBMS_FGA package and safety control system based on handler_module to protect datas.
HIS;Oracle database;network security
TP309.2
A
10.3969/j.issn.1674-1633.2010.03.017
1674-1633(2010)03-0056-03
2009-08-04
作者郵箱:hzjxs@126.com