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