現(xiàn)代軟件開發(fā)具有更多的代碼、語言、平臺以及部署選項。 DevOps要求自動化最大限度地提高速度。而這些都意味著更多的安全風(fēng)險。因此,DevSecOps開始受到關(guān)注,從軟件開發(fā)初期就進行全生命周期的安全管理。新思科技(Synopsys)近期發(fā)布的《2020年DevSecOps實踐和開源管理報告》顯示DevSecOps在全球范圍內(nèi)迅速增長??傆?3%的受訪者表示他們正在將一些DevSecOps活動融入其軟件開發(fā)計劃中。
那么,如何將安全置于DevOps之中呢?
引入DevSecOps
向DevSecOps過渡極具挑戰(zhàn)性。一方面,雖然目前主要是安全小組獨立地負責安全,但逐漸開發(fā)團隊也參與進來,共同負責安全和預(yù)算,使安全成為開發(fā)流程不可或缺的一部分;另一方面,開發(fā)團隊正在通過自動化和持續(xù)改進流程來優(yōu)化速度,實踐DevOps。
許多團隊缺乏全盤計劃,忽視了管理風(fēng)險。團隊沒有采取審慎的、深思熟慮的方法來提高安全,而是陷入一種僵局。團隊試圖使一切運行得足夠快,以跟上DevOps的步伐,但由于信息量太大,以至于他們不知道從哪里開始才能改善流程。
在不影響速度的情況下為DevOps增加安全
從切實降低風(fēng)險的角度出發(fā),從整體上解決安全問題的最佳方法是什么?答案是更高效的自動化。開發(fā)人員不必在每次更改代碼時都運行全面掃描,而是根據(jù)上下文使用智能測試,并決定要運行的內(nèi)容、運行時間以及運行方式。
逐步提升安全
讓我們看一下軟件開發(fā)中安全測試的典型演變。也許從部署靜態(tài)應(yīng)用安全測試(SAST)開始。僅分析集成就有許多可能性:
· 分析每次提交
· 分析每個推送請求
· 分析主要版本
· 選擇分析檢查器
· 配置分析檢查器
接下來,您決定進一步提升安全性,添加軟件組成分析(SCA)。您可以將其單獨集成到管道中,但是仍然有很多其它選擇:
· 掃描應(yīng)用程序
· 掃描部署容器
· 選擇掃描粒度和其他配置選項
· 識別通用漏洞披露(CVE)公布有違反政策的組件
· 識別CVE公布的組件在通用漏洞評分系統(tǒng)(CVSS)的評分
· 識別操作風(fēng)險高的組件
· 識別有一定許可證風(fēng)險的組件
· 將掃描結(jié)果的總結(jié)上傳到風(fēng)險追蹤系統(tǒng)
· 每個不符合要求的組件信息都將發(fā)送到風(fēng)險追蹤系統(tǒng)
將策略當作代碼
策略很重要。要求所有應(yīng)用程序開發(fā)團隊使用靜態(tài)分析是一種簡單但無效的軟件安全策略。更有效的策略應(yīng)該根據(jù)需要指定要使用的工具、所需的配置,最重要的是,可以指定在發(fā)布應(yīng)用程序之前所需的結(jié)果類型。
闡明策略的好方法是采用機器可讀文件的形式,有時將其稱為代碼(我實際上并沒有將其稱為代碼;它實際上是一個配置文件,可能是JSON或YAML)。
DevSecOps中安全層的關(guān)鍵功能
這里的“策略”描述了應(yīng)該進行哪些測試、規(guī)定需要什么樣的結(jié)果(或?qū)⑼V箻?gòu)建或部署)、將什么樣的結(jié)果發(fā)送到常規(guī)問題追蹤系統(tǒng)、需要進行哪些合規(guī)性活動等等??梢杂卸鄠€策略,每個策略反映不同類型的應(yīng)用程序和不同類型的風(fēng)險狀況。
根據(jù)策略的規(guī)定在開發(fā)管道中的特定事件上執(zhí)行相應(yīng)的測試,但是針對項目的當前狀態(tài)進行了優(yōu)化。安全層處理與工具的集成。
與安全層的輕量級集成發(fā)生在特定事件(例如合并請求)上。安全層旨在簡化集成。
什么時候應(yīng)該做安全防護呢?在發(fā)生代碼倉提交或代碼倉合并請求之類的事件時,管道會要求安全層執(zhí)行安全測試。安全層可以發(fā)揮一些強大的魔力,我們稱之為智能編排(Intelligent Orchestration)。首先,它參考策略來了解哪種安全測試是適合的。根據(jù)策略,安全層可以優(yōu)化測試的執(zhí)行方式。例如,如果開發(fā)人員剛剛對CSS文件進行了更改,那么Intelligent Orchestration會意識到完整的SAST掃描和SCA掃描是不必要的。對于更改特定模塊中的幾個Java源文件,可以執(zhí)行增量SAST以優(yōu)化速度。
那是否合規(guī)呢?開發(fā)管道可以要求安全層對項目是否合規(guī)做出判斷。
我們?nèi)绾翁幚戆踩珕栴}?可以按嚴重性對結(jié)果進行分類,通過CWE Top 25或OWASP Top 10進行檢查,也可以根據(jù)需要進行過濾和排序。您可以將結(jié)果整合到Tableau或Power BI之類的分析工具中。您可以制作圖表,顯示隨著團隊努力解決安全問題而使得錯誤(和風(fēng)險)下降的趨勢。
使用安全集成層還可以簡化添加新的安全測試工具或替換現(xiàn)有工具的流程。每個新工具都集成到安全層中,但是開發(fā)管道和安全層之間的接口保持不變。
為未來做好準備
軟件安全是一個蓬勃發(fā)展的領(lǐng)域。如果您試圖建立DevSecOps策略,那么確定所需的工具和流程可能會面臨挑戰(zhàn)。有了安全層,您開發(fā)過程中的集成就不需要更改。您只需要從安全層集成到新工具,然后調(diào)整策略即可。