什么是DevSecOps?為什么很難做好
譯文【51CTO.com快譯】DevSecOps是指先在應(yīng)用程序開(kāi)發(fā)的生命周期中引入安全性,從而盡可能地減少漏洞并使安全性更接近IT和業(yè)務(wù)目標(biāo)。
DevSecOps定義
DevSecOps是軟件行業(yè)的一種文化轉(zhuǎn)變,旨在將安全性納入現(xiàn)代應(yīng)用程序開(kāi)發(fā)和部署所特有的快速發(fā)布周期中,也稱為DevOps運(yùn)動(dòng)。接受這種左傾心態(tài)需要組織彌合開(kāi)發(fā)團(tuán)隊(duì)和安全團(tuán)隊(duì)之間通常存在的鴻溝,以至于許多安全流程都由開(kāi)發(fā)團(tuán)隊(duì)自己進(jìn)行自動(dòng)化和處理。
DevSecOps與傳統(tǒng)軟件開(kāi)發(fā)有何不同?
傳統(tǒng)上,主要的軟件開(kāi)發(fā)人員過(guò)去每隔幾個(gè)月甚至幾年發(fā)布一次新版本的應(yīng)用程序。這為代碼提供了足夠的時(shí)間來(lái)保證質(zhì)量和進(jìn)行安全測(cè)試,這些過(guò)程由獨(dú)立的內(nèi)部或外部合同的專門團(tuán)隊(duì)執(zhí)行。
但是,在過(guò)去的十年中,公共云、容器和微服務(wù)模型的興起,將整體式應(yīng)用程序分解為獨(dú)立運(yùn)行的較小部分。這種故障還直接影響了軟件的開(kāi)發(fā)方式,導(dǎo)致了滾動(dòng)發(fā)布和敏捷開(kāi)發(fā)實(shí)踐,在這些實(shí)踐中,新功能和代碼不斷以快速的步伐投入生產(chǎn)。其中許多流程已通過(guò)使用新技術(shù)和新工具而實(shí)現(xiàn)了自動(dòng)化,從而使公司能夠更快地進(jìn)行創(chuàng)新并保持競(jìng)爭(zhēng)優(yōu)勢(shì)。
云,容器和微服務(wù)的進(jìn)步也導(dǎo)致了業(yè)界所謂的DevOps文化的出現(xiàn),開(kāi)發(fā)人員現(xiàn)在可以在不等待單獨(dú)的基礎(chǔ)架構(gòu)團(tuán)隊(duì)為他們完成的情況下配置和擴(kuò)展所需的基礎(chǔ)架構(gòu)?,F(xiàn)在,所有主要的云提供商都提供了API和配置工具,這些API和配置工具允許使用部署模板將基礎(chǔ)結(jié)構(gòu)配置視為代碼。
盡管DevOps文化為軟件開(kāi)發(fā)帶來(lái)了很多創(chuàng)新,但是安全性往往無(wú)法跟上代碼的生產(chǎn)和發(fā)布的新速度。DevSecOps旨在糾正這一問(wèn)題,并將安全性測(cè)試完全集成到持續(xù)集成(CI)和持續(xù)交付(CD)管道中,同時(shí)也積累了開(kāi)發(fā)團(tuán)隊(duì)所需的知識(shí)和技能,以便可以測(cè)試和修復(fù)結(jié)果也可以在內(nèi)部完成。
構(gòu)成真正的DevSecOps環(huán)境的三個(gè)關(guān)鍵因素是:
· 安全測(cè)試由開(kāi)發(fā)團(tuán)隊(duì)完成。
· 測(cè)試期間發(fā)現(xiàn)的問(wèn)題由開(kāi)發(fā)團(tuán)隊(duì)管理。
· 解決這些問(wèn)題的責(zé)任在于開(kāi)發(fā)團(tuán)隊(duì)。
應(yīng)用程序安全測(cè)試公司Veracode的聯(lián)合創(chuàng)始人兼首席技術(shù)官Chris Wysopal告訴CSO:“最后一個(gè)需要花費(fèi)一些時(shí)間,但是我認(rèn)為那是應(yīng)用程序安全真正成為DevSecOps的時(shí)候,不需要一個(gè)單獨(dú)的團(tuán)隊(duì)了。”
實(shí)現(xiàn)真正的安全/開(kāi)發(fā)集成
根據(jù)Wysopal的說(shuō)法,實(shí)現(xiàn)最后一步之所以很困難,是因?yàn)殚_(kāi)發(fā)人員必須建立無(wú)需外部指導(dǎo)即可修復(fù)與安全相關(guān)的bug所需的技能,而這需要時(shí)間。許多團(tuán)隊(duì)通過(guò)在開(kāi)發(fā)團(tuán)隊(duì)中嵌入所謂的安全冠軍來(lái)達(dá)到目標(biāo)。這是一個(gè)在應(yīng)用程序安全方面具有專業(yè)知識(shí)的人,并且比整個(gè)團(tuán)隊(duì)中的大多數(shù)人接受了更高級(jí)的培訓(xùn),即使對(duì)整個(gè)團(tuán)隊(duì)進(jìn)行安全編程實(shí)踐的培訓(xùn)也應(yīng)該是過(guò)程的一部分。此人可以查看安全修補(bǔ)程序,以確保它們是正確的。
這并不意味著安全擁護(hù)者不能在團(tuán)隊(duì)之外尋求專家意見(jiàn)。例如:向該公司的應(yīng)用程序安全測(cè)試提供商提供服務(wù),后者可能會(huì)為客戶提供咨詢服務(wù)。在特殊情況下,這不是正常的情況。這與擁有獨(dú)立的開(kāi)發(fā)和安全團(tuán)隊(duì),以及將一個(gè)或多個(gè)安全團(tuán)隊(duì)成員嵌入開(kāi)發(fā)團(tuán)隊(duì)不同。
根據(jù)DevOps自動(dòng)化和開(kāi)源治理公司Sonatype的CTO Brian Fox的說(shuō)法,開(kāi)發(fā)和安全性之間的集成也需要在管理層進(jìn)行。Fox告訴CSO:“當(dāng)安全任務(wù)與完全集成到開(kāi)發(fā)中而不完全融合時(shí),我認(rèn)為您沒(méi)有得到正確的選擇。有時(shí)候,即使人們?cè)谕粋€(gè)團(tuán)隊(duì)中工作,您也會(huì)遇到目標(biāo)不同的管理層沖突。這是許多組織中發(fā)生的事情的一個(gè)要素。”
Fox表示,這是在質(zhì)量檢查之前發(fā)生的,那里曾經(jīng)有一個(gè)質(zhì)量檢查經(jīng)理和工程經(jīng)理,他們?cè)谝黄鸸ぷ?,但是總有一些部落主義在進(jìn)行。“一旦這種情況消失了,質(zhì)量保證已成為開(kāi)發(fā)團(tuán)隊(duì)人員所做工作的一部分,您就不再看到我們與他們的心態(tài),而我們?cè)诎踩苑矫孢€沒(méi)有到位。我認(rèn)為這就是很多公司掙扎。”
DevSecOps測(cè)試和工具
硅谷科技公司在早期采用DevSecOps方面處于領(lǐng)先地位,但是當(dāng)時(shí)可用的安全測(cè)試工具對(duì)開(kāi)發(fā)人員并不友好。開(kāi)發(fā)人員需要命令行工具,這些工具可以自動(dòng)化,以便他們可以輕松地調(diào)整各種配置,并且可以輕松地將其輸出導(dǎo)入錯(cuò)誤跟蹤器。而傳統(tǒng)的安全掃描程序在設(shè)計(jì)時(shí)就考慮了安全團(tuán)隊(duì)和CISO,其目標(biāo)是治理、安全性、政策合規(guī)和風(fēng)險(xiǎn)管理。
慢慢地出現(xiàn)了由開(kāi)發(fā)人員為開(kāi)發(fā)人員創(chuàng)建的新工具,這些新工具已集成到開(kāi)發(fā)環(huán)境和CI / CD工作流程中。有些是開(kāi)源的,有些是圍繞它們構(gòu)建的啟動(dòng)業(yè)務(wù)模型,但是當(dāng)它們解決了開(kāi)發(fā)人員的需求時(shí),他們并沒(méi)有真正滿足CISO的需求。
如果使用了許多不同的開(kāi)放源代碼工具,則開(kāi)發(fā)團(tuán)隊(duì)可能會(huì)覺(jué)得他們正在涵蓋他們認(rèn)為需要涵蓋的內(nèi)容。Wysopal說(shuō),從治理的角度來(lái)看,安全團(tuán)隊(duì)很難將所有這些不同的分散工具映射到公司的策略。
在過(guò)去的兩年中,傳統(tǒng)的應(yīng)用程序安全供應(yīng)商已更改其產(chǎn)品,以解決這兩種用例:提供CISO所需的分析和報(bào)告,并具有開(kāi)發(fā)人員期望的靈活性和易用性。一些針對(duì)諸如GitHub之類的開(kāi)發(fā)人員的基于云的服務(wù)提供商已開(kāi)始直接在其服務(wù)中添加安全性測(cè)試。當(dāng)它不能作為本機(jī)功能使用時(shí),通??梢宰鳛榈谌焦?yīng)商的集成在服務(wù)市場(chǎng)中使用。
“在過(guò)去的兩年中,我們看到了事情的搖擺朝著無(wú)所不包的單一套件的方向發(fā)展。” Fox警告說(shuō),當(dāng)下一個(gè)顛覆性技術(shù)問(wèn)世時(shí),這種整合將在某個(gè)時(shí)候逆轉(zhuǎn),企業(yè)需要為此做好準(zhǔn)備。套件的問(wèn)題在于,它們可以在組織需要的一項(xiàng)或多項(xiàng)事情上表現(xiàn)出色,但隨后包含了其他可用的功能,因?yàn)樗鼈兪请S包免費(fèi)提供的。隨著時(shí)間的流逝,這可能導(dǎo)致組織內(nèi)部的開(kāi)發(fā)人員群體破裂,他們將開(kāi)始測(cè)試和使用比公司認(rèn)可的套件更好地滿足其需求的其他工具。
從治理的角度來(lái)看,擁有不受管理的團(tuán)隊(duì)是不好的,但是公司需要意識(shí)到,從現(xiàn)在起的一兩年內(nèi),這種情況將不可避免地發(fā)生,盡管嘗試限制工具的使用,但總會(huì)有一些開(kāi)發(fā)人員來(lái)做自己的事情。“最早采用云技術(shù)的人有時(shí)是規(guī)模更大的組織中的個(gè)人團(tuán)隊(duì),他們?cè)诜瘩g購(gòu)買計(jì)算機(jī)所需的時(shí)間。” Fox說(shuō)到。
DevSecOps的采用
根據(jù)Wysopal的說(shuō)法,越來(lái)越多的公司正在將自動(dòng)化安全掃描集成為CI / CD管道的一部分,但是由于他所說(shuō)的“安全債務(wù)”(即導(dǎo)致生產(chǎn)中存在的漏洞數(shù)量),結(jié)果可能不會(huì)立即顯現(xiàn)。因?yàn)殚_(kāi)發(fā)人員選擇不修復(fù)它們。
發(fā)生這種情況的原因可能多種多樣,包括無(wú)法立即對(duì)其進(jìn)行修復(fù),由于存在其他緩解措施而沒(méi)有計(jì)劃對(duì)其進(jìn)行修復(fù),或者由于它們的嚴(yán)重性較低而沒(méi)有對(duì)其進(jìn)行修復(fù)。
Veracode 發(fā)布的2019年軟件安全狀態(tài)報(bào)告中,基于一年中,其對(duì)85,000個(gè)應(yīng)用程序執(zhí)行的掃描收集的數(shù)據(jù)結(jié)果顯示,應(yīng)用程序中發(fā)現(xiàn)漏洞的平均修復(fù)時(shí)間為171天,而平均時(shí)間為59天。但是,這會(huì)因應(yīng)計(jì)的安全債務(wù)而歪曲,并且修復(fù)的平均時(shí)間實(shí)際上保持不變。
將掃描結(jié)果與特定應(yīng)用程序的掃描頻率相關(guān)聯(lián)時(shí),頻率增加表明CI / CD工作流程中集成了自動(dòng)掃描。數(shù)據(jù)顯示,每天掃描的應(yīng)用程序的中位時(shí)間為19天,而68天為對(duì)于每月掃描的應(yīng)用程序。這表明掃描頻率越高,修補(bǔ)漏洞的可能性就越大。
該公司在報(bào)告中總結(jié)道:“與金融債務(wù)一樣,要擺脫擔(dān)保債務(wù),必然需要改變習(xí)慣以償還余額。過(guò)去幾年中,軟件開(kāi)發(fā)和IT運(yùn)營(yíng)(DevOps)的集成以及安全性在這些流程中的集成(通常稱為DevSecOps)無(wú)疑已經(jīng)改變了習(xí)慣。”
向DevSecOps進(jìn)行真正的文化更改的另一個(gè)好處是,代碼中存在的嚴(yán)重漏洞的數(shù)量也應(yīng)該減少。Veracode的數(shù)據(jù)顯示,與10年前相比,沒(méi)有漏洞的應(yīng)用程序的總體百分比實(shí)際上有所下降,這表明情況已經(jīng)惡化,但是沒(méi)有高嚴(yán)重漏洞的應(yīng)用程序的百分比實(shí)際上已經(jīng)從66%增加到80%。
??怂拐f(shuō):“我看到許多組織仍在為這種模式而苦苦掙扎。” “他們正在朝著這個(gè)持續(xù)的開(kāi)發(fā)環(huán)境邁進(jìn),他們擁有基礎(chǔ)架構(gòu)和CI,并且正在使用容器。然后,他們有一個(gè)應(yīng)用程序安全團(tuán)隊(duì),他們將在以后運(yùn)行掃描,生成報(bào)告,有時(shí)甚至是紙質(zhì)打印報(bào)告-并將它們帶入開(kāi)發(fā)中,而不是利用能夠授權(quán)開(kāi)發(fā)的工具來(lái)避免這些錯(cuò)誤。我看到的大多數(shù)組織仍然屬于我們,他們,開(kāi)發(fā)人員或安全性方面。”
也就是說(shuō),即使使用DevSecOps,安全專家也仍然需要執(zhí)行某些任務(wù),而手動(dòng)測(cè)試仍然可以發(fā)揮作用。例如:使用全自動(dòng)掃描很難發(fā)現(xiàn)邏輯缺陷或設(shè)計(jì)缺陷。
Wysopal說(shuō):“我們開(kāi)始看到的是,手動(dòng)測(cè)試不是一年一次或每年兩次。“它具有更大的迭代性。它是在DevOps流程中進(jìn)行更多工作的,其中可能需要進(jìn)行為期兩周的沖刺,而他們正在執(zhí)行一項(xiàng)新功能,該功能具有安全性,因?yàn)闉榇诉M(jìn)行的少量手動(dòng)測(cè)試如果安全支持者對(duì)手動(dòng)測(cè)試有足夠的了解,并且可以滿足開(kāi)發(fā)團(tuán)隊(duì)自己進(jìn)行的目標(biāo),那么有時(shí)他們可以做到。
原文地址:https://www.csoonline.com/article/3245748/what-is-devsecops-developing-more-secure-applications.html
作者:Lucian Constantin
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】