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