如何在整個(gè)DevOps中建立分層安全?
將我們的DevSecOps方法分成多層,可以在對強(qiáng)大安全性的需求與快速移動(dòng)并經(jīng)常部署的需求之間找到適當(dāng)?shù)钠胶狻?/p>
DevOps運(yùn)動(dòng)改變了我們集成和發(fā)布的方式。它使我們從緩慢的發(fā)行周期(有時(shí)是每年的發(fā)行周期)過渡到每天(有時(shí)甚至是每小時(shí))發(fā)行。我們能夠編寫代碼并幾乎立即看到生產(chǎn)中的變化。DevOps是突破壁壘并支持對市場變化、客戶需求快速響應(yīng)的令人驚嘆的第一步,但是仍然需要打破一堵重要的壁壘,我們需要折中的一個(gè)重要群體:安全運(yùn)營(SecOps)。
為了在生產(chǎn)變更持續(xù)集成和部署(CI/CD)中包括這個(gè)至關(guān)重要的小組,我們將DevOps重新定義為DevSecOps。我們在這項(xiàng)工作中面臨的挑戰(zhàn)與在將開發(fā)和運(yùn)營整合在一起時(shí)所面臨的挑戰(zhàn)相同:開發(fā)人員希望快速行動(dòng)并經(jīng)常進(jìn)行更改,而運(yùn)營則需要穩(wěn)定和不頻繁的更改。安全團(tuán)隊(duì)傾向于支持穩(wěn)定性和不頻繁的更改,因?yàn)楦目赡芤馕吨貜?fù)安全測試并再次對環(huán)境進(jìn)行認(rèn)證。
當(dāng)我們以DevOps的速度前進(jìn)時(shí),我們?nèi)绾纹谕@些團(tuán)隊(duì)每天或每周重做他們的工作?
安全分層
在深入探討這個(gè)問題之前,我們應(yīng)該談?wù)勔环N關(guān)鍵的安全實(shí)踐:分層安全或深度防御。分層安全是一種應(yīng)用多種安全措施的實(shí)踐,每一層都與前一層和下一層重疊,以創(chuàng)建一個(gè)安全控制網(wǎng)絡(luò),這些網(wǎng)絡(luò)可以一起工作以保護(hù)技術(shù)系統(tǒng)。
在分層安全方法中,公司通過使用諸如WAN網(wǎng)關(guān)防火墻和靜態(tài)數(shù)據(jù)加密之類的訪問控制來減輕對技術(shù)系統(tǒng)的入侵。控件列表很廣泛,但要點(diǎn)是,沒有任何控件可以充分保護(hù)技術(shù)系統(tǒng)。同樣的方法適用于對我們的應(yīng)用程序執(zhí)行安全性分析。
與公司的應(yīng)用程序安全團(tuán)隊(duì)聯(lián)系,詢問他們使用哪些掃描工具來確保編寫的應(yīng)用程序安全。可能的是,他們不會(huì)使用一種工具進(jìn)行答復(fù),因?yàn)闆]有一種工具可以全部完成。相反,他們可能會(huì)為您提供他們使用或期望開發(fā)團(tuán)隊(duì)使用的工具列表或工具類型。
這使我們回到了之前的問題:在進(jìn)行所有這些掃描并使用所有這些工具時(shí),我們?nèi)绾纹谕S持一個(gè)持續(xù)的部署周期?這是一項(xiàng)艱巨的任務(wù)。其中一些掃描和工具需要花費(fèi)數(shù)小時(shí),數(shù)天或更長時(shí)間。
內(nèi)聯(lián)掃描
盡管某些安全工具和掃描器確實(shí)需要很長的時(shí)間才能運(yùn)行,但仍有一些更快的工具可以在開發(fā)生命周期的早期使用,以形成我們的第一層DevSecOps。這就是左移背后的想法:將流程從開發(fā)生命周期的末尾(或右側(cè))移到開始或中間,即再向左移。
第一層應(yīng)包括需要幾秒鐘(或幾分鐘)運(yùn)行的工具和掃描程序。一些常見的示例是代碼lint,單元測試,SonarQube之類的靜態(tài)代碼分析器,OWASP Dependency Checker等第三方依賴項(xiàng)漏洞檢查,以及集成測試的子集。
您可能會(huì)問:“整理代碼和運(yùn)行單元測試如何適合DevSecOps?” 軟件中的錯(cuò)誤可以為正在尋找的對手提供完美的解決方案。例如,OWASP在過去的兩個(gè)關(guān)鍵Web應(yīng)用程序安全報(bào)告(2013年和2017年) 中將代碼注入列為第一漏洞。單元測試和靜態(tài)代碼分析可以幫助捕獲我們的一些錯(cuò)誤,并可能有助于防止代碼中的安全漏洞。
由于這些工具掃描只需要很少的時(shí)間,因此最好將它們推到開發(fā)生命周期中的最左側(cè)。當(dāng)開發(fā)人員將代碼推送到我們的Git存儲(chǔ)庫并打開請求時(shí),這些工具和掃描程序?qū)⑦\(yùn)行以確保代碼在合并之前通過。除了確保我們的主干分支保持可構(gòu)建狀態(tài)外,在開發(fā)生命周期的早期就擁有這些工具還可以盡早且經(jīng)常向開發(fā)人員提供反饋。
部署前掃描
DevSecOps的第二層與我們的部署管道內(nèi)聯(lián)運(yùn)行的工具,需要幾分鐘甚至一小時(shí)才能完成。這可能包括更深入的第三方漏洞掃描,Docker鏡像掃描和惡意軟件掃描。
該層的關(guān)鍵之一是,掃描器和工具在生成構(gòu)建工件之后且在將它們存儲(chǔ)到Artifactory或Amazon Elastic Container Registry等任何位置之前都可以運(yùn)行。更重要的是,此層中的任何故障都應(yīng)立即停止當(dāng)前部署,并向開發(fā)團(tuán)隊(duì)提供反饋。
另一個(gè)關(guān)鍵是在這一層以及所有未來的層中實(shí)現(xiàn)并行化。開發(fā)人員希望盡快部署他們的更改,并且連續(xù)運(yùn)行多次掃描(每次掃描可能長達(dá)一個(gè)小時(shí))會(huì)不必要地減慢部署周期。通過并行運(yùn)行這些工具,部署速度的降低等于運(yùn)行時(shí)間最長的掃描。
部署后掃描
DevSecOps的下一層包括在將代碼部署到預(yù)生產(chǎn)環(huán)境之后我們可以使用的工具和掃描程序。這些工具可能包括性能和集成測試以及應(yīng)用程序掃描程序,例如OWASP Zap。我們應(yīng)該努力使這一層快速運(yùn)行,希望在一小時(shí)或更短的時(shí)間內(nèi)運(yùn)行,以向開發(fā)人員提供快速反饋并限制對CD流程的影響。
為確保我們不會(huì)錯(cuò)誤地將易受攻擊的代碼部署到生產(chǎn)中,此層應(yīng)作為CD管道的一部分運(yùn)行,目的是在任何掃描程序發(fā)現(xiàn)漏洞或以下情況時(shí)刪除工件,回滾環(huán)境。否則失敗。
根據(jù)行業(yè),安全性和法規(guī)要求,我們可以在此層成功完成后自動(dòng)將部署到生產(chǎn)中。管道中應(yīng)該已經(jīng)有足夠的自動(dòng)掃描和測試,可以合理地證明應(yīng)用程序的安全性和堅(jiān)固性。
持續(xù)掃描
我們討論的大多數(shù)掃描儀和工具都已嵌入CI/CD管道中。我們的目標(biāo)是在平衡這些工具對CI/CD管道的時(shí)間線的影響的同時(shí),為應(yīng)用程序的安全性提供合理的保證。
DevSecOps的最后一層是持續(xù)續(xù)掃描或持續(xù)續(xù)安全性(CS)。正如持續(xù)集成,測試和部署是DevOps的代名詞一樣,持續(xù)安全性是DevSecOps的代名詞和基石。該層包括Nessus,Qualys,IBM App Scan等工具,以及其他基礎(chǔ)結(jié)構(gòu),應(yīng)用程序和網(wǎng)絡(luò)掃描工具。
CS并非嵌入在CI/CD管道中,而是作為異步的,并向開發(fā)人員提供持續(xù)的反饋。開發(fā)人員如何接收和響應(yīng)該反饋需要進(jìn)行討論和達(dá)成共識。開發(fā)人員將在收到任何反饋后立即對其進(jìn)行處理,并在較長的周轉(zhuǎn)時(shí)間內(nèi)解決。
這些工具和掃描程序的啟動(dòng)方式以及運(yùn)行頻率是利益相關(guān)者應(yīng)同意CS的另一個(gè)方面。部署完成后,可以通過CI/CD管道啟動(dòng)具有API的工具。其他可能根據(jù)需要或基于一定的時(shí)間節(jié)奏來完成。無論如何完成,重要的是這些工具和掃描儀不會(huì)僅運(yùn)行一次,甚至每年運(yùn)行一次或兩次。相反,這些工具和掃描儀應(yīng)盡可能頻繁地運(yùn)行,并應(yīng)對應(yīng)用程序有意義。
結(jié)論
正如我們不能通過使用一兩個(gè)工具或安全性原則來確保技術(shù)系統(tǒng)的安全性一樣,我們應(yīng)用程序的安全性也不能僅取決于一兩個(gè)工具或掃描儀的類型。它采用分層的方法來應(yīng)用不同的工具和掃描程序,以合理地確保我們的應(yīng)用程序及其運(yùn)行的基礎(chǔ)結(jié)構(gòu)的安全性。
關(guān)于我們澤陽,DevOps領(lǐng)域?qū)嵺`者。專注于企業(yè)級DevOps運(yùn)維開發(fā)技術(shù)實(shí)踐分享,主要以新Linux運(yùn)維技術(shù)、DevOps技術(shù)課程為主。豐富的一線實(shí)戰(zhàn)經(jīng)驗(yàn),課程追求實(shí)用性獲得多數(shù)學(xué)員認(rèn)可。課程內(nèi)容均來源于企業(yè)應(yīng)用,在這里既學(xué)習(xí)技術(shù)又能獲取熱門技能,歡迎您的到來!(微信ID: devopsvip)


2023-07-10 11:14:28




