提高漏洞修復率,DevSecOps 真的頗有一套丨HDC.Cloud2021

近些年來,隨着雲計算、微服務和容器技術的快速普及,不只IT基礎架構發生了巨大的變化,政企組織的業務交付模式也迎來巨大變遷,傳統的開發模式向敏捷開發和持續交付模式遷移,在業務應用交付規模不斷擴大、交付速度不斷提升、開發運營場景一體化的大環境下,安全問題你真的重視麼?html

1 「漏洞」帶來安全隱患

近年來,隨着軟件開源化趨勢成爲主流,開源軟件已經成爲軟件供應鏈的重要環節,是軟件生態不可或缺的組成部分,可開源軟件的安全問題倒是不少組織所忽略和不知曉的。segmentfault

Gartner的調查顯示,99%的組織在其信息系統中使用了開源軟件。Sonatype公司對3000家企業的開源軟件使用狀況展開過調查,結果代表每一年每家企業平均下載5000多個開源軟件。隨着開源技術快速造成生態,企業用戶引入開源軟件已成大勢所趨,沒法避免,不只如此,隨着大型軟件開發過程當中,開源組件的佔比愈來愈高,加之軟件開發人員每每只關注本身開發的那部分代碼的安全性,忽視了採用的開源組件的安全質量,最終致使成型軟件產品的系統安全問題愈來愈多。安全

因此在這樣的大時代背景下,開源軟件和工具已經影響到了整個軟件行業,一旦具備大規模用戶基礎的開源軟件存在安全漏洞,後果和影響是沒法想象的。服務器

在非100%自研發的今天,開源軟件的漏洞已然成爲了軟件生態中安全漏洞的「罪魁禍首」!架構

2 安全檢查,沒那麼簡單

隨着安全漏洞問題的不斷爆出,愈來愈多的組織也開始意識到安全問題的重要性,可隨着產品的開發生命週期越日後,其功能、接口、代碼量、數據、內部關聯等愈加的龐大和複雜,安全問題排查的難度、引起的修復成本也顯著增高。統計數據代表,隨着產品的開發,生命週期越日後,安全問題引起的修復成本也成倍數增加。以下圖所示,若是到了發佈階段,再去修復安全問題,那麼帶來的成本將是毀滅性的。併發

image.png

那麼問題來了,咱們該怎麼辦呢?運維

3 提高漏洞修復率 - DevSecOps實踐

在以上背景下,DevSecOps應運而生。微服務

DevSecOps又是什麼呢?工具

簡單來講,DevSecOps能夠理解爲在DevOps基礎上嵌入了安全Security,即DevSecOps是糅合了開發、安全及運營理念以建立解決方案的全新方法——一套由戰略驅動的體系化方法論,一套流程與工具支撐,將安全能力嵌入到整個軟件開發體系中,在保證業務快速發展的狀況下實現安全保障,即快又安全的發佈可運行的軟件。性能

DevSecOps這個概念最先是2017年美國RSA大會上提出的——DecSecOps是一種全新的安全理念與模式,它從DevOps的概念延伸和演變而來,其核心理念是:安全是IT團隊中(包括開發、運維及安全團隊)每一個人的責任,須要貫穿從開發到運營整個業務生命週期的每個環節,只有這樣才能提供有效的安全保障。DevSecOps經過增強內部安全測試,主動搜尋安全漏洞,及時修復漏洞、控制風險,實現與業務流程的良好整合。

image.png

4 DevSecOps 的核心

DevSecOps的安全實踐主要集中於如下兩個方面:

  • 安全工做前移

採用安全在軟件開發前期介入的方式,下降解決安全問題的成本,前期介入的內容包括對開發、維護人員的安全意識培訓、安全開發規範的培訓、安全需求(非功能需求)的導入、前期的代碼審計工做、基於白盒的安全測試、滲透測試等內容。在運營階段增長的內容與前期開發階段相似,主要內容集中在對新安全需求實現狀況的驗證以及軟件總體安全評估。

  • 安全工做與現有工做無縫對接

爲了不安全工做(例如:測試與評估、安全策略的部署等)成爲開發瓶頸,使得應用系統在最短週期內實現其應有的價值和安全屬性。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軟件開發平臺來進行流水線的配置與開發。

image.png

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

做爲華爲ICT基礎設施業務面向全球開發者的年度盛會,華爲開發者大會2021(Cloud)將於2021年4月24日-26日在深圳舉行。本屆大會以#每個開發者都了不得#爲主題,將匯聚業界大咖、華爲科學家、頂級技術專家、天才少年和衆多開發者,共同探討和分享雲、計算、人工智能等最新ICT技術在行業的深度創新和應用。智能時代,每個開發者都在創造勇往直前的奔騰時代。世界有你,了不得!

瞭解大會詳細信息,請點擊https://developer.huaweicloud...

segmentfault 思否

相關文章
相關標籤/搜索