鈕小勇,韓桂明
1.江蘇省楚州職業教育中心校,江蘇淮安 223200
2.江蘇鹽城市信息工程技術學校,江蘇鹽城 223200
訪問控制機制在數據庫中的應用研究
鈕小勇1,韓桂明2
1.江蘇省楚州職業教育中心校,江蘇淮安 223200
2.江蘇鹽城市信息工程技術學校,江蘇鹽城 223200
本文在明確信息安全重要性的基礎上,闡述了訪問控制機制的概念,分析了訪問控制機制在數據庫中的工作原理,并詳細研究了訪問控制機制在數據庫中的應用。
數據庫;訪問控制機制;數據安全
隨著信息技術及網絡技術的發展,數據庫的應用越來越廣。如何保證數據庫的安全已經成為迫切需要解決的問題。通過有效的訪問控制機制保證數據庫的安全性是一個非常有效的手段,本文重點研究訪問控制機制在數據庫中的應用。
訪問控制機制是數據庫系統安全性得到有效保障的重要機制,其本質就是按照系統權限,進行有效驗證,實現授權用戶才能進行相關的操作,而非授權用戶視為非法用戶,被禁止一切系統操作。訪問控制機制的任務主要包括:鑒定對數據庫提出操作請求的用戶身份的合法性;明確用戶的操作權限及規則;授權合法用戶對應的訪問機制等。
可見,通過訪問控制機制能有效保證數據的完整性及保密性。
訪問控制機制的實現主要是通過解析器模塊加以實現的。解析器主要負責分析用戶提出的數據庫訪問請求語句,根據該SQL數據庫訪問語句,提取出其中涉及到的數據表名、字段名以及查詢過濾條件等,然后生成一棵分析樹。最后,根據生成分析樹,判定該用戶是否有對該數據庫相關數據操作的權限。
解決器模塊的工作流程如下描述:首先進行參數初始化,并針對用戶訪問請求分配對應的子線程;其次在cache中搜索該訪問請求是否存在;接著根據訪問機制對請求語句進行分析;最后根據分析樹去執行請求并返回結果。其中,最關鍵點在于對請求語句進行分析,這主要借助于parse(thd)函數加以完成,也就是對SQL語句進行詞法及語法的分析。
此外,訪問控制機制也定義了檢查接口的相關語句,比如:
bool mac_check_table_SELECT ( ) ;
bool mac_check_table_INSERT ( ) ;
bool mac_check_table_UPDATE ( ) ;
通過該3條語句,就能夠對數據庫常用的3個SQL操作語句(select,insert,update)進行訪問控制的檢測。因為3個函數都是返回bool型的數據,所以根據返回結果,如果是true,則表示末授權;反之,則表示授權。

圖1 訪問控制模塊的組成示意圖
訪問控制模塊主要由3個子模塊構成,涉及到:主客體信息的管理、主客體信息的維護以及客體的安全級別,他們之間的關系如圖1所示。
針對一條SQL語句,通過訪問控制模塊進行檢測時,首先是獲取SQL語句主體的安全級別;其次是獲取SQL語句客體的安全級別;最后是比較兩者的安全級別。若符合訪問控制模塊規定的安全規則,則可以繼續執行;反之,則結束操作,并返回相關信息。
當運行訪問控制機制時,首先要啟動數據庫服務器,并將訪問控制信息導入相關程序,這可以通過在主函數Win_main()中加入sec_init()函數實現,該函數又調用sec_reload()實現數據庫表的導入,并將相關表存儲至相應結構中,而哈希表中則保存了結構所對應的存儲地址。關鍵代碼如下描述:
哈希表的創建
獲取數據表前的一些初始化;
// 哈希表sec_subjec的初始化
(void ) hash_init ( & sec_subject,system_charset_info, 0, 0, 0, (hash_get_key ) get_subject_table, 0, 0 ) ;
// 通過while語句從數據表中循環取出相關記錄
While ( ! ( read_record_info.read_record ( & read_record_info ) ) ) {
Subject_Type* user = ( Subject_Type * ) alloc_root ( & mem,sizeof (Subject_Type ) ) ;
// 將相關記錄信息存儲至Subject_Type結構中
User -> user = get_field (&mem,table -> field[0] ) ;
// 將SQL語句主體結構的地址保存在Hash表
If ( my_hash_insert ( & sec_subject, ( uchar* )user ) )
{ goto end_unlock ; // hash表插入失敗,并返回相關信息 }
end_read_record ( & read_record_info ) ; // 數據庫表讀取后,進行一些后期清理
至此,數據庫服務器啟動完畢,完成相關訪問控制信息的初始化。此外,需要借助函數sec_reload ( )來對hash表進行重載,也允許數據庫管理員修改訪問控制相關的表,這樣才能保證訪問控制機制的一致性。
針對數據庫系統第三級安全的核心內容,訪問控制機制的應用起到非常重要的作用。然而,大部分的數據庫系統沒有實現很好的靈活訪問控制機制。但隨著數據庫技術以及信息技術的研究深入,訪問控制機制將越來越受到人們的重視,并會不斷得到有效的推廣應用,這也將為數據庫系統的安全性保障提供巨大作用。
[1]胡啟韜,吳碧偉,姚培.強制訪問控制在提高MySQL安全性上的應用[J].計算機與現代化,2009,9:160-166.
[2]吳飛林,王曉燕,朗波.基于MySQL的可定制強制訪問控制的研究與實現[J].2007,24(11):117-120.
TP392
A
1674-6708(2010)30-0188-01