代碼安全:持續交付模式會是理想答案嗎?
鑒于公司的持續交付(CD)模式,我們公司的開發人員將代碼投入到日常生產當中去。盡管開發周期短,但我仍然意識到了安全網關的需求。在這種環境下,該使用何種網關或是其他安全措施?我們是否要繼續采用CD模式?
對于軟件應用程序開發和交付來講,持續交付模式意味著開發周期短,同時會第一時間公布新代碼,而非推遲或與其他變更中捆綁進行。
從安全角度看,主要問題在于很多實際CD部署只關注測試和盡可能快地發布新特性和功能,缺乏對安全的重視。用戶反饋會反映到下一個版本中,但也只是就可用性和功能方面,而非安全。不過,這并不意味著就非要棄用CD不可,因為安全是內置于整個過程中的。
CD模式的核心理念在于創建一個自動化單元測試和集成測試的基線,這也使其本身天然地適用于安全開發實踐,只要開發和安全并行即可。帶有恰當的安全處理的CD模式可以改善軟件的安全性和彈性,因為這樣可以在軟件開發和部署過程中的關鍵階段持續集成安全檢查。傳統的軟件開發在每一個應用代碼中引入太多變更,這導致如果測試失敗的時候,難以發現問題究竟出在了哪段代碼上。
CD模式中的持續代碼評估讓尋找問題更為簡易,加之代碼在開發者腦海里總是常新的。當然,建立安全編碼規則禁止危險代碼結構和功能的使用也是非常重要的,只支持第三方庫和組件,且對所有核心功能應執行全面錯誤和異常處理規定。
一旦新代碼進入檢測,它應該被自動地進行代碼安全評估以查看是否引入了已知漏洞,并對人工檢查做好標記。檢測已知漏洞非常適合自動化,但更重要的是添加測試場景識別和禁止未知非正常行為。這些測試絕大多數可通過使用內帶安全的瀏覽器自動化工具自動進行。
測試的本質在于和自動化驗收測試一樣,不過更為針對驗證安全特性,如登錄和退出,包攬所有可預見的和不可預見的行為。關鍵在于創建基于應用程序攻擊面的測試,詳細的威脅模型。且安全團隊應該具備塊交付能力,如果測試結果表明存在不可接受的風險時。