顧名思義,DevSecOps是DevOps(鏈接)概念的延續,為應對安全漏洞日益嚴重的當下DevOps可能存在的安全問題而提出,旨在最大程度減少軟體開發全生命周期(Software Development Life Cycle,SDLC)中的產品漏洞,以避免安全問題可能導致的經濟與法律問題,

安全“左移”
在軟體復雜度高速增加的大趨勢下,避免安全漏洞成為了棘手的難題,即便在舍棄傳統瀑布式線性開發、避免冗長測驗報告過于拖進度而采用DevOps的情況下,開發團隊與運維團隊的界限已被打破,但安全問題往往仍處于被忽視的狀態,
測驗“左移”是廣為人知的憑借更早執行測驗任務提高產品質量、縮短SDLC的概念,DevSecOps可同樣理解為安全“左移”,DevSecOps強調從軟體構建起就注重安全性,并將安全檢查部署至CI/CD流水線(點擊查看詳情)的每個自動化測驗步驟中,比起傳統在研發完成后才確認安全性更易實踐,也更符合軟體安全性要求,
Security as Code:安全即代碼
對外行而言,實作安全“左移”只需在CI/CD流水線中設定一處安全需求限制即可,但此解決方式或因實施時間太久而被忽略,或將導致流水線整體陷入停滯、產品發布無限期推遲,DevOps最關鍵的團隊凝聚力也將因此受損,
安全“左移”暫時沒有放之四海而皆準的可供實踐的解決方案,但以下觀點和技術將能確保一定程度上的SDLC集成安全,
1. 指定安全專員
通過知會讓開發團隊對軟體安全負責是遠遠不夠的,而且掌握最新的安全漏洞、攻擊媒介及惡意插件并非易事,讓全員具備同樣水平是既不必要也不現實的,指定一位安全專員全職負責此類事項,通過分享最佳實踐來指導團隊將有助于建立企業安全合作文化,
2. 讓安全成為約束
將安全設定為審查會議的核查項,在增加新功能前先討論其可能帶來的安全風險及其解決方案,使安全成為每位開發人員的責任,可采用如STRIDE、OWASP等尋找潛在威脅并建立對抗的威脅建模策略來推動DevSecOps文化落地,
3. 添加自動化安全測驗
自動化是DevOps的核心所在,可在撰寫自動化單元測驗、集成測驗、端到端測驗時將安全視作必要條件,添加自動化安全測驗可使安全自然而然地貫穿SDLC始終,
4. 使用專業工具
除了執行自行撰寫的測驗用例,測驗人員還可利用各種專為自動化設計的安全測驗工具,靜態應用程式安全測驗(Static Application Security Testing,SAST)工具可通過靜態代碼分析檢查源代碼安全漏洞,如緩沖區溢位、SQL(Structured Query Language,結構化查詢語言資料庫)注入,由于SAST工具存在語言限制,測驗人員可在集成開發環境(Integrated Development Environment,IDE)中按需運行測驗,更快修復問題,同時也可設定特定警報駁回以避免誤報,
動態應用程式安全測驗(Dynamic Application Security Testing,DAST)工具獨立于應用程式的代碼細節,是外部的漏洞掃描程式,可通過黑盒測驗檢查跨站點腳本、命令及SQL注入,DAST工具需要部署至測驗環境進行使用,因此往往被使用于CI/CD流水線后期,

5. 檢查依賴項
幾乎每個代碼庫都包含開源庫和其他組件,處處都存在安全漏洞的可能,軟體成分分析(Software Composition Analysis,SCA)工具可在CI/CD流水線早期運行自動化安全測驗,保障開源組件和代碼庫的可見性,幫助企業管理組件安全、規避許可證相關風險,
SCA工具可以生成開源組件的全面串列,包括從應用程式構建階段決議到專案的任何依賴項,輸出開源組件的版本、來源、檔案路徑等基本資訊,還可作為IDE插件即時提供反饋,
6. 設定“紅隊”
可參考戰爭游戲中的“紅隊”概念,將部分開發人員劃分為“紅隊”,不參與被測系統的開發,跳出既有測驗框架,在與生產環境盡可能類似的暫存環境中以非預期的方式使用軟體,以便找出軟體可能存在的弱點,
7. 對安全問題與錯誤一視同仁
DevSecOps需要每位成員都對安全性負責,將安全漏洞與Bug同等對待,有助于提升團隊的專業知識,在更多專案中受益,
8. 保持關注
為降低隨時可能發生的黑客攻擊而毀掉先前所有努力的風險,可應用新型應用安全保護技術——運行時應用程式自我保護(Runtime Application Self Protection,RASP),使程式具備自我監控能力并識別有害輸入及行為,以便運維人員立即回應和進行及時處理,
DevSecOps:如何應用
DevOps的應用意味著SDLC將頻繁迭代,而將安全納入CI/CD流水線則意味著應用程式安全的反饋將與軟體狀況反饋一樣易于獲取,可像改進其他功能一樣改進安全設定,通過檢查和防范安全漏洞讓軟體保持足夠的安全性,
最后,DevSecOps與DevOps一樣,需要團隊文化的渲染與配合,其關鍵在于營造責任共擔的安全合作文化,每位團隊成員都應對安全的重要性有著明確認知及責任意識,
傳統嵌入式軟體的DevSecOps實踐,往往由于其過分依賴硬體而難以深入,可使用SkyEye作為輔助工具進行推進,SkyEye,中文全稱天目全數字實時仿真軟體(點擊查看詳情),是基于可視化建模的硬體行為級仿真平臺,支持用戶通過拖拽的方式對硬體進行行為級別的仿真和建模,使嵌入式軟體可以不加修改地在PC機上運行,其內置的自動化測驗腳本,可以在每個代碼提交節點觸發持續集成作業流進行安全性測驗,是實踐嵌入式DevSecOps的最佳拍檔,
參考鏈接
https://www.jetbrains.com/teamcity/ci-cd-guide/what-is-devsecops/
原文鏈接:https://mp.weixin.qq.com/s/XeF-XpFCO1LsyZGu5Z0_pg
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/518882.html
標籤:其他
