什么是 DevSecOps?2022 年的定義、流程、框架和最佳實(shí)踐丨IDCF

來(lái)源:DevOps云學(xué)堂

DevSecOps 是一套實(shí)用且面向目標(biāo)的方法,用于確保系統(tǒng)安全。DevSecOps 被定義為通過(guò)與 IT 安全團(tuán)隊(duì)、軟件開(kāi)發(fā)人員和運(yùn)營(yíng)團(tuán)隊(duì)合作,在標(biāo)準(zhǔn) DevOps 周期中建立關(guān)鍵安全原則的過(guò)程。以下是對(duì) 2022 年 DevSecOps 管道、框架和最佳實(shí)踐的深入分析。
目錄
什么是 DevSecOps?
DevSecOps 管道如何工作?
了解 DevSecOps 框架
2022 年 5 大 DevSecOps 最佳實(shí)踐
什么是 DevSecOps?
DevSecOps 是指通過(guò)與 IT 安全團(tuán)隊(duì)、軟件開(kāi)發(fā)人員和運(yùn)營(yíng)團(tuán)隊(duì)合作,在標(biāo)準(zhǔn) DevOps 周期中建立關(guān)鍵的安全原則。
顧名思義,DevSecOps 是DevOps 概念的延續(xù)。它基于這樣一個(gè)事實(shí),即組織中的每個(gè)部門都同樣負(fù)責(zé)在軟件開(kāi)發(fā)周期的每個(gè)階段集成安全性。
以盡可能快的方式執(zhí)行新代碼發(fā)布到生產(chǎn)是所有組織的共同目標(biāo)。然而,在這個(gè)在線安全問(wèn)題、網(wǎng)絡(luò)威脅和其他安全漏洞日益嚴(yán)重的時(shí)代,每個(gè)階段都需要遵循特定的安全協(xié)議,這就是 DevSecOps 的用武之地。
DevSecOps 的主要優(yōu)勢(shì)之一是它可以最大限度地減少任何產(chǎn)品的漏洞,并使其完全準(zhǔn)備好供最終用戶使用。由于每個(gè)流程和相關(guān)工作流程都通過(guò)嚴(yán)格的安全檢查實(shí)現(xiàn)自動(dòng)化,因此可以更準(zhǔn)確地滿足安全要求。但是,選擇正確的工具來(lái)維護(hù)持續(xù)集成 (CI) 中的安全性至關(guān)重要。安全團(tuán)隊(duì)需要經(jīng)過(guò)充分培訓(xùn)才能幫助實(shí)現(xiàn)這一目標(biāo)。
DevSecOps 管道如何工作?
通常,DevOps 管道涉及多個(gè)步驟。DevSecOps 通過(guò)確保每個(gè)階段的嚴(yán)格安全標(biāo)準(zhǔn)從傳統(tǒng)方法中脫穎而出。軟件開(kāi)發(fā)生命周期 (SDLC)過(guò)程的主要階段包括規(guī)劃、編碼、構(gòu)建、測(cè)試、發(fā)布和部署。
計(jì)劃:在計(jì)劃階段,執(zhí)行主要的安全分析。工程師制定適當(dāng)?shù)臏y(cè)試策略,用于確定測(cè)試的方式、地點(diǎn)和時(shí)間。
代碼:在編碼步驟中使用各種類型的 Git 控件和工具來(lái)保護(hù)敏感信息,例如應(yīng)用程序編程接口 (API) 密鑰和密碼。
構(gòu)建:編寫和執(zhí)行用于構(gòu)建源代碼的代碼至關(guān)重要。在這里,靜態(tài)應(yīng)用程序安全測(cè)試 (SAST) 技術(shù)被廣泛用于使代碼無(wú)錯(cuò)誤。
測(cè)試:在測(cè)試階段,動(dòng)態(tài)應(yīng)用程序安全測(cè)試(DAST)工具主要用于測(cè)試產(chǎn)品/應(yīng)用程序,保護(hù)用戶身份驗(yàn)證,并識(shí)別 SQL 注入和 API 端點(diǎn)中可能存在的問(wèn)題。
發(fā)布:發(fā)布階段是指在滲透測(cè)試和漏洞掃描過(guò)程中執(zhí)行的安全分析。
部署:部署階段是在生產(chǎn)中實(shí)施適當(dāng)?shù)陌踩珔f(xié)議,為最終部署做好準(zhǔn)備。
如前所述,在 DevSecOps 的每個(gè)階段都實(shí)施了多項(xiàng)安全措施。以下是此類安全程序的各個(gè)階段:
第一階段:威脅建模
威脅建模總結(jié)了可能的攻擊場(chǎng)景,列出了敏感數(shù)據(jù)的流向,并突出了漏洞和緩解替代方案。此階段有助于解決安全問(wèn)題并提高團(tuán)隊(duì)的安全理解。
第二階段:掃描
掃描階段評(píng)估代碼以確保其安全且沒(méi)有安全漏洞。此處包括手動(dòng)和自動(dòng)代碼審查。在此步驟中,使用了 SAST 和 DAST 等 AppSec 工具。由于處于軟件開(kāi)發(fā)生命周期的早期,此階段允許工程師解決大多數(shù)安全漏洞和缺陷。
第三階段:分析
分析所有先前獲取的數(shù)據(jù)和指標(biāo),以識(shí)別此階段的任何安全漏洞。然后將危險(xiǎn)分類到一個(gè)列表中,從最嚴(yán)重到最輕微。一些 SAST 程序(例如 Klocwork)可以自動(dòng)執(zhí)行此過(guò)程。
第四階段:補(bǔ)救
補(bǔ)救階段處理在先前階段已識(shí)別和組織的安全漏洞。一些 DevSecOps 技術(shù)(例如 SAST)可以針對(duì)發(fā)現(xiàn)的漏洞、缺陷和缺陷提出修復(fù)建議。這使得在出現(xiàn)安全問(wèn)題時(shí)更容易處理它們。
第五階段:監(jiān)控
在監(jiān)控階段,跟蹤發(fā)現(xiàn)的漏洞,努力減輕或消除它們,并對(duì)應(yīng)用程序進(jìn)行整體安全狀況評(píng)估。跟蹤和管理實(shí)際指標(biāo)值和目標(biāo)指標(biāo)值之間的變化也很好。在軟件開(kāi)發(fā)生命周期中,這有助于做出明智的數(shù)據(jù)驅(qū)動(dòng)決策。組織應(yīng)首先在安全單元測(cè)試中實(shí)施持續(xù)安全。安全單元測(cè)試要求與我們編寫的其他單元測(cè)試一樣重要。
了解 DevSecOps 框架
DevOps 有助于加速軟件交付,這對(duì)標(biāo)準(zhǔn)安全實(shí)踐提出了挑戰(zhàn)。由于這個(gè)問(wèn)題,DevSecOps(或 SecDevOps)一詞被創(chuàng)造來(lái)描述將安全程序整合到 DevOps 系統(tǒng)中。了解 DevSecOps 在不同行業(yè)中采用何種方式以提供最佳安全級(jí)別至關(guān)重要。為此,您需要清楚了解構(gòu)建 DevSecOps 框架所需的主要功能和解決方案。接下來(lái),我們將引導(dǎo)您了解應(yīng)用安全產(chǎn)品的頂級(jí)標(biāo)準(zhǔn)功能,以創(chuàng)建 DevSecOps 框架。
3.1 安全掃描
安全掃描是應(yīng)用安全產(chǎn)品的主要功能之一。它基本上有兩種類型——基于代理的和無(wú)代理的。雖然這兩種掃描模型都很流行,但無(wú)代理掃描模型的工作方式卻截然不同。在這里,應(yīng)用程序安全服務(wù)從安全管理員那里收集項(xiàng)目和相關(guān)數(shù)據(jù),然后在無(wú)代理掃描架構(gòu)中執(zhí)行安全掃描。
安全管理員可以使用 Web 儀表板輸入項(xiàng)目信息或編寫腳本將數(shù)據(jù)傳輸?shù)綉?yīng)用程序安全服務(wù)的公開(kāi) API。無(wú)代理安全掃描基于兩個(gè)主要組件——掃描代理和應(yīng)用程序安全服務(wù)。掃描代理的主要作用是運(yùn)行徹底的安全掃描并將輸出提交給應(yīng)用程序安全服務(wù)進(jìn)行進(jìn)一步的掃描和分析。
如果沒(méi)有應(yīng)用程序安全服務(wù),安全代理的掃描結(jié)果將毫無(wú)用處。例如,對(duì)于 SCA 產(chǎn)品,掃描庫(kù)的簽名可以在結(jié)果中,而漏洞詳細(xì)信息是預(yù)期的。另一方面,對(duì)于 SAST 產(chǎn)品,結(jié)果包含漏洞代碼。因此,掃描結(jié)果只能與應(yīng)用程序安全服務(wù)的數(shù)據(jù)庫(kù)一起使用。
3.2 獲取源代碼
應(yīng)用安全產(chǎn)品一般通過(guò)兩種主要方式接收源代碼——版本控制系統(tǒng)方式和文件上傳方式。在這個(gè)過(guò)程中,相關(guān)安全管理員根據(jù)需要將源代碼壓縮后上傳到應(yīng)用安全產(chǎn)品。上傳過(guò)程通過(guò)已發(fā)布的 API 或 Web 管理界面進(jìn)行。
安全管理員通過(guò)版本控制系統(tǒng)的方式為項(xiàng)目配置存儲(chǔ)庫(kù)信息。一些示例是——存儲(chǔ)庫(kù)統(tǒng)一資源定位器、存儲(chǔ)庫(kù)訪問(wèn)憑證等。
應(yīng)用程序安全服務(wù)使用一組特定的數(shù)據(jù)從版本控制系統(tǒng)獲取源代碼。由于獲取完整的源代碼可能更加耗時(shí)和復(fù)雜,因此它會(huì)檢索更新的代碼以確保獲得更好的結(jié)果。
此外,使用版本控制系統(tǒng)還有其他優(yōu)點(diǎn),例如增量掃描、更嚴(yán)格的身份驗(yàn)證過(guò)程、與項(xiàng)目相關(guān)的簡(jiǎn)化操作等。這是使獲取多個(gè)級(jí)別的源代碼變得獨(dú)特而有效的主要因素之一。
3.3 項(xiàng)目組織
每個(gè)項(xiàng)目都由不同的團(tuán)隊(duì)根據(jù)組織層次結(jié)構(gòu)進(jìn)行生產(chǎn)和管理。用戶和組用于組織應(yīng)用程序安全產(chǎn)品中的任務(wù)。
每個(gè)用戶都是一個(gè)或多個(gè)組的成員,每個(gè)組都可以訪問(wèn)一個(gè)或多個(gè)項(xiàng)目。此外,員工經(jīng)常需要同時(shí)處理多個(gè)軟件項(xiàng)目。此類項(xiàng)目通常與公司的單個(gè)部門相關(guān)聯(lián)。
因此,直接從組織結(jié)構(gòu)映射是不切實(shí)際的。因此,每個(gè)項(xiàng)目都被分配到一個(gè)組,該組包括該項(xiàng)目的所有使用應(yīng)用程序安全產(chǎn)品的用戶。
DevSecOps 架構(gòu)中有兩個(gè)主要部分,尤其是在高級(jí)架構(gòu)中。這里的代理是指一個(gè)易于使用的腳本,它提取和收集源代碼并將其發(fā)送到相關(guān)引擎。這是 CI(持續(xù)集成)過(guò)程的關(guān)鍵部分。
在這里,單體架構(gòu)和微服務(wù)架構(gòu)是兩種架構(gòu)。由于這些原因,該框架的引擎是利用微服務(wù)架構(gòu)構(gòu)建的:
維護(hù)更簡(jiǎn)單:引擎支持不同的安全程序(如安全掃描、報(bào)告檢索和憑證管理)。每個(gè)特性都可以定義為架構(gòu)中的一個(gè)單獨(dú)的微服務(wù),可以獨(dú)立創(chuàng)建和維護(hù)。如果選擇整體設(shè)計(jì),更改或添加一個(gè)安全功能將需要更改或添加另一個(gè)元素。
更高的可靠性和可用性:當(dāng)一個(gè)安全組件(例如,安全報(bào)告)發(fā)生故障時(shí),它不會(huì)影響其他安全功能。如果為此框架采用單體架構(gòu),則單個(gè)安全功能故障可能會(huì)導(dǎo)致整個(gè)框架失敗。
更易于擴(kuò)展:每個(gè)服務(wù)都可以單獨(dú)擴(kuò)展,以便在必要時(shí)提供更多資源。使用單體架構(gòu)時(shí),必須擴(kuò)展整個(gè)引擎以滿足單個(gè)功能的資源需求。
2022 年 5 大 DevSecOps 最佳實(shí)踐
要釋放 DevSecOps 的潛力,您必須遵守設(shè)定的最佳實(shí)踐。在這里,我們列出了 DevSecOps 的最佳實(shí)踐,以確保高水平的安全性、降低風(fēng)險(xiǎn)和提高運(yùn)營(yíng)效率。目標(biāo)應(yīng)該是確保高標(biāo)準(zhǔn)的安全性。
4.1 使用安全編碼技術(shù)
安全編碼技術(shù)是 DevSecOps 不可或缺的一部分,以確保軟件得到充分保護(hù),免受任何低漏洞級(jí)別的威脅。除非代碼高度安全,否則將存在數(shù)據(jù)泄露、網(wǎng)絡(luò)安全攻擊和其他安全威脅等風(fēng)險(xiǎn)。建議在安全編碼技術(shù)上投入所需的時(shí)間和資源,以避免將來(lái)出現(xiàn)嚴(yán)重的安全攻擊。始終選擇有經(jīng)驗(yàn)的開(kāi)發(fā)人員并遵守正確的編碼標(biāo)準(zhǔn)。
4.2 整合正確的工具
集成正確的工具是有效實(shí)施 DevSecOps 的基礎(chǔ)之一。大多數(shù)公司利用頂級(jí)應(yīng)用安全技術(shù),例如 SAST、DAST、交互式應(yīng)用程序安全測(cè)試 (IAST) 和源組合分析 (SCA) 等,以確保正確使用和優(yōu)化工具。
DevSecOps 工具中一些常見(jiàn)但備受追捧的功能是圖像保證、入侵檢測(cè)、運(yùn)行時(shí)保護(hù)和其他微服務(wù)安全功能。隨著容器化和微服務(wù)成為現(xiàn)代應(yīng)用程序基礎(chǔ)設(shè)施的基礎(chǔ),必須將適當(dāng)?shù)?DevSecOps 工具集成到企業(yè) SOP 中。這就是開(kāi)發(fā)良好且易于使用的 API 發(fā)揮作用的地方,因?yàn)樗鼈冇兄诳绮煌脚_(tái)和應(yīng)用程序領(lǐng)域擴(kuò)展和集成工具。
4.3 使用自動(dòng)化
手動(dòng)流程更容易出錯(cuò),并且通常不方便擴(kuò)大規(guī)模。此類技術(shù)還增加了錯(cuò)誤配置的風(fēng)險(xiǎn),這是企業(yè)面臨的最具影響力、最嚴(yán)重的安全威脅之一。
需要在整個(gè) CI/CD 管道中應(yīng)用和驗(yàn)證嚴(yán)格的安全協(xié)議和措施,而自動(dòng)化是簡(jiǎn)化整個(gè)過(guò)程的原因。這就是為什么它是 DevSecOps 最有效的最佳實(shí)踐之一。企業(yè)必須盡可能實(shí)現(xiàn)自動(dòng)化——從 IDE 中的代碼編寫到生產(chǎn)中的 IAM 角色——通過(guò)避免錯(cuò)誤配置來(lái)預(yù)防、檢測(cè)和修復(fù)問(wèn)題。
4.4 采用安全即代碼
安全即代碼是指安全策略的編碼、掃描和驗(yàn)證。安全作為代碼的主要優(yōu)點(diǎn)是它確保了適當(dāng)?shù)陌踩?guī)則。協(xié)議在整個(gè)基礎(chǔ)設(shè)施中統(tǒng)一實(shí)施。它還有助于加快部署并使用管道的版本控制和自動(dòng)化。
安全即代碼,如自動(dòng)化和其他 DevSecOps 最佳實(shí)踐,提供了加強(qiáng)安全性的好處并有助于改進(jìn)操作。此外,一旦記錄在案,它就簡(jiǎn)化了迭代和擴(kuò)展安全方法。
4.5 安全左移
傳統(tǒng)上,安全掃描和評(píng)估是在軟件生產(chǎn)之后進(jìn)行的。因此,解決安全漏洞是復(fù)雜、昂貴且容易受到時(shí)間限制的。為了解決這些困難,左移安全強(qiáng)調(diào)盡早將安全集成到軟件開(kāi)發(fā)生命周期 (SDLC) 中。
左移不僅僅是代碼。它還需要在 SDLC 的規(guī)劃、分析和設(shè)計(jì)階段優(yōu)先考慮安全性。企業(yè)可以及早發(fā)現(xiàn)安全問(wèn)題和錯(cuò)誤配置,提高產(chǎn)品質(zhì)量和安全性,同時(shí)減少修復(fù)漏洞所需的時(shí)間和精力。

超級(jí)工程師實(shí)戰(zhàn)營(yíng)第七模塊【安全模塊】邀請(qǐng)到華為云SDL專家&DevSecOps專家 劉皓老師帶來(lái)3小時(shí)大時(shí)段課程分享,主題是《DevSecOps安全實(shí)戰(zhàn)》
7月5日(周二)和7月6日(周三)晚上19:30-21:00,線上直播,掃碼立即報(bào)名,精彩內(nèi)容,不容錯(cuò)過(guò)



