HDC.Cloud2021 | 提升漏洞修復率,DevSecOps真的很有一套

lumin1020發表於2021-04-02

近些年來,隨著雲端計算、微服務和容器技術的快速普及,不僅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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69965512/viewspace-2766335/,如需轉載,請註明出處,否則將追究法律責任。

相關文章