DevSecOps的理解與思考


在RSA大會中,“下一代應用及IT基礎設施的安全管理模式”,被提升到了前所未有的高度,大會甚至專門為這個概念和方向設置議題和討論會,一個新晉熱詞“DevSecOps”出現在大家的視野中。

1.png

什么是DevSecOps


 “DevSecOps”,一種全新的安全理念與模式,從DevOps的概念延伸和演變而來,其核心理念為安全是整個IT團隊(包括開發、運維及安全團隊)每個人的責任,需要貫穿從開發到運營整個業務生命周期的每一個環節。

 

看到這個概念,第一反應是“安全運維”,是不是新瓶裝舊酒呢?確實一直以來,不論從主機安全還是到網絡安全,很多工作都是安全運維的交集,既涉及到安全,同時也涉及到運維,沒有運維足夠的支持很多安全工作也比較難開展。但是經過一段時間,發現最初的理解實際比較片面,剛才提到的並不是真正DevSecOps所要傳達的理念,DevSecOps的出現是為了改變和優化之前安全工作的一些現狀,比如安全測試的孤立性、滯后性、隨機性、覆蓋性、變更一致性等問題;通過固化流程、加強不同人員協作,通過工具、技術手段將可以自動化、重復性的安全工作融入到研發體系內,讓安全屬性嵌入到整條流水線。

2.png

我目前所能理解的DevSecOps


由於本人知識和經驗有限,對DevSecOps的理解可能只停留在比較淺顯的認知。

目前我在工作中能真正涉及和可以應用的有兩部分,第一塊是在資源管理,第二塊是在CI/CD這部分,監控告警、日志分析、或者其他內容,怎么應用到DevSecOps中我本人還沒有很成型的思路。

3.png

資源管理這塊,我們用到的,主要是依賴於YRDCMDB系統“銀河”來實現的,CMDB里存儲了宜人貸的所有主機、IP、域名、集群、應用等所有軟硬件信息,這樣在進行安全檢查、安全掃描的時候,就可以直接調用銀河來獲取完整的信息、或者直接調用銀河來執行一些簡單的掃描任務。

4.png

 宜人貸端口監控從銀河獲取IP信息完成對應的端口掃描。

5.png

基於資產管理可以更快速、准確的知道新上線的域名、應用等,從而觸發安全掃描,減少遺漏。

在主機安全方面,我們未來也打算基於CMDB來做更多的聯動,因為CMDB本身就自帶“遠程采集”和“遠程執行”的屬性。

DevSecOps中的安全自動化測試(掃描)


當我們談到S-SDLC的時候,總是希望安全可以更早的介入,但是隨着項目的增多、迭代頻率的增加,完全依賴人工測試的方式不但會壓垮安全測試人員本身,也會嚴重影響到整個軟件交付的速度,拖累整個上線周期,最終很多應用在得不到任何安全檢查的情況下偷偷上線。

為了提升效率,可以將部分自動化的安全檢查工作納入到CICD的流程中,並且將大部分流程自動觸發和執行,讓安全測試人員可以聚焦到更核心的業務和工作上,同時盡可能減少安全測試工作對軟件發布帶來的時間消耗。

6.png

代碼靜態安全檢查有商業化的解決方案比如Coverity,我們這里使用的是開源解決方案,Sonar+FindbugSecurity,根據需求精簡了規則,在持續構建的過程中,會進行代碼靜態安全檢查。

7.png

8.png

 

第二階段,當完成功能自動化測試后,可以進行安全自動化測試(掃描)。在這里我們簡單封裝了開源的漏洞掃描工具,將掃描任務、漏洞執行描述、結果等信息通過WEB方式進行展示,方便統一使用和管理。

9.png

下面這張圖是我們未來想要繼續改進的方向,大致思路如下:

在各個業務的功能自動化測試平台集成安全測試用例

√  功能測試平台主動調用安全測試平台(傳入登錄操作所需的信息)

√  安全平台模擬登錄后,開始進行掃描

√  最終將結果反饋給CI平台

這里涉及到和功能測試自動化團隊的協作,對於成熟的測試團隊,讓他們來實現一個登錄初始化的數據並且構造一些業務數據,應該不是很難的事情,這樣安全測試人員就不再需要去維護每個業務的登錄去構造數據了,有了登錄和一定的業務數據,安全掃描的效果也會好上很多。

10.png

 

用DevSecOps理念來解決第三方組件的漏洞問題


在軟件開發中,安全人員還經常遇到的問題就是來自第三方組件的安全漏洞應急,比如今年發生的Struts2、fastjson等漏洞,都是在軟件開發過程中引入的,這塊兒是比較好和DevSecOps相結合的。

不考慮入侵排查的因素,正常的響應流程一般為1DAY高危漏洞爆發,安全人員獲取和驗證POC之后,在WAF中添加惡意請求特征,緩解風險,同時推進補丁升級。傳統的方式一般是人肉統計、或者通過批量命令執行檢查線上服務器的制定目錄和文件、lsof進程所打開的文件等,這樣的方式,第一容易出現遺漏且效率低下,第二應急結束后未來又有新的系統發布再次引入了該漏洞組件后,並不能及時發現。

11.png

 這里我們引入了XRAY+統一發布的方式來解決這個難題。在構建過程中,會根據漏洞庫進掃描二進制文件,一旦發現包含高危漏洞的組件被引入,可直接告警或直接阻斷發布。

XRAY的工作方式如下:

√ 文件HASH比對

√ 可對接多個漏洞庫:NVD、Blackduck、Whitesource、Aqua等

√ 支持深度分解檢測:從docker鏡像、到rpm包、war包、jar包等,層層分解,進行掃描

甚至根據漏洞庫的修復方案,可直接對受影響版本自動更新版本號以及解決依賴升級問題(這個我沒有驗證過)。這里想針對docker多說兩句,線上環境的一致性和變更管理其實很困難,我覺得docker很大的一個好處就是解決了環境一致性問題,因為每次都需要重新構建,從OS到組件再到應用,無形之中也對漏洞修復工作帶來了便利性,修復效率有所提升。

12.png

每次構建的軟件都保存在倉庫中,可以快速篩選出使用的第三方組件,比如fastjson

13.png

14.png

而通過統一發布平台和倉庫的關聯,則可以快速找到哪些項目包含了帶漏洞的組件,並且之前已經被發布到線上環境,做到快速篩查。

15.png

 

總結


DevSecOps這個概念提出來的時間雖然不長,而且和以往S-SDLC的思路也有一些交集,但是卻再次定義了安全在軟件工程中的重要性以及結合方式;在敏捷思想和DevOps已經足夠成熟的今天,相信未來會有更多思想被提煉出來、也會有更多的最佳實踐來提高安全工作的效率。最后發個招聘廣告,JAVA架構師(風控),詳情見招聘欄——宜人貸招聘,有興趣的請投遞到security@yirendai.com。

16.png

參考


http://www.nsfocus.com.cn/content/details_147_2361.html

https://yq.aliyun.com/articles/7452


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM