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