DevSecOps 已定義
DevSecOps 代表開發、安全性和作業,是一種將安全性整合到軟體發展週期所有階段的架構。組織會採用此方法以降低發行具有安全性弱點之程式碼的風險。透過共同合作、自動化和清除流程,小組會共同承擔安全性責任,而不是等到問題可能更困難且更昂貴時才來解決。DevSecOps 是多雲端安全性策略的重要元件。
DevSecOps 與 DevOps
在傳統的軟體發展中,專案會分成不同的規劃、設計、開發、整合和測試階段,這些階段會連續進行數個月或數年。雖然此方法非常有條理,但許多組織發現它太慢,使得它很難符合客戶對於持續改善產品的期望。此外,安全性通常是在最後才加強,這會使公司面臨安全性缺口的風險。
為了維持競爭,許多公司已採用 DevOps 模型,優先提供較小的高品質程式碼封包,而不是充滿功能卻需要較長的專案。在此架構中,軟體發展與營運小組會共同作業,以在整個流程納入測試與整合。自動化、標準化的流程及共同作業均可協助小組快速移動,而不會犧牲品質。
DevSecOps 是 DevOps 的增強功能,可在流程的所有層面建立安全性。目標是從專案一開始就解決安全性問題。在此架構中,整個小組不僅負責品質保證和程式碼整合,也負責安全性。實際上,這表示小組會在規劃期間討論安全性影響,並在開發環境中就開始測試安全性問題,而不是等到最後。此方法的另一個名稱是左移安全性。
為什麼 DevSecOps 很重要?
攻擊者有許多方法可以存取組織的資料和資產,但常見的策略是利用軟體弱點。這些類型的缺口成本高、耗時,且會視乎其嚴重性而損害公司的信譽。DevSecOps 架構可降低部署具有錯誤設定及其他弱點的軟體被不良執行者利用的風險。
DevSecOps 的主要元件
成功的 DevSecOps 流程包含下列元件:
-
持續整合
隨著持續整合,開發人員一天會多次將程式碼提交至中央存放庫。然後程式碼會自動整合並進行測試。這個方法可讓小組在流程初期發現整合問題與錯誤,而不是等到最後可能有一系列問題需要解決時才發現。
-
持續傳遞
持續傳遞以持續整合為基礎來自動化將程式碼從組建環境移到預備環境的流程。一旦暫存,除了單元測試之外,系統會自動測試軟體以確保使用者介面可正常使用、程式碼已成功整合、API 可靠,以及軟體可以處理預期的流量量。這個方法的目標是持續提供生產就緒程式碼,為客戶提供價值。
-
持續的安全性
在整個軟體發展生命週期中組建安全性是 DevSecOps 的重要元件。這包括在流程初期建立威脅模型,以及在整個生命週期內自動進行安全性測試,從開發人員自己的環境開始。透過儘早、頻繁地徹底測試軟體的安全性問題,組織可以有效地交付存在最少問題的軟體。
-
通訊與共同作業
DevSecOps 高度依賴個人和團隊密切合作。持續整合需要人員共同合作以解決程式碼中的衝突,而小組必須有效地溝通以統一相同的目標。
如何實作 DevSecOps
為 DevOps 流程新增安全性需要仔細規劃。從為小組帶來最少衝突並提供最大安全性報酬的流程開始。以下是一些為一般 DevOps 反覆項目新增安全性的方法。
-
規劃與開發
在開發反覆項目中提早引進安全性,不僅有助於在稍後減少弱點,還能節省時間,因為在組建並整合程式碼之前,較容易解決問題。在規劃和開發期間,使用威脅模型來識別並減輕應用程式的潛在威脅。這可協助您從一開始就將安全性組建至應用程式中。若要在程式碼提交至共用存放庫之前發現安全性問題,請執行自動化檢查,例如整合開發環境安全性外掛程式,這樣當開發人員所撰寫的程式碼有潛在的安全性風險時,這些外掛程式會立即提供開發人員意見。在程式碼檢閱期間,請具有安全性專長的人提供改善建議。
-
程式碼提交
成功 DevSecOps 流程的關鍵之一就是持續整合。開發人員通常會一天多次將程式碼提交至中央存放庫,以確保能提早發現整合問題。將自動化安全性檢查新增到此階段非常重要。這可能包括掃描協力廠商程式庫和相依性、單元測試和靜態應用程式安全性測試。此外,部署角色型存取控制也非常重要,以保護持續整合和持續傳遞基礎結構,避免攻擊者試圖執行惡意程式碼或竊取認證。
-
組建和測試
在測試環境中執行自動化安全性指令碼,有助於發現先前未偵測到的潛在問題。您可以在此階段執行的一些安全性測試包括動態應用程式安全性測試、基礎結構掃描、容器掃描、雲端設定驗證,以及安全性接受度測試。
-
生產環境
將應用程式部署到生產環境後,某些組織會進行滲透測試,以嘗試尋找即時環境中的弱點。在滲透測試中,人員採用攻擊者的思維,並搜尋入侵應用程式的方式。
-
操作
即使是最佳的 DevSecOps 流程也無法捕捉所有專案,因此持續監視應用程式的弱點和威脅非常重要。分析資料可協助評估您的安全性態勢是否正在改善,並突顯要最佳化的區域。
-
DevSecOps 工具和技術
選擇安全性工具時,請務必選取能與目前 DevOps 技術一起順利使用的工具。這可更輕鬆地將安全性納入您整個流程中。以下是一些您可能需要的工具類型:
-
基礎結構做為程式碼掃描
為了提升其效率,DevSecOps 團隊通常會使用開放原始碼工具 (例如 Terraform) 透過程式碼來管理和佈建基礎結構,例如網路、虛擬機器和負載平衡器,而不是手動執行。Terraform 可協助確保基礎結構在數百或數千部伺服器上一致地設定和更新。為了降低將錯誤設定部署到生產環境的風險,作為程式碼掃描工具的基礎結構會自動在程式碼層級檢查基礎結構是否不符合安全性原則和標準。
-
靜態應用程式安全性測試
在編譯其代碼之前,DevSecOps 開發人員會開始測試其自訂程式碼,以發現安全性弱點。這可協助他們修正問題,而不會影響組建。靜態應用程式安全性測試工具會使用自動檢查和即時意見反應,讓此流程更輕鬆容易。許多工具會明確識別哪些程式碼有風險,並提供建議的修正程式。
-
軟體組合分析
小組更有效率地組建應用程式和功能的其中一個方法,就是使用協力廠商外掛程式和架構。這些預先組建的工具可節省時間,但也可能帶來風險,例如授權問題、撰寫錯誤的代碼或安全性弱點。軟體組合分析工具會識別應用程式中的開放原始碼元件,並針對專屬或免費資料庫進行評估,以偵測授權違規以及安全性和品質問題。
-
互動式應用程式安全性測試
在品質保證測試期間或應用程式使用期間,互動式應用程式安全性工具會掃描程式碼以找出弱點,並提供報告,以識別程式碼中的問題。
-
動態應用程式安全性測試
動態應用程式安全性測試會模擬不良執行者可能用於攻擊應用程式的方法。這項測試是在應用程式執行時進行,且是以預先定義的使用案例為基礎。
-
容器掃描
容器在 DevSecOps 中廣泛使用,因為它們可協助開發人員輕鬆部署獨立的程式碼單位。在容器內是容器映像,其中包含執行容器流程之程式碼。不過,這些映像通常是使用現有的映像組建,或從公用存放庫提取。容器會掃描工具、掃描容器,並將其與公用或專屬弱點資料庫進行比較,以發現潛在的安全性問題。
DevSecOps 最佳做法
DevSecOps 與流程和工具一樣涉及文化變更。以下是一些最佳做法,可協助讓此架構的採用盡可能順暢。
-
改變文化
了解人員可能難以變更其工作方式,並且可能會出現衝突。為了協助他們適應,請清楚傳達組織的目標與期望、提供許多開啟對話的機會,並預期您需要保持彈性,直到團隊找到最適合他們的工具、流程及節奏。
-
定義需求和計量
建立最低安全性基準。有關指引,請參閱產業和法規需求或 開啟全球應用程式安全性專案 ® (OWASP) 前十大 Web 應用程式的關鍵風險和 SANS 前 25 大軟體錯誤。定義需求之後,請決定要追蹤的計量,以協助您監控進度。
-
從小開始
安全性自動化工具提供許多選項來檢查問題的代碼,但開啟所有選項 (尤其是早期採用 DevSecOps 時) 可能會讓您的團隊負擔過重。明智地選擇使用哪些工具以及掃描多少問題。
-
執行威脅模型
開發一個威脅模型化流程,它可以像您需要的那麽簡單,也可以像您需要的那麽詳細和技術性。使用這個方法來記錄應用程式實際的安全性檢視,其中包括:
- 攻擊者如何濫用應用程式的設計。
- 如何修正弱點。
- 不同問題的優先順序。
-
實施自動化
自動化是啟用 DevSecOps 流程品質和速度的關鍵。在持續整合和持續傳遞生命週期的所有階段內嵌自動化安全性掃描,您可以改善應用程式的安全性,而不會大幅減慢流程的速度。
-
管理相依性
大部分的開發人員會使用協力廠商套件和程式庫,有效率地組建應用程式。問題是,其中某些解決方案有安全性缺陷,而開發人員並不總是努力讓它們保持最新狀態。若要降低風險,請確定您使用的元件通過安全性風險審查,並開發標準化流程以進行更新。
-
評估和改進
定期評估流程如何執行,並根據需要進行調整,以確保您的組織符合其目標。完成一個衝刺之後,無責備的事後剖析可協助發現改善的機會。分析資料和威脅情報也可以幫助您判斷目前的方法是否未符合安全性需求。
-
適合雲端原生應用程式的 DevSecOps
雲端原生應用程式架構為雲端架構,通常與廠商無關,讓它們能夠從一個雲端移植到另一個雲端。專為高度可縮放性與彈性設計,開發小組通常會使用微服務、容器和自動化來組建它們,因此非常適合 DevSecOps 流程。將持續安全性、持續整合和持續傳遞建置到雲端原生應用程式的開發流程中,可以在不影響安全性的情況下實現可擴縮性。使用自動化的安全性解決方案 ,例如 適用於 DevOps 的 Microsoft Defender,來協助保護您的程式碼和整個 DevOps 管線。將應用程式部署至雲端後,請繼續監視其風險。雲端工作負載保護平台 (CWPP)會透過偵測和降低跨多雲端環境工作負載的威脅,來協助保護這些應用程式和基礎資料。雲端安全性態勢管理 (CSPM) 解決方案會探索並解決您所有環境中的錯誤設定和弱點。
深入了解 Microsoft 安全性
常見問題集
-
DevSecOps 是一個將安全性整合到整個軟體發展生命週期中的流程。組織會採用此方法以降低發行具有安全性弱點之程式碼的風險。透過共同合作、自動化和清除流程,小組會共同承擔安全性責任,而不是等到最後問題可能更困難且更昂貴時才來解決。
-
DevSecOps 代表開發、安全性和作業。它是指將安全性整合到軟體發展所有階段的流程。
-
左移是一個在 DevSecOps 中的概念,指的是從開發流程一開始就納入安全性做法。
-
DevSecOps 架構包含持續整合、持續傳遞和持續安全性。這是一種安全性、作業和安全性小組合作的方法,可共同承擔快速提供高品質軟體的責任,同時降低安全性弱點。
-
沒有單一的 DevSecOps 流程,但人員執行這些專案的常見方式是將工作分成反覆項目,每個包含下列元件:規劃與開發、組建和測試,以及生產。在整個反覆項目期間,小組會使用自動化來持續解決品質保證問題、持續整合,以及持續測試安全性風險。
關注 Microsoft 安全性