加入RUN!PC粉絲團
 
資訊人語 - IT實戰
分享到Plurk
分享到FaceBook
 
中原大學校務資訊系統優化的秘訣
系統品質與安全防護如何兼顧?
文/曹乙帆‧責任編輯/洪羿漣

網路上層出不窮的惡意攻擊事件,使得程式的安全性浮上檯面。隨著ISO 27001的導入,更加速了中原大學校務系統安全與品質改善的腳步,中原大學需要更有效率的方法,於是乎具備自動化程式碼測試的工具順水推舟地成為導入重點。




對於中原大學來說,校務資訊系統是支撐整個教務、學務、人事、總務及會計出納等服務的基礎平台,該系統的安全與順暢與否,直接影響了學校重大事項的正常營運,以及使用者的權益。Web化的系統服務雖然方便使用者的存取,但對惡意攻擊者而言又何嘗不是可趁虛而入的突破點?也因為如此,校務資訊系統的程式品質及安全性遂成為學校當局急欲改善的當務之急,但當前許多學校的資訊系統多為外包,亦使得系統程式成為安全上的一大隱憂與盲點。

由此可見,找出校務系統中的程式瑕疵與漏洞刻不容緩,但若以人工作業進行的話,不但難度極高且毫無效率可言,唯有透過程式碼測試工具才是兼具成本、安全與品質效益的最佳做法。中原大學電子計算機中心校務資訊組組長,同時也是資訊工程系助理教授鄭憲永,於中原大學服務近二十年,期間經歷過多次校務系統轉移、ISO27001標準及系統導入,相當肯定程式碼測試工具在提昇程式安全與品質上的重要性與效益。他認為,對於CMMI或ITIL等認證之取得,程式碼測試工具亦可協助加快導入速度、提昇建置效益。


歷經三次大轉移的校務資訊系統
中原大學的校務系統歷經的系統整合及系統轉移,一開始是從學生選課劃卡的學務系統為基點,然後逐步整合擴大。鄭憲永回憶指出,過去系統採用的是內建MPE作業系統及Tubro/Image資料庫的HP 3000大型主機,之後該系統歷經了三次的系統大轉移,也就是從HP 3000移轉到HP 9000、然後再轉到Sun Fire伺服器上。目前一直使用中的Fujitsu SPARC Solaris平台,即為第三次轉移後一直沿用至今的平台。

他進一步說明談到,約民國84年,校務系統開始移轉到Oracle系統上,從此以學生業務為主的學務系統,以及與老師業務為主的人事系統均整合在同一系統之下。在此系統整併的過程中,隨著會計系統的加入,整個財務、金流、人流及物流共同建構的中原大學校務系統才算大功告成,也因此造就了線上採購系統的啟用。鄭憲永說,所有的採購程序,從預算查詢、申請採購、決議、物品驗收及資產登記,利用線上採購系統即可全部搞定,讓整個採購流程更加順暢。


安全及品質為測試工具導入之最大促因
至於會開始採用自動化程式碼測試工具,鄭憲永表示,不外資訊系統安全及開發程式品質兩大原因之驅使所致,但其背景因素可回溯自ISO 27001標準認證的取得,以及資訊安全管理系統的導入。他說明,2年前教育部曾規定,全國大專院校必須在2008年之前完成第三方資訊安全認證之取得及通過。在淡大率先取得認證後,除了中原外,大同、東海、靜宜與成大等學校也陸續通過認證。

對於中原大學來說,取得該認證並不僅止於稽核而已,而是資訊安全管理系統的全面性導入。雖然該校從未有過安全攻擊或資料外洩的問題發生,但在導入ISO 27001標準及管理系統的過程中,一方面深刻體會到系統安全的重要性,另一方面當時網路上經常聽聞到跨站指令碼(XSS)及資料隱碼(SQL Injection)等,諸如此類的Web漏洞攻擊與資料外洩安全事件的發生。再加上程式碼外包撰寫的功力不一,更直接影響安全漏洞的多寡。

換句話說,程式品質之良窳與安全之間可說是一體兩面的事情。鄭憲永進一步分析舉例指出,由於電算中心的程式全都放在同一個入口網站上,所以一旦程式有任何品質瑕疵,就會有問題出現,例如Connection或File I/O沒關,而導致記憶體洩漏(Memory Leak),或資源洩漏(Resource Leak)等資源逐漸耗盡的狀況發生。

此外,有關程式撰寫品質瑕疵所造成的問題,最常見的莫過Null Pointer Exception,以及資源回收(Garbage Collection)機制的誤用問題。鄭憲永表示,在檢視每天的錯誤Log中可以發現,工程師最常犯的錯誤就是物件忘了去稽核,因為User Input資料無法預期,所以很容易形成Null Pointer Exception狀況。再來,Garbage Collection機制的撰寫不當,很可能會造成整個程式集區(Pool)中的程式都去呼叫Garbage Collection,由於Java系統本身會自動進行Garbage Collection,開發人員重覆誤用,反而容易引發系統資源的消耗殆盡。由此可見,人為疏失和因為系統出現安全漏洞而遭到惡意攻擊所導致的結果一樣嚴重。

所以程式及系統到底安全與否,需透過嚴謹的安全測試及稽核機制才能真正了解。在ISO 27001系統文件中具備資安控管表,光認證稽核項目即多達133條,中原電算中心大致 依自身需求列舉了31條。由於條目繁多,對於工作人員勢必是個額外負擔,可能延誤系統開發時程,甚至對品質造成影響。更何況若投入相當人力仍然無法解決問題,甚至衍生出其他安全問題的話,那麼整體耗費的成本將更加得不償失。與其如此,還不如導入程式碼測試工具,會更有效率,且更加客觀。

總體而言,要提昇軟體及服務品質,鄭憲永認為首先必須符合使用者的需求,畢竟軟體即使寫得再好,但卻無法獲得廣大使用者的認同也沒用。再來就是安全性,任由軟體系統中存在任何漏洞,都可能釀成資料外洩等惡意攻擊的風險產生。所以,除了人為控管外,程式碼測試工具絕對有其必要。


要提昇軟體及服務品質,鄭憲永認為首先必須符合使用者的需求,其次就是安全性。



根除程式瑕疵及漏洞才是治本之道
面對資訊服務系統的安全與否,最簡單快速的方式莫過於透過應用程式防火牆等安全防護設備的加裝來加以防範。但鄭憲永卻認為,如此僅止於治標而已。唯有從程式安全及品質等根本性問題著手才可能徹底根決,所以該校電算中心另有治本之道,也就是透過程式碼測試工具之導入,所進行之白箱測試來達成。唯有如此,才能確保所開發程式的安全性,以及所推資訊服務的順暢與穩定。

鄭憲永表示,該中心一開始是從阿瑪科技初次了解到有程式安全檢測這類型工具,之後並主要對阿碼科技、Fortify及Parasoft三家產品進行測試評估。除了產價格外,該中心會透過與自身資安控管表之測試比對,來選擇最能符合其需求的工具,最終出線並獲得青睞的是Parasoft的程式碼自動測試工具。

之所以會選擇Parasoft的原因,鄭憲永表示在於該工具運用在Java環境的功能完整,且同時兼具程式品質及最佳化稽核的能力。再者,Parasoft並支援該中心所採用Eclipse開發工具之Plug-in,如此一來,開發與測試都可在同一介面中進行,所以非常方便。

過去僅採用JUnit框架(Framework),雖然Eclipse也支援,但開發人員還是需要另外撰寫程式來進行測試,這方面Parasoft恰好可以補足不但可自動建立JUnit的Test Class,並且會方便地自動產生單元測試(Unit Testing)之測試用例(NUnit Test),並提供可檢驗出程式是否具備邏輯錯誤之測試覆蓋率報告,為開發人員省下不少時間及工夫。相對而言,Parasoft頗能在各個面向上符合該中心的需求。

除了透過Parasoft工具進行結構面及流程面之白箱測試,以及功能面之黑箱測試之外,該中心同時準備導入應用防火牆設備,來強化舊有資訊系統服務的安全性。由於該中心所導入之ISO27001並不溯及以往,所以在導入該標準之前所寫的程式軟體當然會有安全隱憂,為了確保其安全無虞,唯有藉助應用防火牆設備來加以強化,這是最符合管理及成本效益的折衷辦法。不過,未來不排除會藉由Parasoft工具對舊有程式進行檢測或修改。

為了進一步提昇新舊系統的安全性,該中心並會在各系統中將不必要的Service Port關閉,並限制連線IP數,例如連線資料庫的Telnet只開放幾個特定IP即可,以確保DBA管理人員的連線絕對沒問題。同時伺服器本身的安全性也不可忽略,定期作業系統及資料庫的漏洞更新皆不可忽略。再者還需藉助關鍵業務之伺服器檢核表,定期檢視處理器、記憶體及硬碟等資源耗用狀況,而且每半年需要變更系統密碼。


動靜態測試皆宜、黑白箱測試通包
該中心導入Parasoft工具的過程頗為順利,由於該軟體採用較彈性之浮動授權機制,也就是依據同時間最大連線數(Concurrent)來計費。建置之初需需另外架設一台授權伺服器(License Server)來取得授權。所以開發人員必須經過授權伺服器及本機伺服器兩道認證關卡。管理人員只需定期設定或變更程式碼之測試策略或勾選想要檢測的項目即可。


Parasoft程式碼檢測架構。


鄭憲永進一步表示,Parasoft所提供測試大致分成兩類,一為包括編碼規範(Coding Standard)比對與資料流分析(Data Flow Analysis)的靜態測試;一為包括單元測試及回復測試(Regression Testing)的動態測試。後者檢查項目較多,時間較長,所以該電算中心另外規劃一台專門負責動態測試的機器,並且以Subversion版本控管工具來將所有程式指派到該專責伺服器上進行動態檢測,而且是只針對異動的部分每週檢測一次。

面對SQL語法的檢測,Parasoft大致僅提供較基本的檢測功能。對此,電算中心是透過將Toad工具,以及Toad for Oracle Xpert工具安裝在專屬伺服器上提供檢測服務,需要進行SQL語法檢測的人員可以個別遠端連線上去。至於Local開發端則是採用免費的Oracle SQL Devloper工具。


讓系統服務品質紮根更深
在經驗傳承及人員培訓上,該電算中心除了會透過內部郵件或每月會議中進行經驗分享、概念宣導或Parasoft檢測文件之最佳實例學習外,該中心主要是以師徒制的方式來教導新人,尤其是Schema,唯有透過師傅的細心教導才可能掌握得了。

除此之外,鄭憲永表示,除了固定三位的主導稽核員(Leading Auditor)外,該中心原本擔任兩年的第一批流程負責入(Process Owner),將會轉交給另一批人來擔任。同時原有的內部稽核員分別會帶領其他觀察員,以培育成未來的內部稽核員。如此一來,全中心的人都能很快掌握整體運行的狀況,對於資訊安全管理的落實將有極大幫助。



【原文刊載於RUN!PC雜誌:2009年7月號】