HDC.Cloud2021 | 提升漏洞修復率,DevSecOps真的很有一套
近些年來,隨著云計算、微服務和容器技術的快速普及,不僅IT基礎架構發生了巨大的變化,政企組織的業務交付模式也迎來巨大變遷,傳統的開發模式向敏捷開發和持續交付模式遷移,在業務應用交付規模不斷擴大、交付速度不斷提高、開發運營場景一體化的大環境下,安全問題你真的重視么?
1 “漏洞”帶來安全隱患
近年來,隨著軟件開源化趨勢成為主流,開源軟件已經成為軟件供應鏈的重要環節,是軟件生態不可或缺的組成部分,可開源軟件的安全問題卻是很多組織所忽略和不知曉的。
Gartner 的調查顯示,99%的組織在其信息系統中使用了開源軟件。Sonatype公司對3000家企業的開源軟件使用情況展開過調查,結果表明每年每家企業平均下載5000多個開源軟件。隨著開源技術快速形成生態,企業用戶引入開源軟件已成大勢所趨,無法避免,不僅如此,隨著大型軟件開發過程中,開源組件的占比越來越高,加之軟件開發人員往往只關注自己開發的那部分代碼的安全性,忽視了采用的開源組件的安全質量,最終導致成型軟件產品的系統安全問題越來越多。
所以在這樣的大時代背景下,開源軟件和工具已經影響到了整個軟件行業,一旦具有大規模用戶基礎的開源軟件存在安全漏洞,后果和影響是無法想象的。
在非100%自研發的今天,開源軟件的漏洞已然成為了軟件生態中安全漏洞的“罪魁禍首”!
2 安全檢查,沒那么簡單
隨著安全漏洞問題的不斷爆出,越來越多的組織也開始意識到安全問題的重要性,可隨著產品的開發生命周期越往后,其功能、接口、代碼量、數據、內部關聯等越發的龐大和復雜,安全問題排查的難度、引發的修復成本也顯著增高。統計數據表明,隨著產品的開發,生命周期越往后,安全問題引發的修復成本也成倍數增長。如下圖所示,如果到了發布階段,再去修復安全問題,那么帶來的成本將是毀滅性的。

那么問題來了,我們該怎么辦呢?
3 提升漏洞修復率- DevSecOps實踐
在以上背景下, DevSecOps 應運而生。
DevSecOps 又是什么呢?
簡單來說,DevSecOps可以理解為在DevOps基礎上嵌入了安全Security,即DevSecOps是糅合了開發、安全及運營理念以創建解決方案的全新方法——一套由戰略驅動的體系化方法論,一套流程與工具支撐,將安全能力嵌入到整個軟件開發體系中,在保證業務快速發展的情況下實現安全保障,即快又安全的發布可運行的軟件。
DevSecOps 這個概念最早是2017年美國RSA大會上提出的——DecSecOps是一種全新的安全理念與模式,它從DevOps的概念延伸和演變而來,其核心理念是:安全是IT團隊中(包括開發、運維及安全團隊)每個人的責任,需要貫穿從開發到運營整個業務生命周期的每一個環節,只有這樣才能提供有效的安全保障。DevSecOps通過加強內部安全測試,主動搜尋安全漏洞,及時修復漏洞、控制風險,實現與業務流程的良好整合。

4 DevSecOps 的核心
DevSecOps 的安全實踐主要集中于以下兩個方面:
l 安全工作前移
采用安全在軟件開發前期介入的方式,降低解決安全問題的成本,前期介入的內容包括對開發、維護人員的安全意識培訓、安全開發規范的培訓、安全需求(非功能需求)的導入、前期的代碼審計工作、基于白盒的安全測試、滲透測試等內容。在運營階段增加的內容與前期開發階段類似,主要內容集中在對新安全需求實現情況的驗證以及軟件整體安全評估。
l 安全工作與現有工作無縫對接
為了避免安全工作(例如:測試與評估、安全策略的部署等)成為開發瓶頸,使得應用系統在最短周期內實現其應有的價值和安全屬性。DevSecOps采用快速迭代的開發方式,這就需要實現安全與開發工作實現無縫對接,將安全工作導入現有的開發工作流程和工具中,包括將安全需求導入至統一需求管理流程與工具、安全測試工作與持續集成/持續部署(CI/CD)對接、安全測試結果導入至缺陷管理工具等諸多環節。
這實際上就是對自動化提出非常高的要求。
5 DevSecOps 實施方案
DevSecOps 通常是將安全嵌入到DevOps的流程階段中,所以一般來說,DevSecOps的工具通常也是基于編碼、構建、測試、配置、部署、監控這六個階段嵌入的,如果要自行搭建DevSecOps的流水線需要至少在以上環節中加入相應的工具并實現自動化,具體分析如下:
1 )開發階段
良好的編碼習慣更易于代碼本身的理解和更改。DevSecOps通過添加用于編寫良好和安全代碼的安全檢查來擴展這些實踐。
傳統的單元測試,代碼審查,靜態代碼檢查等實踐可以擴展到該階段的安全性檢查。為了不影響開發人員的工作效率,可以在代碼提交至代碼倉庫之前查找并修復常見的安全問題。
2 )構建階段
將代碼提交到代碼倉庫后,將執行應用程序的構建和基本自動化測試,以確保代碼始終可編譯可構建。
同樣,需要在此階段添加安全性檢查,以檢測嚴重和高危安全性問題。如果發現嚴重問題,則需要進行安全控制,設定構建為失敗并發送警報通知。
3 )測試階段
成功構建后,通過選擇生成的工件并將其部署到容器或者測試環境來觸發測試階段。這些測試包括功能測試,集成測試,性能測試,高級SAST,安全性和DAST。
這個階段通常需要更多的時間和資源來執行,并且遵循快速失敗方法優先原則,即更費勁和耗時的測試要盡可能后延,只有在其他測試都通過時才執行。
4 )配置階段
配置管理工具可以輕松地反復大規模部署和創建安全基礎架構。通過標準化配置,配置管理工具可以減少與補丁管理相關的問題,最大限度地降低黑客可以利用未修補的服務器的風險,并有助于減少不同環境之間的差異。值得一提的是,使用配置管理工具可以在中央代碼庫和版本控制下跟蹤配置信息。
5 )部署階段
如果上述所有階段成功運行,則需要準備投入生產環境運行。該階段目標主要是驗證在配置或部署時間內是否存在任何錯誤,這些錯誤是否會降低系統的可靠性和彈性,是否可以在故障情況通過這些進行攻擊。
該階段使用自動化運行時檢查和測試中發揮重要作用的地方,特別是發現安全違規和漏洞的安全問題,并突出了風險,如訪問控制策略或防火墻規則的變化。
6 )監控階段
系統投入生產后,安全性不會終止,而是真正的開始。在DevSecOps中,自動安全檢查和監視反饋循環迭代是生產操作的基本部分。
持續監控可以深入了解應用程序正在接收的流量類型,并幫助識別惡意用戶的攻擊模式。
6 總結
綜上,DevSecOps的工具主要是基于編碼、構建、測試、配置、部署、監控這6個階段嵌入的,如果要自行搭建DevSecOps的流水線,需要至少在以上環節中加入相應的工具(參考工具如下圖),并實現自動化。如果自行搭建較為困難,可借助開發平臺提供DevSecOps的能力,比如華為云DevCloud軟件開發平臺來進行流水線的配置與開發。

當你遇到安全問題或者想要預防安全問題發生,DevSecOps是一個很好的解決方案,希望您看完本文,對DevSecOps有所了解。

作為華為ICT基礎設施業務面向全球開發者的年度盛會, 華為開發者大會2021 (Cloud ) 將于 在深圳舉行。本屆大會以#每一個開發者都了不起#為主題,將匯聚業界大咖、華為科學家、頂級技術專家、天才少年和眾多開發者,共同探討和分享云、計算、人工智能等最新ICT技術在行業的深度創新和應用。智能時代,每一個開發者都在創造一往無前的奔騰時代。世界有你,了不起!
了解大會詳細信息,請點擊 https://developer.huaweicloud.com/HDC.Cloud2021.html 。