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