不可錯(cuò)過(guò)!DevSecOps的完整指南
譯文【51CTO.com快譯】對(duì)于一些企業(yè)來(lái)說(shuō),即使其員工不是軟件開(kāi)發(fā)人員,也要了解DevSecOps的基礎(chǔ)知識(shí)。這是因?yàn)榭梢蕴岣咂髽I(yè)的安全性。長(zhǎng)期以來(lái),很多企業(yè)關(guān)注加快應(yīng)用程序開(kāi)發(fā)以盡快部署新軟件,但這常常是以犧牲安全性為代價(jià)的。
不幸的是,如果在這個(gè)階段發(fā)現(xiàn)應(yīng)用程序存在安全問(wèn)題,就意味著需要重寫(xiě)大量的代碼,這對(duì)開(kāi)發(fā)人員來(lái)說(shuō)是一項(xiàng)非常復(fù)雜、困難和耗時(shí)的任務(wù)。
但是DevSecOps指標(biāo)和方法已經(jīng)成為開(kāi)發(fā)人員處理軟件開(kāi)發(fā)生命周期(SDLC)的重要更新。通過(guò)接受DevOps的快速發(fā)展和SecOps的嚴(yán)格監(jiān)督,它們可以合并成一個(gè)整體。這種做法使開(kāi)發(fā)人員能夠在啟動(dòng)項(xiàng)目前構(gòu)建安全的軟件。
預(yù)計(jì)軟件交付、安全和基礎(chǔ)設(shè)施的新方法在2021年將成為DevOps的發(fā)展趨勢(shì)。基礎(chǔ)設(shè)施自動(dòng)化工具的成熟,以及更好的安全工具,以及數(shù)字化轉(zhuǎn)型的全面接受,意味著DevOps將獲得更多的驅(qū)動(dòng)力和可見(jiàn)性。
本文將介紹有關(guān)DevSecOps的知識(shí),如何在軟件管道中實(shí)現(xiàn)DevOps安全指標(biāo)的一些指南和技巧,越來(lái)越多的開(kāi)發(fā)人員以這種方式工作的原因,以及DevSecOps的實(shí)現(xiàn)如何讓員工產(chǎn)生更好的團(tuán)隊(duì)意識(shí)、更快的軟件開(kāi)發(fā)生命周期(SDLC)、更高的生產(chǎn)率和更好的安全性。
DevOps安全
要集成到DevOps實(shí)踐中以實(shí)現(xiàn)DevSecOps軟件開(kāi)發(fā)方法,最常見(jiàn)的建議是:
- 持續(xù)關(guān)注安全性,并將其構(gòu)建到應(yīng)用程序中。
- 使用自動(dòng)和人工掃描流程來(lái)確保開(kāi)源和第三方組件的安全。
- 始終遵循安全編碼準(zhǔn)則。
- 驗(yàn)證所有輸入數(shù)據(jù)、響應(yīng)和內(nèi)容類(lèi)型。
- 警告不尋常的行為,并分析其潛在的攻擊跡象。
- 利用人工和自動(dòng)的安全測(cè)試和保護(hù)。
- 利用SAST工具創(chuàng)建安全可靠的代碼。
對(duì)DevSecOps的需求
Cloud Defense公司的DevOps專(zhuān)家Barbara Ericson指出,“DevOps主要關(guān)注通過(guò)降低構(gòu)建(發(fā)布)的失敗率來(lái)更快地為終端用戶(hù)提供軟件應(yīng)用程序。DevOps還強(qiáng)調(diào)了通過(guò)可測(cè)量的質(zhì)量控制實(shí)現(xiàn)快速周轉(zhuǎn)所需的工具。”
然而,“DevSecOps”也將軟件開(kāi)發(fā)和IT運(yùn)營(yíng)與安全元素整合到一個(gè)共同的角色中。這種組合強(qiáng)調(diào)了在開(kāi)發(fā)軟件時(shí)三個(gè)重點(diǎn)之間的平衡。
DevSecOps還可以發(fā)現(xiàn)潛在的安全漏洞,在它們被網(wǎng)絡(luò)攻擊者利用之前加以糾正,構(gòu)建具有內(nèi)置安全服務(wù)的業(yè)務(wù)驅(qū)動(dòng)軟件。這種方法降低了合規(guī)性的成本以及軟件發(fā)布的延遲。在DevSecOps被廣泛應(yīng)用之前,企業(yè)通常會(huì)在軟件發(fā)布前的最后階段檢查他們新開(kāi)發(fā)的軟件。
由于快速部署的文化,將補(bǔ)丁應(yīng)用到服務(wù)器以進(jìn)行安全修復(fù)變得越來(lái)越普遍,而不是修復(fù)其核心的安全問(wèn)題。
如今,企業(yè)不能只把安全當(dāng)作事后考慮的事項(xiàng),因?yàn)殡y以承受網(wǎng)絡(luò)攻擊帶來(lái)的損失。IT基礎(chǔ)設(shè)施廣泛存在,IT技術(shù)在日常活動(dòng)(如購(gòu)物、銀行和醫(yī)療保健)中的使用也很普遍。這意味著DevOps需要具有可擴(kuò)展性,因?yàn)樾枨蟛粩嘣黾樱胰绻l(fā)生數(shù)據(jù)泄露,可能會(huì)造成破壞。
近年來(lái),網(wǎng)絡(luò)犯罪的數(shù)量一直在穩(wěn)步增長(zhǎng)。最近的一項(xiàng)研究表明,在2020年底,英國(guó)60%的企業(yè)遭受了網(wǎng)絡(luò)攻擊。遠(yuǎn)程工作和疫情加速了這一趨勢(shì)。現(xiàn)在,實(shí)施DevSecOps已不再是一種良好的實(shí)踐,而是減少?lài)?yán)重?cái)?shù)據(jù)泄露和其他黑客事件的可能性的必要措施。
DevSecOps將重點(diǎn)轉(zhuǎn)向安全,確保軟件開(kāi)發(fā)管道中的每個(gè)人都有責(zé)任確保最大程度的IT安全。通過(guò)在軟件開(kāi)發(fā)過(guò)程的每個(gè)層次上對(duì)網(wǎng)絡(luò)安全的關(guān)注,速度、功能和安全性是優(yōu)先考慮的。
DevSecOps vs. DevOps
DevSecOps的舊模式與DevSecOps的新模式有什么區(qū)別?首先關(guān)注它們的相似之處。這兩種方法都重視團(tuán)隊(duì)合作的概念,并認(rèn)識(shí)到這可以加速重要新軟件的發(fā)布。它們都利用敏捷框架來(lái)強(qiáng)調(diào)由動(dòng)態(tài)和連續(xù)的工作流程驅(qū)動(dòng)的工作文化,并且在所有級(jí)別都強(qiáng)調(diào)溝通和協(xié)作。
DevOps和DevSecOps都對(duì)簡(jiǎn)單的任務(wù)使用了一定程度的自動(dòng)化技術(shù),為開(kāi)發(fā)人員騰出時(shí)間來(lái)專(zhuān)注于軟件的更重要方面。持續(xù)過(guò)程的概念適用于這兩個(gè)實(shí)踐,確保在每個(gè)階段都滿(mǎn)足開(kāi)發(fā)、操作或安全的主要目標(biāo),避免了管道中的瓶頸。
通過(guò)共同工作,開(kāi)發(fā)人員、操作人員或安全專(zhuān)家可以及時(shí)地編寫(xiě)新的應(yīng)用程序和軟件更新,監(jiān)視、日志和評(píng)估代碼庫(kù)和安全邊界,以及使用中央存儲(chǔ)庫(kù)推出新的和改進(jìn)的代碼庫(kù)。DevOps和DevSecOps之間的主要區(qū)別非常明顯。后者重新關(guān)注安全性,而這一點(diǎn)以前被其他方法和框架所忽視。在過(guò)去,企業(yè)總是強(qiáng)調(diào)新應(yīng)用程序的開(kāi)發(fā)和發(fā)布速度,但在網(wǎng)絡(luò)安全專(zhuān)家審查代碼并指出安全漏洞時(shí),卻陷入了令人沮喪的困境。
前一種做法鼓勵(lì)在軟件開(kāi)發(fā)周期中制造瓶頸,這會(huì)給網(wǎng)絡(luò)安全專(zhuān)家和開(kāi)發(fā)人員帶來(lái)很大壓力,迫使他們快速修復(fù)軟件的故障和漏洞。這通常是以軟件的功能和安全性為代價(jià)的。
DevSecOps管道
從本質(zhì)上說(shuō),DevSecOps管道是一個(gè)安全實(shí)踐和工具的列表,這些安全實(shí)踐和工具根植于軟件開(kāi)發(fā)管道的每個(gè)步驟中。IT專(zhuān)家將開(kāi)展合作,以更快地構(gòu)建、測(cè)試并最終發(fā)布安全軟件。
通過(guò)實(shí)現(xiàn)DevSecOps,開(kāi)發(fā)團(tuán)隊(duì)可以確保他們可以在軟件開(kāi)發(fā)生命周期 (SDLC)早期發(fā)現(xiàn)安全漏洞,并在為時(shí)過(guò)晚之前為它們創(chuàng)建最佳修復(fù)。這反過(guò)來(lái)又提高了整個(gè)生命周期的速度和靈活性。它還有助于團(tuán)隊(duì)中的每個(gè)人都熟悉潛在的安全問(wèn)題,并使企業(yè)能夠更快地從安全事件中恢復(fù)過(guò)來(lái)。
傳統(tǒng)上,現(xiàn)代DevOps管道有幾個(gè)不同的層次。這些階段被稱(chēng)為計(jì)劃、代碼、構(gòu)建、測(cè)試、發(fā)布、部署、操作和監(jiān)控階段。這些階段與DevSecOps的思維方式保持不變,但有一個(gè)例外:對(duì)安全性的關(guān)注應(yīng)用于每一個(gè)層次。
這種對(duì)安全性的關(guān)注表現(xiàn)在幾種不同的方式上。第一個(gè)重點(diǎn)是威脅建模。開(kāi)發(fā)團(tuán)隊(duì)對(duì)各種最有可能的攻擊場(chǎng)景進(jìn)行頭腦風(fēng)暴,檢查可能受到影響的敏感數(shù)據(jù),并提出可能的解決方案。它還有一個(gè)額外的好處,就是可以讓團(tuán)隊(duì)中的每個(gè)人都了解常見(jiàn)的安全問(wèn)題。另一個(gè)重點(diǎn)是掃描,可以分析代碼以確保不受常見(jiàn)漏洞的影響。很好的一個(gè)做法是同時(shí)使用人工和自動(dòng)掃描過(guò)程。
分析在安全中也起著重要的作用。在這一階段,將進(jìn)一步審查從前兩個(gè)狀態(tài)中收集的信息、數(shù)據(jù)和指標(biāo)。開(kāi)發(fā)團(tuán)隊(duì)對(duì)安全風(fēng)險(xiǎn)進(jìn)行優(yōu)先排序,列出哪些是最嚴(yán)重的和不嚴(yán)重的風(fēng)險(xiǎn),以及哪些風(fēng)險(xiǎn)更可能發(fā)生。補(bǔ)救階段允許在軟件開(kāi)發(fā)生命周期 (SDLC)中涉及的團(tuán)隊(duì)為所有已識(shí)別的安全風(fēng)險(xiǎn)設(shè)計(jì)解決方案。靜態(tài)分析安全測(cè)試(SAST)可以為通過(guò)自動(dòng)化檢測(cè)到的代碼中的許多錯(cuò)誤和漏洞提供解決方案。
最后,開(kāi)發(fā)團(tuán)隊(duì)可以監(jiān)視軟件并跟蹤識(shí)別出的漏洞,以及記錄為減輕潛在安全問(wèn)題所采取的步驟。而在監(jiān)視階段需要不斷評(píng)估軟件的整體安全性。
DevOps安全工具
幸運(yùn)的是,開(kāi)發(fā)團(tuán)隊(duì)的工具包中有許多工具可以用來(lái)幫助創(chuàng)建沒(méi)有錯(cuò)誤和漏洞的代碼。這些工具可以使開(kāi)發(fā)團(tuán)隊(duì)的工作更輕松,并促進(jìn)網(wǎng)絡(luò)安全軟件的創(chuàng)建。
- SAST工具
靜態(tài)分析安全測(cè)試(SAST)工具依賴(lài)于自動(dòng)化來(lái)評(píng)估代碼的漏洞。SAST是一個(gè)很好的工具,因?yàn)樗哂懈叨鹊目蓴U(kuò)展性。SAST最重要的元素之一是源組成分析,它能夠自動(dòng)掃描代碼,以查明OSS軟件、OWASP、漏洞、錯(cuò)誤、庫(kù)和其他可能存在開(kāi)放安全問(wèn)題的類(lèi)似構(gòu)件的漏洞。
SAST工具遵循國(guó)際公認(rèn)的編碼標(biāo)準(zhǔn),在檢測(cè)到漏洞模式的地方設(shè)置危險(xiǎn)標(biāo)志。它可以更早地識(shí)別出許多不同類(lèi)型代碼中的安全漏洞,如果需要重新編寫(xiě)代碼以?xún)?yōu)先考慮網(wǎng)絡(luò)安全,這可以節(jié)省資金。SAST工具提供的實(shí)時(shí)反饋允許開(kāi)發(fā)人員知道漏洞的確切位置及其原因,從而允許他們采取相應(yīng)的行動(dòng)。
- DAST工具
動(dòng)態(tài)應(yīng)用安全測(cè)試 (DAST)工具深入研究軟件應(yīng)用程序的編碼,并分析執(zhí)行邏輯和實(shí)時(shí)數(shù)據(jù)。DAST工具具有更全面的方法,在應(yīng)用程序運(yùn)行時(shí)進(jìn)行分析。它測(cè)試加密算法,試圖用一種“白帽”黑客方法從外部破解它們。
DAST有助于驗(yàn)證權(quán)限,以確保不同權(quán)限級(jí)別的安全性。它可以檢查跨站點(diǎn)腳本、SQL注入和其他常見(jiàn)的軟件安全漏洞。它可以捕獲硬應(yīng)用程序失敗,以及記錄應(yīng)用程序執(zhí)行,以便進(jìn)行事后測(cè)試失敗分析。最后,它可以確保第三方接口不存在嚴(yán)重的漏洞。
SAST和DAST協(xié)同工作。這些工具對(duì)于有效的DevSecOps管道的全面安全測(cè)試過(guò)程至關(guān)重要。
- 容器掃描
容器掃描只是使用掃描工具持續(xù)檢查容器的過(guò)程,以確保它們按應(yīng)有的方式運(yùn)行。容器掃描至少應(yīng)確認(rèn)軟件供應(yīng)鏈已啟動(dòng)并運(yùn)行,并且開(kāi)發(fā)團(tuán)隊(duì)的容器基礎(chǔ)設(shè)施已經(jīng)正確配置和保護(hù)。
最好的容器掃描工具將容器組件與它們正在擴(kuò)展的新漏洞數(shù)據(jù)庫(kù)進(jìn)行比較。它們還應(yīng)該為開(kāi)發(fā)團(tuán)隊(duì)提供報(bào)告、影響分析和已發(fā)現(xiàn)的任何許可問(wèn)題或漏洞的圖表。
結(jié)語(yǔ)
隨著人們生活在一個(gè)越來(lái)越依賴(lài)技術(shù)的世界,開(kāi)發(fā)團(tuán)隊(duì)負(fù)有創(chuàng)建安全軟件的巨大責(zé)任。當(dāng)創(chuàng)建可能包含敏感醫(yī)療、金融或其他個(gè)人信息的大型數(shù)據(jù)庫(kù)的應(yīng)用程序時(shí),將面臨很高的風(fēng)險(xiǎn)。
幸運(yùn)的是,有了DevSecOps的心態(tài)、正確的DevOps工具和適當(dāng)?shù)闹笜?biāo),有很多方法可以構(gòu)建和編寫(xiě)軟件,以確保最大程度的安全性。
原文標(biāo)題:DevSecOps: A Complete Guide,作者:Vishnu Vasudevan
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】