如何將DevSecOps轉(zhuǎn)換為SecDevOps?Parasoft給你支招!
我們?nèi)绾卧谖幕细淖兘鉀Q安全問(wèn)題的方式?我們首先用它應(yīng)得的重力來(lái)處理它,然后從一開(kāi)始就開(kāi)始建造它。
毫無(wú)疑問(wèn),DevOps和安全性是軟件組織的首要考慮因素,將安全性集成到DevOps中的結(jié)果是引入了SecDevOps和DevSecOps這兩個(gè)術(shù)語(yǔ)。將安全性集成到DevOps中的結(jié)果已被創(chuàng)造為SecDevOps和DevSecOps。盡管可互換使用,但這兩個(gè)詞的順序很重要。為什么這么說(shuō)?因?yàn)樵诖蠖鄶?shù)情況下,在部署過(guò)程結(jié)束時(shí),安全仍然是“附加”的。在這篇文章中,我將討論當(dāng)安全性是開(kāi)發(fā)的一個(gè)組成部分時(shí),從軟件開(kāi)發(fā)過(guò)程的開(kāi)始而不是作為交付管道末端的門(mén)戶(hù),如何更容易實(shí)現(xiàn)安全軟件的交付。
DevSecOps中的安全性如何?
盡管人們?cè)絹?lái)越關(guān)注安全性,但對(duì)于軟件團(tuán)隊(duì)來(lái)說(shuō),將安全性構(gòu)建到流程和管道中是一項(xiàng)挑戰(zhàn)。在預(yù)算內(nèi)按時(shí)完成項(xiàng)目的壓力往往會(huì)超過(guò)其他考慮因素。因此,我們傾向于將安全性作為發(fā)布候選程序的最后一步添加,如下所示:
傳統(tǒng)的DevSecOps安全方法
由于安全知識(shí)通常很少,僅限于組織中的少數(shù)人,因此這些人通常被分組為集中安全團(tuán)隊(duì)。安全團(tuán)隊(duì)的任務(wù)是使用他們的“魔術(shù)盒”來(lái)測(cè)試產(chǎn)品,以便在部署之前發(fā)現(xiàn)候選版本中的漏洞。當(dāng)團(tuán)隊(duì)不可避免地發(fā)現(xiàn)漏洞時(shí),他們會(huì)將“壞消息”傳回給開(kāi)發(fā)團(tuán)隊(duì)......但是,由于開(kāi)發(fā)團(tuán)隊(duì)沒(méi)有關(guān)于如何使用安全團(tuán)隊(duì)正在使用的工具的安全培訓(xùn)或知識(shí),安全團(tuán)隊(duì)通常被視為“壞人”,因?yàn)樗麄儸F(xiàn)在因?yàn)椤耙恍┌踩┒础倍七t發(fā)布。那么團(tuán)隊(duì)的典型反應(yīng)是什么?
傳統(tǒng)方法會(huì)導(dǎo)致生產(chǎn)中出現(xiàn)延遲發(fā)布和/或安全漏洞
讓我們面對(duì)的是,很難將重要的安全修復(fù)、控制和編碼標(biāo)準(zhǔn)納入到一個(gè)項(xiàng)目中,這個(gè)項(xiàng)目對(duì)開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō)是“已經(jīng)完成和清理過(guò)的”。那會(huì)發(fā)生什么呢?該產(chǎn)品帶著已知的、未知的安全漏洞走出家門(mén),并可能承諾“在下一個(gè)版本中修復(fù)它們”。這就是當(dāng)你把安全性放在開(kāi)發(fā)之后-“Dev”,然后是“SEC”,然后是“Ops”。雖然這不是意圖,但這是許多組織的現(xiàn)實(shí)??紤]下面描述的更好的方法。
SecDevOps的安全性如何?
安全控制、指導(dǎo)方針、編碼標(biāo)準(zhǔn)和策略必須完全集成到軟件開(kāi)發(fā)過(guò)程中。這是通過(guò)從一開(kāi)始就將安全性作為過(guò)程和管道的一部分來(lái)完成的-“SEC”然后是“Dev”,然后是“Ops”。安全團(tuán)隊(duì)(或者是專(zhuān)門(mén)從事安全工作的架構(gòu)或高級(jí)開(kāi)發(fā)人員)預(yù)先為團(tuán)隊(duì)定義了必要的策略。
這些策略可能包括安全編碼標(biāo)準(zhǔn),避免不安全API和加密不良的規(guī)則,使用靜態(tài)和動(dòng)態(tài)分析的指令以及測(cè)試指南。目標(biāo)是讓開(kāi)發(fā)人員努力使用更安全的軟件作為日常工作的一部分,自動(dòng)化有助于實(shí)現(xiàn)這一目標(biāo)。
通過(guò)自動(dòng)化,您可以將您的方法轉(zhuǎn)移到SecDevOps策略的安全性,如下所示:
由于安全性現(xiàn)已在開(kāi)發(fā)階段開(kāi)始實(shí)施,因此團(tuán)隊(duì)自然會(huì)更加熟練地掌握安全性,并且在管道末端將發(fā)現(xiàn)更少的安全漏洞。
然后可以調(diào)查確實(shí)通過(guò)的漏洞,根本原因分析的結(jié)果用于改進(jìn)安全策略和指南 - 從根本上改善每個(gè)循環(huán)進(jìn)展的結(jié)果。
推動(dòng)對(duì)政策的迭代改進(jìn)會(huì)減少對(duì)后期周期升級(jí)的干擾,如下所示:
這種增量和集成方法比在項(xiàng)目結(jié)束時(shí)嘗試進(jìn)行安全審計(jì)要好得多。
你是如何實(shí)現(xiàn)的?
安全性無(wú)法為開(kāi)發(fā)人員增加額外的需求,但是如何管理這項(xiàng)工作的影響是導(dǎo)致按時(shí),安全的產(chǎn)品與后期不安全的產(chǎn)品之間產(chǎn)生差異的原因。一個(gè) 關(guān)鍵的要求是將安全集成到現(xiàn)有的開(kāi)發(fā)過(guò)程中,您可以通過(guò)整合Parasoft公司的成套CWE兼容測(cè)試工具,使安全質(zhì)量的一部分,整個(gè)工作流程做。
通過(guò)以安全為中心的工作流程將安全性作為質(zhì)量的一部分
工作流程從安全編碼策略開(kāi)始。架構(gòu)師或負(fù)責(zé)人創(chuàng)建一個(gè)配置(可能基于編碼指南,如CERT,CWE,OWASP,UL-2900或PCI DSS),以便團(tuán)隊(duì)的其他成員直接在他們的IDE中使用。這使得開(kāi)發(fā)人員能夠在提交源代碼控制之前在其計(jì)算機(jī)上本地檢查代碼 - 在更便宜和更容易的情況下捕獲和修復(fù)安全違規(guī)。
然后,通過(guò)作為構(gòu)建過(guò)程的一部分執(zhí)行的分析來(lái)利用相同的配置。這種全面的分析超出了開(kāi)發(fā)人員本地修改代碼的范圍,并提供了一個(gè)安全網(wǎng)來(lái)控制交付管道,以確保不安全的代碼不會(huì)被提升到后期階段。
最后,分析結(jié)果通過(guò)集中報(bào)告和分析儀表板發(fā)送回開(kāi)發(fā)人員的IDE,可以跟蹤進(jìn)度,進(jìn)行過(guò)程更正以及實(shí)時(shí)生成審計(jì)報(bào)告。
完整的SecDevOps工作流程如下所示:
管理人員和安全主管現(xiàn)在可以在中央儀表板中根據(jù)安全標(biāo)準(zhǔn)(如CWE)評(píng)估項(xiàng)目,如下所示:
這些儀表板可以顯示趨勢(shì)信息和回答問(wèn)題,例如“項(xiàng)目是否在改善或變得更糟?”或“代碼的哪些區(qū)域?qū)е铝舜蠖鄶?shù)問(wèn)題?”
能夠回答這些問(wèn)題和其他問(wèn)題,并采取行動(dòng),將開(kāi)發(fā)團(tuán)隊(duì)從DevSecOps轉(zhuǎn)變?yōu)镾ecDevOps。
總結(jié)
盡管可以互換使用DevSecOps和SecDevOps,但詞的順序與詞暗示的工具,技術(shù)和過(guò)程的含義同樣重要。在發(fā)布產(chǎn)品之前,安全性通常被作為附加或門(mén)控過(guò)程留下,但是當(dāng)產(chǎn)品出門(mén)時(shí),很難解決安全問(wèn)題。像SecDevOps一樣,向左移動(dòng)安全性是成功的關(guān)鍵。安全性必須是每個(gè)開(kāi)發(fā)人員日常工作流程的一部分,并集成到軟件管道中。Parasoft自動(dòng)化安全控制和策略的左移,以構(gòu)建管道的安全性,同時(shí)降低SecDevOps(和DevSecOps?。┑挠绊懞惋L(fēng)險(xiǎn)。
想要了解Parasoft、Parasoft SOAtest、Parasoft Virtualize更多信息或資源的朋友,請(qǐng)點(diǎn)擊這里~