【第164期 May 5, 2011】
 

研發新視界

ISAPI、NSAPI日誌技術簡介

作者/黃信翰

[發表日期:2011/4/29]



前言

在這個網路發達、資訊流通迅速的時代,利用資訊進行的犯罪也變得層出不窮,個人資料外洩對於被害人造成的傷害是難以想像的,對於機密資料使用上的控管必須特別注意。尤其是政府機關,等於是全國人民資料的集散地。而即便應用系統本身軟硬體的安全性再怎麼優秀,仍然是阻擋不了有辦法直接接觸並操作資料的機關內部人士的有心利用。為此,便需要一個對系統使用者的操作行為進行檢核的機制。

ISAPI、NSAPI日誌技術簡介

採用ISAPI或NSAPI的日誌架構,是應用系統無須自行儲存日誌的設計,而是各系統統一彙整於一操作日誌伺服器,用來紀錄使用者所執行應用系統的各項作業及各相關資料異動作業的封包訊息,並將封包送至以MSMQ建構的緩衝區。

在建置MSMQ的Queue Server端,利用Parser application負責處理MSMQ的封包資料寫入資料庫。

以下就ISAPI、NSAPI與MSMQ等技術做簡單的介紹。

一、ISAPI:

ISAPI 伺服器擴充程式是一個 DLL,可以由 HTTP伺服器(IIS)來載入和呼叫,用來篩選出入伺服器的資料。例如使用者填寫表單並且按一下送出按鈕,將資料傳送到伺服器時便呼叫ISAPI擴充程式,擴充程式可以處理資訊來提供自訂內容,或將資訊儲存在資料庫裡。當選取的事件發生時便會呼叫該篩選常式,可監視並變更資料。Web 伺服器擴充程式甚至可以使用資料庫裡的資訊,動態的建置網頁,然後將他們傳送到用戶端電腦來顯示。也可以加入其他的自訂功能,並將資料提供給使用 HTTP 和 HTML的用戶端。

二、NSAPI:

Sun ONE Web Server 6.1 延伸了 Netscape伺服器應用程式設計介面 (NSAPI),可支援 NSAPI 篩選器。NSAPI 篩選器支援自訂處理 HTTP 請求和回應串流。可讓某個功能攔截並修改提供給其他功能或由其他功能產生的內容。例如,外掛程式可安裝 NSAPI 篩選器來攔截其他外掛程式的伺服器應用程式功能產生的 XML 頁面,然後將此 XML 頁面轉變為適合用戶端的 HTML頁面。

三、Queue部分:

MSMQ(Microsoft Message Queue)是在多個不同的系統之間實現相互通信的一種異步傳輸模式,消息的發送者把自己想要發送的信息放入一個容器中,稱之為 Message,然後把它保存至一個系統公用空間的消息隊列(Message Queue)中;本地或者是異地的消息接收程序再從該隊列中取出發給它的消息進行處理。考慮到記錄日誌動作對於資料庫的存取過於頻繁,使用MSMQ將可減緩對資料庫的壓力。 若單一系統使用量高,日誌封包過多時,為達分流目的,避免造成該系統作業受到影響,可以增加佇列解決。


《圖一》訊息封包在MSMQ中累積


四、Parser Application部分:

利用VC++ 6.0開發Parser及送入資料庫程式。在既有系統之網頁程式增加必要程式碼,將查詢結果(查有或查無)記錄於網頁中,讓Parser Application解讀資訊,並將相關資料送入資料庫中。主控程式主要負責將各系統送至佇列伺服器的日誌封包處理存入日誌資料庫中,若存入失敗則寫入特定目錄,再利用DB-Rollback程式重新寫入。

五、若ISAPI/NSAPI無法寫入Queue,則以寫入Server上的檔案中,並完成所有正在執行的需求完畢後,就暫停Server的服務,之後由管理人員另起處理檔案程式,將資料重新送入Queue中,進行後續處理。將無法順利送至佇列伺服器的封包(會寫入Rollback目錄)重新送入MSMQ的傳出佇列中,將因為環境因素而無法將日誌存入資料庫的封包重新取出組合後送入資料庫中。

六、在資料庫操作正確下,無論ISAPI/NSAPI是寫入Queue或寫入檔案,都將回應客戶端處理成功;但在資料庫操作失敗的狀況下,無論ISAPI/NSAPI是寫入Queue或寫入檔案,都將回應客戶端處理失敗。


《圖二》應用系統→MSMQ的流程


此日誌架構能同時支援多個應用系統、多個使用者同時進行操作日誌工作。

結語

當作業關係到機密性資料的時候,使用日誌將所做的操作留下記錄就變得非常重要,而一旦系統及資料量相當龐大,記錄日誌的量對於資料庫所造成的負荷就成了需要克服的問題,若採取操作同時將日誌寫入資料庫的同步形式,勢必會對效能產生很大的影響。這裡所介紹的日誌管理系統,採用的是以ISAPI/NSAPI篩選器,搭配上MSMQ所實現的非同步形式的傳輸,不論來自前端各應用系統的日誌資訊量多密集,只要Queue Server空間足夠,便能將日誌訊息暫存在Queue Server中,再以Parser application以一定的步調將訊息寫至資料庫中,減輕資料庫的負擔。

而利用日誌查詢管理系統所提供的多種查詢功能,能方便的檢閱日誌資料與產生統計報表,以便能及早發現異常的資料存取,防堵有心人士對於機密資料的不當利用。