提升CI/CD 安全性的四個(gè)關(guān)鍵步驟
應(yīng)用持續(xù)集成/持續(xù)交付 (CI/CD) 管道已成為實(shí)現(xiàn)現(xiàn)代軟件系統(tǒng)自動(dòng)化敏捷開發(fā)的重要方式,確保開發(fā)人員在其流程中的各個(gè)階段都能滿足安全防護(hù)措施要求,防止攻擊者利用CI/CD管道的安全漏洞開展攻擊活動(dòng)至關(guān)重要。在軟件開發(fā)的早期階段識(shí)別和緩解CI/CD 管道中的安全風(fēng)險(xiǎn),可以讓企業(yè)組織從被動(dòng)的安全防護(hù)轉(zhuǎn)變?yōu)橹鲃?dòng)狀態(tài)。但是鑒于網(wǎng)絡(luò)犯罪策略的快速發(fā)展和變化,保障CI/CD應(yīng)用安全充滿挑戰(zhàn)。
本文總結(jié)了一份包含四個(gè)關(guān)鍵步驟的CI/CD應(yīng)用安全防護(hù)清單,以及相關(guān)的安全工具和策略,可以幫助企業(yè)和開發(fā)人員了解如何提升CI/CD管道應(yīng)用的安全性。
步驟1:創(chuàng)造一個(gè)健康開發(fā)環(huán)境
軟件開發(fā)團(tuán)隊(duì)?wèi)?yīng)該在軟件開發(fā)的每個(gè)階段都充分考慮軟件的安全性,即便是開發(fā)項(xiàng)目還處于規(guī)劃設(shè)計(jì)階段也應(yīng)該如此。通過(guò)創(chuàng)建健康的安全開發(fā)環(huán)境,開發(fā)團(tuán)隊(duì)可以在制定產(chǎn)品路線圖時(shí),就實(shí)施一些特定的安全任務(wù),例如威脅建模和軟件組件 (SLSA)級(jí)別評(píng)定等。
威脅建模聚焦于潛在的攻擊類型和區(qū)域,并幫助開發(fā)者引入緩解這些攻擊所需的對(duì)策。通過(guò)從攻擊者視角去觀察、思考,開發(fā)團(tuán)隊(duì)可以不斷評(píng)估系統(tǒng)的安全狀況并通過(guò)攻擊模擬來(lái)加強(qiáng)防御。SLSA 框架在軟件項(xiàng)目的規(guī)劃階段特別有用,作為一種確定 CI/CD 管道安全性的通用語(yǔ)言,它由一系列控制、標(biāo)準(zhǔn)和最佳實(shí)踐做法組成,可有效識(shí)別和應(yīng)對(duì)常見(jiàn)的軟件供應(yīng)鏈攻擊模式。
步驟 2:提升代碼的安全可見(jiàn)性
開發(fā)團(tuán)隊(duì)無(wú)法保護(hù)他們看不到的內(nèi)容。要了解整個(gè) CI/CD 管道應(yīng)用的安全性,就需要了解軟件系統(tǒng)各組件的所有代碼以及它們之間的關(guān)聯(lián)性和交互性。軟件開發(fā)團(tuán)隊(duì)可以通過(guò)執(zhí)行軟件組合分析 (SCA) 和使用軟件物料清單 (SBOM) 來(lái)對(duì)所有代碼的安全性進(jìn)行檢測(cè)和分析。開發(fā)團(tuán)隊(duì)還應(yīng)該積極應(yīng)用靜態(tài)應(yīng)用程序安全測(cè)試 (SAST)。
SAST 安全測(cè)試過(guò)程會(huì)包含多種代碼安全檢測(cè)工具,用于檢查應(yīng)用程序源代碼、匯編代碼、字節(jié)碼和二進(jìn)制文件是否存在安全漏洞。實(shí)踐經(jīng)驗(yàn)表明,開發(fā)人員應(yīng)該在軟件系統(tǒng)開發(fā)的早期階段就利用以上安全工具去發(fā)現(xiàn)問(wèn)題,這樣才可以在開發(fā)項(xiàng)目完成時(shí),確保所有代碼庫(kù)的安全。當(dāng)然,任何安全工具都不是完美的,因此部署這些工具并不能完全替代安全專業(yè)人員手動(dòng)代碼審查的責(zé)任。
步驟3 :進(jìn)行充分的安全性驗(yàn)收測(cè)試
在系統(tǒng)正式上線應(yīng)用前,需要開發(fā)人員對(duì)軟件系統(tǒng)進(jìn)行反復(fù)的、充分的安全性驗(yàn)收測(cè)試,尤其是在新功能即將發(fā)布的情況下。開展充分的安全性驗(yàn)收測(cè)試對(duì)于提升CI/CD 管道應(yīng)用安全性非常重要,可以確保現(xiàn)有的安全控制措施足夠有效,保護(hù)系統(tǒng)在實(shí)際運(yùn)行時(shí)的安全狀況。安全性驗(yàn)收測(cè)試主要包括對(duì)系統(tǒng)在安全漏洞、參數(shù)配置、身份驗(yàn)證、授權(quán)控制等方面的狀態(tài)驗(yàn)證,可以通過(guò)自動(dòng)化工具、手動(dòng)或者兩者結(jié)合的方式去完成。
在安全性驗(yàn)收測(cè)試過(guò)程中,開發(fā)人員可以使用動(dòng)態(tài)應(yīng)用程序安全測(cè)試 (DAST) 工具來(lái)模擬真實(shí)的攻擊行為,從外到內(nèi)進(jìn)行安全性驗(yàn)證和分析。與靜態(tài)環(huán)境中檢測(cè)缺陷的SAST工具不同,DAST工具可以在動(dòng)態(tài)、主動(dòng)變化的環(huán)境中檢測(cè)軟件系統(tǒng)真實(shí)運(yùn)行時(shí)可能存在的安全性缺陷。對(duì)有條件的開發(fā)團(tuán)隊(duì),還可以使用容器掃描工具,因?yàn)槿萜鏖_發(fā)模式已被廣泛接受,并且是云計(jì)算未來(lái)應(yīng)用發(fā)展的主流趨勢(shì)。
步驟4:開展持續(xù)的安全監(jiān)控
當(dāng)軟件系統(tǒng)開發(fā)的環(huán)境安全、代碼安全和驗(yàn)收測(cè)試策略均已啟動(dòng)并有效運(yùn)行后,就需要采取一些有效的預(yù)防措施來(lái)保持 CI/CD 管道能夠長(zhǎng)期處于安全穩(wěn)定的狀態(tài)。這個(gè)過(guò)程是一項(xiàng)需要長(zhǎng)期執(zhí)行并不斷優(yōu)化調(diào)整的任務(wù)。為了取得真正的安全性,CI/CD 管道應(yīng)用必須實(shí)現(xiàn)持續(xù)性的監(jiān)控。
為了實(shí)現(xiàn)這個(gè)目標(biāo),做好身份和訪問(wèn)管理 (IAM) 就變得非常重要。IAM 可以幫助企業(yè)解決一些簡(jiǎn)單但非常重要的安全問(wèn)題:用戶的訪問(wèn)權(quán)限和級(jí)別是什么?什么時(shí)候可以訪問(wèn)?如何對(duì)權(quán)限進(jìn)行標(biāo)識(shí)?很多開發(fā)人員在開發(fā)過(guò)程中經(jīng)常會(huì)忽略應(yīng)用系統(tǒng)和IAM的連接協(xié)同,但加強(qiáng)訪問(wèn)控制和權(quán)限分離已成為實(shí)現(xiàn)持續(xù)安全開發(fā)環(huán)境的基礎(chǔ)。
保護(hù) CI/CD 管道應(yīng)用安全需要完善很多方面,開發(fā)團(tuán)隊(duì)還應(yīng)該根據(jù)組織的業(yè)務(wù)需求和應(yīng)用特點(diǎn)來(lái)確定風(fēng)險(xiǎn)的優(yōu)先級(jí)。通過(guò)基于風(fēng)險(xiǎn)的安全監(jiān)控安全方法,可以使安全團(tuán)隊(duì)將應(yīng)用系統(tǒng)風(fēng)險(xiǎn)管控落實(shí)到軟件開發(fā)流程的每個(gè)階段。基于風(fēng)險(xiǎn)的安全監(jiān)控將確保開發(fā)團(tuán)隊(duì)能夠抵御針對(duì) CI/CD 管道的各種攻擊,并引導(dǎo)企業(yè)整體網(wǎng)絡(luò)風(fēng)險(xiǎn)管理計(jì)劃向更好的方向發(fā)展。