李敏
摘 要: 針對傳統的分布式數據庫系統內訪問控制方案存在滯后的弊端,數據傳遞通道存在潛在安全隱患的問題,研究并實現了分布式數據庫安全代理系統。該系統分別封裝了代理客戶端以及代理服務端,為其他模塊進行調用提供基礎,通過組件技術實現代理客戶端以及代理服務端的設計,給出設計模型內各模塊的運行原理和功能。通過代理客戶端中的組件創建同應用程序的接口以及同網絡通信客戶端的接口實現訪問數據庫的功能,向代理服務端反饋處理后的訪問結果。給出網絡通信平臺設計過程以及代理客戶端、服務端設計過程。經測試表明,分布式數據庫安全代理系統可實現用戶和服務器間的安全通信,可有效實現身份認證,訪問性能高,可靠性高。
關鍵詞: 分布式數據庫; 安全代理; 安全性測試; 訪問控制
中圖分類號: TN915.08?34; TP392 文獻標識碼: A 文章編號: 1004?373X(2017)15?0076?04
Abstract: The access control scheme of the traditional distributed database systems has the lag characteristic, and the data transmission channel has potential security risks, therefore, a distributed database security agent system is researched and implemented. The designed security agent system is encapsulated with the proxy client and proxy server respectively, provides the basis for other modules calling. The design of the proxy client and proxy server was implemented with component technology. The operation principle and function of each module in the design model are given. The interfaces of the same application program and same network communication client are created by means of the component in the proxy client to realize the function of database access, and feed the processed access result back to the agency service. The design process of the network communication platform and design process of the proxy client and server are given. The test results show that the distributed database security agent system can realize the secure communication between user and server, identify the authentication effectively, and has high access performance and high reliability.
Keywords: distributed database; security agent; safety test; access control
0 引 言
隨著計算機和網絡技術的快速發展,信息系統的應用價值逐漸提升。信息系統的安全問題日益引起人們的關注。數據庫是信息的載體,其安全性決定了總體信息系統的安全性[1]。因此,基于計算機網絡和開發環境的分布式數據庫系統的安全性越來越重要。傳統的分布式數據庫系統內訪問控制方案存在滯后的弊端,并且數據傳遞通道存在潛在的安全隱患[2]。因此,確保分布式數據庫用戶身份的合法性和傳遞通道的安全性具有重要應用意義。
本文研究并實現了分布式數據庫安全代理系統,給出系統總體結構并對系統進行詳細分析。介紹了網絡通信平臺和代理客戶端、服務端的設計過程。經實驗驗證,所研究的分布式數據庫安全代理系統能夠有效實現安全訪問和通信,整體性能高。
1 分布式數據庫安全代理的研究與實現
1.1 安全代理的系統模型
本文設計的分布式數據庫安全代理系統如圖1所示。該系統采用數據庫安全代理接管應用程序的訪問申請,替換應用程序訪問數據服務器,并且將申請應答反饋到應用程序中。該代理模型包含傳遞訪問申請以及接收申請應答的接口[3]。系統分別封裝了代理客戶端以及代理服務端,為其他模塊的調用提供基礎,并通過組件技術設計代理客戶端以及代理服務端。
代理客戶端中的組件可創建同應用程序的接口以及同網絡通信客戶端的接口。其中,應用程序接口能夠采集應用程序提出的申請,并將申請反饋到網絡通信客戶端;網絡通信客戶端接口能夠采集客戶端反饋的申請,同時向應用程序反饋該申請[4]。代理服務端中的組件可創建同數據庫服務器以及網絡通信服務端的接口,分別實現訪問數據庫的功能,并向代理服務端反饋處理后的訪問結果。
圖1模型內各模塊的運行原理和功能如下所述:
(1) 代理客戶端組件基于同應用程序的接口,得到應用程序的訪問申請,同時采用同通信模塊的接口向網絡通信客戶端模塊反饋相應的申請,最后采集申請應答的反饋結果。如果申請應答成功反饋,則代理客戶端組件采用同通信客戶端的接口采集應答反饋的消息,最終采用同應用程序的接口向應用程序反饋獲取的應答消息。
(2) 網絡通信客戶端模塊采集代理客戶端反饋的訪問申請,通過加密通道向網絡通信服務端反饋訪問申請,并采集申請應答的反饋結果。如果申請應答反饋成功,則網絡通信客戶端模塊向代理客戶端組件反饋申請應答消息。網絡通信客戶端模塊同網絡通信服務端模塊實現數據的交互前,采用客戶端身份認證過程確保客戶端身份的合法性。
(3) 網絡通信服務端模塊采集網絡通信客戶端反饋的訪問申請,并向代理服務端反饋該申請,此時代理服務端會反饋申請應答[5],該模塊通過SSL加密通道向網絡通信客戶端傳輸申請應答消息。
(4) 代理服務端組件采集網絡通信服務端傳遞的訪問申請,同時訪問數據庫服務器,并向網絡通信服務端反饋數據庫服務器返回的結果。總體分布式數據庫代理系統對數據庫的訪問主要通過代理服務端模塊完成。
圖2為分布式數據庫安全代理的系統模型中應用程序同數據庫安全代理各模塊間實施調用和傳輸數據的順序圖。
圖2中實線箭頭用于描述真實的處理,虛線箭頭用于描述前一步的實線箭頭完成的功能,組件調用的詳細過程為:過程①應用程序調用代理客戶端組件的接口,基于該接口同網絡通信客戶端反饋的申請,實現過程②的功能。網絡通信客戶端模塊采集到申請后,向網絡通信服務端反饋申請,也就是過程③。過程④時,網絡通信服務端采用代理服務端組件的接口訪問數據庫完成過程⑤和過程⑥的功能,也就是訪問數據庫和返回結果集。此時,過程⑦中的網絡通信服務端模塊采用代理服務端組件接口操作結果集,在過程⑧中向網絡通信客戶端反饋操作后的結果集。過程⑨中網絡通信客戶端通過代理客戶端組件的接口向應用程序反饋結果集,最終實現過程⑩的功能。
1.2 網絡通信平臺設計與實現
網絡通信平臺可對通信雙方的身份進行認證,并對傳輸數據實施加密,是實現分布式數據庫安全代理的關鍵,該平臺通過基于Socket的通信完成通信。網絡通信平臺包括網絡通信客戶端和網絡通信服務端。網絡通信平臺同應用程序實現數據交流前,網絡通信客戶端以及網絡通信服務端先塑造TCP/IP連接,再采用SSL握手消息的操作,對通信雙方身份進行認證以及協商運算,確保傳輸通道的安全性。最終通過數據傳輸通道完成應用程序和數據庫服務器間的轉發訪問申請以及申請應答[6]。
代理客戶端轉發的數據申請反饋給網絡通信客戶端后,網絡客戶端會采用記錄層模塊對申請實施匯總加密處理,再向網絡通信服務端反饋處理后的申請,同時采集申請結果的反饋結果。若反饋成功,則向應用程序反饋結果。網絡通信服務端對網絡通信客戶端反饋的數據申請進行操作,采用記錄層模塊對申請實施解密處理,同時向代理服務端反饋處理結果。此時,采用記錄層對代理服務端訪問數據庫服務器后返回的結果實施匯總加密處理,最終向網絡通信客戶端反饋處理結果。
網絡通信平臺的功能結構用圖3中的陰影部分描述,其中的證書庫位于應用程序以及數據庫服務器所處的計算機中[7]。網絡通信平臺中的數據在傳遞前都需要進行SSL加密,SSL加密采用握手層模塊的身份認證以及記錄層模塊完成數據的加密和解密。
1.3 代理客戶端和服務端的設計與實現
本節提出分布式數據庫安全代理系統模型,同時分析了安全代理中的一個組成,即網絡通信平臺的設計,詳細介紹了分布式數據庫安全代理客戶/代理服務端的設計過程。
1.3.1 代理客戶端功能結構
代理客戶端主要由COM組件技術完成。COM組件能夠為用戶提供應用程序與網絡通信客戶端信息交換的接口。在應用代理客戶端的過程中,應用程序首先向代理客戶端發出查看分布式數據庫的申請[8],通過COM組件接口把接收到的申請傳輸至網絡通信客戶端,同時等待申請結果。申請結果被反饋至客戶機后,網絡通信客戶端通過代理客戶端的組件接口傳輸WM_COPYDATA消息,令應用程序對反饋信息進行讀取。代理客戶端功能結構如圖4所示。
本文設計的分布式數據庫安全代理主要依賴數據訪問保存結果,所以不必對負責存儲訪問結果的數據結構進行設計。分布式數據庫訪問申請主要存在兩種類型,分別是存在反饋結果的選擇型訪問請求,以及不存在反饋結果的上載型訪問請求。本節構建的數據結構為:
#define MAX_SQL_LENGHT 200
Definition type composition structural morphology
{
int style; //訪問請求的類型,0代表上載型,1代表選擇型
char sqlstr [MAX_ SQL_LENGHT]; //訪問請求
}
sql style
1.3.2 組件的調用
本文設計的分布式數據庫安全代理系統模型在對組件程序進行調用的過程中,通常選擇#include技術,完成組件程序的編譯后,獲取*.h和*.c文件[9],通過組件接口對接口函數進行調用。接口函數的調用代碼如下:
#include”..\Consumercom\Consumercom.h”
//通過#include技術對組件進行調用
#include”..\Consumercom\Consumerom_i.c”
Void function ()
{
widget (null value);
//對組件進行初始化處理
I sealed *pUnk= null value;
IGf institution *pGf institution = null value;
HRESULT hr;
Hr= technique(
CLSID_Fun,
NULL,
CLSCTX_TNPROC_SERVER
//通過進程中組件DLL方式進行加載
IID_I sealed
//獲取I sealed 接口指針
(LPVOID*)&pUnk);
If(FAILED(hr)) throw(_T(“未注冊”));
Hr=pUnk?> limiting surface (
//從I sealed中得到其余接口指針
IID_IGf institution,
//得到IGf institution接口指針
(LPVOID*)&pGf institution);
If(FAILED(hr)) throw(_T(“不存在接口”));
UpdateData();
…
Hr=pGf institution ?>Sendsql institution (Sqlstr,1);
//對接口函數進行調用
If(objective (hr))
{
AfxMessageBox(“成功傳輸訪問申請至網絡通信客戶端!”);
}
}
1.3.3 代理服務器功能結構
代理服務端主要負責對網絡通信服務端傳輸的訪問申請進行接收和處理,把接收到的訪問申請傳輸至分布式數據庫服務器,同時把數據庫服務器反饋的訪問申請結果傳輸至網絡通信服務端。分布式數據庫安全代理服務端功能結構如圖5所示。
分析圖5可以看出,分布式數據庫安全代理服務端接收到網絡通信服務端的訪問申請后,利用分布式數據庫訪問模塊對相應服務器進行訪問,并將反饋的訪問申請結果進行處理,傳輸至網絡通信服務端[10]。
2 實驗結果與分析
2.1 安全性測試
安全性是衡量分布式數據庫安全代理系統性能的關鍵指標,本節通過身份認證可靠性對安全性進行衡量。在進行身份認證的過程中,通常會出現拒絕真實身份訪問與接受仿冒身份訪問兩種問題。所以本節通過錯誤拒絕率和錯誤接受率看作衡量身份認證可靠性的指標,上述兩個指標的值越低,則認為身份認證結果越可靠,安全性越高。實驗將數字證書系統和時鐘系統作為對比進行測試,隨著用戶量的逐漸增加,分別采用本文系統、數字證書系統和時鐘系統實現分布式數據庫安全代理,對三種系統代理過程中的錯誤拒絕率與錯誤接受率進行比較,得到的結果如表1所示。
分析表1中的實驗數據可知,在用戶數據量逐漸增加的情況下,三種系統的值和值均呈上升趨勢,但本文系統的值和值一直最低,說明本文系統的認證可靠性高,能夠保證分布式數據庫的安全通信和訪問。
2.2 訪問性能測試
分布式數據庫安全代理系統設計的關鍵不僅要保證分布式數據庫通信和訪問的安全性,還要保證訪問性能。實驗數字證書系統和時鐘系統進行對比,將訪問時間和重發率作為指標,對本文系統下分布式數據庫的訪問性能進行測試,結果見表2。分析表2可以看出,與數字證書系統、時鐘系統相比,本文系統的重發率和訪問時間明顯更低,說明本文系統下分布式數據庫的訪問性能更高,進一步驗證了本文系統的可行性。
3 結 語
本文研究了一種分布式數據庫安全代理系統。實驗結果表明,該研究系統能夠實現安全訪問和通信,且訪問性能高。
參考文獻
[1] 賀蘊彬.基于SQL Server數據庫安全機制問題的研究與分析[J].信息安全與技術,2014,5(1):48?50.
[2] 呂俊亞.混合數據庫中的臟數據隔離優化技術仿真[J].計算機仿真,2014,31(4):252?254.
[3] 周小娟.一種輕量級大數據分析系統的實現[J].電子設計工程,2016,24(8):40?43.
[4] 溫馨,羅侃,陳榮國.基于Shark/Spark的分布式空間數據分析框架[J].地球信息科學學報,2015,17(4):401?407.
[5] 歐陽柏成.變異遺傳散布控制執行算子的數據庫分類查詢[J].科技通報,2014(4):143?145.
[6] 林基明,班文嬌,王俊義,等.基于并行遺傳?最大最小蟻群算法的分布式數據庫查詢優化[J].計算機應用,2016,36(3):675?680.
[7] 戚斌.基于分布結構自適應篩選的數據庫存儲優化設計[J].計算機測量與控制,2016,24(12):184?187.
[8] 張旭剛,李東輝,俞俊,等.基于zookeeper和強一致性復制實現MySQL分布式數據庫集群[J].微型電腦應用,2016,32(1):77?80.
[9] 李文昊,李海芳.確定性分布式數據庫中長事務處理方法研究[J].科學技術與工程,2016,16(13):92?95.
[10] 李海榮,方中純.分布式數據庫控制協調體系結構的研究與實現[J].微電子學與計算機,2016,33(9):114?118.