我在一家以資訊安全為主軸的軟體設計公司服務,很幸運地因為工作上的需要,讓我可以同時經歷導入ISO 27001及CMMI兩種截然不同的規範。如何讓這兩種先進的制度並存、不相衝突,實在是很不容易的事。
|
▲精品科技技術總監賴頌傑 |
首先,為各位簡單介紹這兩種制度:
CMMI的全名為Capability Maturity Model Integration(能力成熟度整合模式),由Canegie Mellon大學Software Engineering Institute(SEI)研發及對外授權,是一個幫助軟體發展者改善軟體流程能力與成熟度的模式。簡單的說,CMMI是一種應用於軟體開發流程控管的先進制度,能夠在軟體的開發週期中,減少Bug及問題,並能依照預期時程完成計劃。
ISO27001/BS7799則是目前國際上最廣泛使用,而且是最完整的資訊安全管理系統(ISMS)標準。它可以幫助公司鑑別、管理和降低資訊所面臨的各種威脅與風險,使資訊安全更有保障。進而確保公司內的資料符合機密性(Confidentiality)、完整性(Integrity)以及可用性(Availability)原則。
這是兩種完全不同的制度,也各有其目的及手段。以ISO 27001為例,導入的目標,就是以做好公司資訊安全為主要前題,所有的機密資料都須進行分類,而且經手資料的人要越少越好,在資訊安全的前提下進行,會有一些因為安全上所產生的限制及不方便,例如不可隨意上網、不可使用未經核可的USB DISK及光碟機的燒錄控管等。
而CMMI則比ISO 27001更複雜,因為要設計一個安全而且問題少的系統,本質上就是很大的挑戰,CMMI在制度上設計了一個通用的模型來減少問題的發生,而這個模型主要的訴求就是設計先行,同儕覆核,最後才動手依計畫實作程式。
為何依循CMMI制度的軟體系統問題較少?就是因為很多人看了同一份程式碼,這些人對將來要實作的方式預先進行討論,程式作者在公開透明的流程中設計專案,如此即可以事先的檢討規劃來換取較安全的程式碼。然而,如果一個軟體公司公開討論系統的所有實作細節,那麼離職人員很可能利用CMMI制度上的規定,取得不屬於自己的程式碼,這樣也違反 ISO27001的規定。
所以如何在符合CMMI的精神下,又能做好 ISO 27001資訊安全?一個可行的解決手法,是將專案中的程式人員分組,只有相同組的才能分享程式碼,所以不會讓參與的人拿到全部的專案。另一配套的加強做法是建立主動的防禦網,在每一個Client端建立防護及警示系統,確保專案不會外流。在這樣多層次的防護之下,程式設計者可以和同組的人在系統設計的初期,依循CMMI的規範進行充份討論,並在ISO 27001的規範下,維護公司原始碼的機密性。