DevOps 做爲軟件交付生命週期管理領域的方法論,已經被愈來愈多的IT企業所接受。它所帶來的業務價值也是毋庸置疑的,「1天N次部署」、從代碼到上線只需數十分鐘甚至幾分鐘。DevOps 已經逐漸成爲更多企業軟件開發及運維成熟度的新標杆。前端
而隨着 DevOps 的落地,軟件交付速度不斷提高,安全問題也愈來愈凸顯,而在傳統軟件開發過程當中,安全每每是處於最後的一步,企業軟件系統在上線前,纔會通知安全人員對系統進行安全測試,甚至沒有通過任何安全檢測,事故頻發,如下是企業安全常見痛點:web
1. 問題後置:每每系統上線以後發現安全漏洞,而損失已經發生。安全
2. 漏洞重複出現:一樣的漏洞會在不一樣團隊屢次出現,沒法分析漏洞影響範圍,缺乏統一監管以及漏洞數據的積累。前端框架
3. 大量第三方漏洞,易***,排查困難:每每安全漏洞出如今外部,如第三方依賴,中間件,基礎操做系統等等,而該類漏洞一經出現,最易***。服務器
4. 二次故障:發現漏洞後回滾或更新系統,進而影響到被依賴的系統,形成二次損失。架構
5. 開發人員安全意識弱:SQL 注入等漏洞致使數據泄漏。框架
DevSecOps 是 Gartner 在2012年的一份報告中提出的概念。在這份報告中,Gartner 提出將安全理念須要更融入到 DevOps 的實踐中,提升企業安全意識,最大化企業價值。據《2017年 DevSecOps 社區》的調查數據顯示:運維
67%的IT企業將 DevOps 描述爲很是成熟或者提升成熟度;ide
58%的成熟 DevOps 團隊將自動化安全做爲持續集成實踐的一部分;工具
47%的傳統開發和運營團隊報告安全團隊和政策正在放緩;
而其中58% 的受訪者仍表示安全性抑制了 DevOps 的敏捷性,正如上文中提到的第6個痛點。在我看來這二者在企業管理中都很是重要,忽略任何一個均可能打擊企業創造價值的能力,穩定快速發佈纔是王道。那咱們應該如何來兼顧敏捷性和安全性呢?
如今國際上主流的實踐是把安全監管嵌入到了研發和運營整個體系過程當中,並引入自動化化的安全機制,貫穿 DevOps 的整個生命週期,今天爲你們介紹幾個最佳實踐。
軟件開發中,越早修復一個 Bug,那麼修復 Bug 成本的就越低,對與安全漏洞來講也是同樣,但咱們不可能在開發階段預知到開發使用哪些組建,所以咱們能夠在構建過程當中將安全機制集成進來,阻止漏洞包交付到生產環境,以下圖
過程(3)包括您常規構建過程,如依賴項解析、構建、測試、發佈到生產倉庫以及部署到測試環境以待測試。當將構建產物發佈到 JFrog Artifactory(步驟4)以後,能夠引入一個新的分析步驟(步驟6)到你的流水線中,該步進行二進制包級別漏洞掃描,根據分析結果,構建將被升級到生產倉庫並部署到生產環境,或者讓這次構建失敗(7/8)。一個失敗的構建會生成漏洞分析報告,列出全部的漏洞和嚴重級別,以下圖:
傳統開發中,一半都會會依賴大量第三方軟件依賴庫,提升開發效率,但同時也會帶來未知的風險和挑戰,從前端框架 Angular.js, React 到 MongoDb,這些依賴還會有多層級傳遞依賴,造成一個軟件樹,那咱們如何監管這些隱藏的第三方依賴呢?上面介紹了 XRay 能夠幫助咱們掃描二進制包安全漏洞,而且它能夠作到深度掃描,組層掃描依賴的依賴,而且結合開源漏洞數據源(NVD)和 Snyk 提供的漏洞數據源對整個軟件樹進行安全分析。更進一步 Snyk 有專門的團隊分析這些已暴露的漏洞,給出修復的建議或者漏洞修復的正確版本,而且能夠作到自動化,爲咱們自動化修復漏洞提供了可能性,幫助咱們兼顧敏捷與安全,以下圖:
傳統軟件交付或上線的都是二進制包,如 War 包,Tar 包,Docker 鏡像,對於安全監管人員來講是一個黑盒子,那麼咱們如何將其透明化,更好更快的發現問題從而提早避免風險呢?上文也提到軟件樹,其實咱們每一次正確或失敗的交付物其實都是一顆軟件樹,咱們能夠充分利用這顆樹的信息,幫助咱們避免二次故障,以下圖:
咱們某一次構建發現一個 Struts2 的漏洞(該漏洞容許***執行一個腳本到咱們的服務器主機上)。咱們能夠根據歷史構建的軟件正向依賴樹信息,快速在多個軟件樹中從下往上分析出該漏洞包的反向依賴,找出全部依賴該漏洞的項目,從而通知其餘團隊避免使用該漏洞包。進一步,咱們還能夠結合二進制倉庫(Artifactory)管理元數據能力,將漏洞信息綁定到二進制包上,進而自動阻止該漏洞包的下載行爲,例如包含漏洞元數據的二進制包禁止下載,以下圖:
DevSecOps 須要開發、運維和安全這三方面人員的通力合做,站在對方的視角客觀看待問題。具體到開發人員而言,不只僅須要開發技能,還須要對運維及安全有了解,對運維人員和安全人員也是同樣,須要各自擴充不一樣領域的通用技能與知識。同時咱們能夠藉助一些工具或者插件,在開發階段提早發現隱藏的漏洞,促使開發人員有意識的提升安全意識,以下圖:
今天咱們介紹了企業安全中常見的痛點及問題,而且介紹了國際上主流的一些實踐,同時,對於大型企業,會有多個研發團隊,甚至多個研發中心,咱們須要統一監管軟件全部交付物,防止漏洞上線到生產環境,而且創建企業漏洞數據中心,不斷積累漏洞數據,引一句名言,你能看到多遠的過去,就能夠看到多遠的將來,有了充足的歷史數據能夠提升咱們交付的信心,穩定快速的發佈,將 DevOps 和安全理念融合,落地 DevSecOps。
JFrog 中國技術支持負責人,曾在 HPE,億瑪等公司擔任高級工程師,專一系統架構、軟件 CI/CD 及 Devops 領域,在互聯網平臺建設上有着豐富的經驗,曾服務的客戶有中興通信,宜人貸,易保科技,順豐等等,並負責過多個互聯網平臺和移動應用的研發和運維工做。