2012年11月4日 星期日

[觀點] 雲端運算安全入門(十) - 雲端上的應用程式安全

上一次說明了資料中心的營運重點,包括如何更有效率地管理與因應雲端服務所衍生的彈性化需求,也提到了必須要求服務供應商在發生資安事故時進行通報,並依照事前所擬定的應變流程進行處理,同時也要保留相關的記錄作為事故檢討,本文將探討在雲端之上的應用程式安全。 

資訊科技改變了世界,影響了所有人的生活,藉由資訊科技所提供的各項資訊服務,使得企業的經營運作更加地便利。對於傳統主從式架構(Client-Server)的應用服務而言,無論其資訊應用是檔案存取、電子郵件或是網頁瀏覽等,在程式的開發設計與維運方面,許多企業都累積了多年的經驗因而駕輕就熟,針對來自於軟體、作業系統、網路架構等可能產生的安全風險,隨著許多資安事件的發生,慢慢地也產生了安全意識與認知。 

不過,隨著雲端運算的出現,當這些應用程式部署到雲端之中,無論採用的型式是軟體即服務(SaaS)、平台即服務(PaaS)或基礎架構即服務(IaaS),依照其服務型式的不同,應用程式的安全管理卻變成了一大挑戰。其主要的原因是傳統的應用服務大都來自企業本身資訊部門,無論開發、部署、維運、事件處理,有任何問題都能找到對應的窗口與負責的人員,但是對公有雲的雲端服務而言,本質上就是一項委外服務,也就表示以往既有的安全管控作法,也就必須要延伸至服務供應商的領域之中。

雲端環境對應用程式的影響 

隨著雲端運算的廣泛運用,一旦將應用服務移轉至雲端環境之中,部署至雲端的應用程式,就會與多種不同的系統之間彼此產生依賴關係,這對於應用程式的配置與部署將變得十分複雜,而且在管理的責任方面,甚至有可能因為應用服務的運作資源,分別屬於不同的服務供應商,當有問題發生時,也就需要花費更多心力在協調與溝通。 

此外,如果使用服務供應商所提供的雲端開發工具,在應用程式開發過程中就會影響既有的軟體開發生命週期(SDLC),包括了設計、開發、文件管理、品質管理、測試、上線、維運與除役等過程,這些與企業既有的作法可能會有明顯的不同,而且開發工具的提供是來自於服務供應商,因此工具的可用性與安全責任的歸屬,必須要在事前就進行討論並達成共識,以避免日後產生不必要的爭議。 

更重要的是,傳統上像是由網站應用程式所提供的資訊應用服務,本身就面對了許多來自基礎設施、作業系統、應用程式本身、網路架構的弱點等,所衍生出的資訊安全問題,這些問題一旦未獲得適當的控制或解決,當它部署到雲端環境之中,這些安全弱點同樣是存在的,而且有可能引發來自外部眾多安全威脅的利用,所以就需要我們在安全方面實施有效的管理與更多的關注。

確保雲端應用程式的安全 

無論是雲端服務供應商或是用戶,針對支持應用程式運作的系統和相關存取的資料,都必須事先了解其可能面臨的安全風險,一般而言,其主要的風險包括:
  • 缺乏安全管理 - 管理階層沒有意識到雲端服務可能帶來的新風險,缺少安全政策可作為依據來實施管理和稽核,也沒有實施對應的安全措施。
  • 資料難以控制 - 雲端的特徵是資源虛擬化,並同時提供給眾多的用戶來使用,雖然用戶看似可以管理雲端上的資料,但實際上卻難以得知資料的所在地,以及相關的存取與銷毀作法,這一切都需要依賴服務供應商來協助進行。
  • 資源隔離問題 - 由於雲端的多租戶特性,可讓來自世界各地的用戶共享資源,一旦供應商無法有效隔離共用的資源,保持像是記憶體、儲存空間、網路傳輸的獨立性,就可能會導致資訊的機密性、完整性和可用性受到侵害。 
  • 法規遵循問題 - 雲端服務打破了疆界的限制,也面臨了不同區域和產業的法規要求,礙於雲端服務本身的透明度先天不足,如果缺乏後天有效的監控機制,服務供應商也無法提出相關的法規遵循保證,將使雲端服務面臨可能違反法規的問題。 
為了因應雲端服務的安全風險,企業的管理階層需要及時提供雲端所需的各項資源,以確保有足夠的能量來因應可能發生的雲端安全問題,因此,若能在事前擬定一個應用程式安全確保計畫(Application Security Assurance Program),將會是比較好的作法。 

在這份計畫之中,至少需要涵蓋應用程式的設計、開發、部署、轉移與維護等過程,並且設定明確的目標與可量測的方式,以及如何實施與追蹤確認等,同時也要為應用程式設定所需的隱私與安全政策,以符合法令法規的要求。此外,應用程式在雲端上的相容性問題,也是不可忽視的重點,建議在程式開發的過程中,即確保使用業界認可或標準的工具與程式語言,以避免存在已久的安全弱點或相容性問題發生。 

至於資料的存取安全問題,則應確認服務供應商提供了足夠強度的身分驗證機制,並且採用適當的隔離作法,在應用程式的組態與變更管理方面,除了建立標準的作業流程,更應保留和提供可稽核的各項日誌記錄。由於雲端服務在安全風險方面有繼承的特性,所以也要了解應用程式底下的開發平台運作、基礎設施的實體安全,尤其當這些服務是來自於服務供應商本身所倚賴的第三方供應商。

雲端應用程式的佈署建議 

針對雲端應用程式的有效佈署,並且降低可能的安全風險,以下是來自雲端運算關鍵領域指南中所提供的實務建議:
  1. 傳統的應用程式開發流程強調軟體開發生命週期(SDLC),即使到了雲端環境也仍然要繼續維持,在各項流程之中所設定的檢查點,需要納入資訊安全的要求,包括針對雲端安全威脅與弱點的評估、系統上線前的安全檢測等。 

  2. 當應用程式之間的通訊必須跨越不同主機時,即使主機是位於同一個資料中心,或是以虛擬主機型式存在同一台實體主機上,也不要預先假設在彼此之間的通訊是安全的,安全通道的建立與加密機制的採用仍是必要的安全措施。 

  3. 針對雲端應用程式的運作,需要了解其日誌(log)的產生與儲存方式,因為相關的系統訊息可能是敏感的,所以對於應用程式日誌和測試記錄,其儲存的地點與安全控管就顯得十分重要。 

  4. 在考慮各項針對雲端的資安威脅時,除了來自外部的入侵行為之外,不要遺漏了內部管理可能的人員威脅,因此需要確保人員的「最小權限原則」與「職責區分」,避免權限過大或是集中在某一特定的人士手中。 

  5. 評估合法用戶可能的非法入侵或濫用問題,建議可採取縱深防禦的方式,也就是在不同的階層實施安全管控,例如採取虛擬主機隔離、資料加密、金鑰管理等,並確認當系統發生錯誤時,預設應為禁止使用者和其應用程序來存取系統。 

  6. 對於雲端應用程式的漏洞修補與安全檢測,應採用合適的工具與流程,事先評估漏洞修補的影響層面與必要性,將有助於萬一因修補而導致意外的資安事故時,可因應的處理方式與範圍。 

  7. 用戶若是需要針對服務供應商所提供的應用程式、開發平台或基礎設施進行弱點評估或滲透測試時,務必事先取得供應商的同意或明訂於合約之中。由於雲端服務具有多租戶的特性,為避免無法分辨合法的測試或是實際攻擊行為,一般供應商都會限制評估測試的範圍,甚至也可能會拒絕此一要求,此時就應尋求其他的替代方案,例如由供應商定期自行測試,並且提供評估報告。 

  8. 實施原始碼檢測(Code review),定義所採取的作法和所依循的標準,評估常見的問題(如Buffer Overflows, SQL injection),並進行動態的原始碼分析,以便在發現弱點時可以進行修補。此外,應避免在雲端主機上揭露過多的應用程式運作資訊,並對第三方所提供的程式庫(binary)進行弱點評估。 
在雲端之上的應用程式,其牽涉的安全議題相當的廣泛,對企業而言,最簡單的方法還是回歸到在部署之前,即預先建立應用程式的安全確保計畫,以進行應用程式的風險評估,了解應用程式可能對企業產生的衝擊,以及是否可以有效採取對應的安全控制措施,作為判斷此應用程式是否適合部署至雲端之上的基礎。

其次,在應用程式運作的過程中,需要了解相關的組態變更管理與事件處理作法,並且要求定期實施測試、稽核或檢視其運作狀態。

最後,請用戶務必與服務供應商維持良好的溝通管道,以因應法規要求來獲得各項必要的協助與支援,這樣將可讓雲端服務成為企業營運的利器,不致於對營運反而產生不必要的風險。 (本文刊載於2012年9月號網管人雜誌)

[參考資料]
CSA:Security Guidance for Critical Areas of Focus in Cloud Computing

沒有留言: