什麼是 DevSecOps?
DevSecOps 是在軟體開發過程的每個階段整合安全測試的實務。它包括鼓勵開發人員、安全專家和營運團隊之間的協作的工具和流程,以建置既有效又安全的軟體。DevSecOps 帶來了文化轉型,使安全成為建置軟體的每個人的共同責任。
DevSecOps 代表什麼?
DevSecOps 代表開發、安全與營運。它是 DevOps 實務的延伸。每個術語都定義了軟體團隊在建置軟體應用程式時的不同角色和責任。
開發
開發是規劃,編碼,構建和測試應用程序的過程。
安全性
安全性意味著在軟件開發週期的早期引入安全性。例如,程序員確保該代碼沒有安全漏洞,並且安全從業人員在公司發布軟件之前進一步測試該軟件。
營運
運營團隊發布,監視和修復由軟件引起的任何問題。
為什麼 DevSecOps 很重要?
DevSecOps 旨在幫助開發團隊有效地解決安全問題。它是舊式軟體安全實務的替代方案,無法跟上更嚴格的時間表和快速的軟體更新。為了解 DevSecOps 的重要性,我們將簡要審查軟體開發流程。
軟體開發生命週期
軟件開發生命週期(SDLC)是一個結構化的過程,指導軟件團隊生產高質量的應用程序。軟體團隊使用 SDLC 降低成本、減少錯誤,並確保軟體隨時符合專案的目標。軟件開發生命週期將軟件團隊通過以下階段:
- 需求分析
- 規劃
- 建築設計
- 軟體開發
- 測試
- 部署
SDLC 中的開發警察
在傳統的軟件開發方法,安全測試是從 SDLC 一個單獨的過程。安全團隊僅在構建軟件後才發現安全漏洞。DevSecOps 框架通過檢測整個軟件開發和交付過程中的漏洞來改善 SDLC。
DevSecOps 有哪些優點?
練習 DevSecOps 具有多項優勢。
及早發現軟體漏洞
軟體團隊在整個開發過程中專注於安全控制。他們會在每個階段對軟體進行檢查而非等到完成軟體之後。軟體團隊可以在早期階段偵測安全問題,並降低修正漏洞的成本和時間。因此,在產生應用程式之後,使用者所遭受的干擾將會降至最低且安全性將會有所提高。
縮短上市時間
藉助 DevSecOps,軟體團隊可以自動化安全測試並減少人為錯誤。它還可以防止安全評估成為開發過程中的瓶頸。
確認法律合規
軟體團隊採用專業的安全實務和技術並使用 DevSecOps 來確保符合法規要求。它們可確定系統中的資料保護和安全要求。例如,軟體團隊會使用 AWS Security Hub,以根據業界標準自動化安全檢查。
建立具有安全意識的文化
在開發應用程式時,軟體團隊將會增加對安全最佳實務的了解。他們更積極地發現程式碼、模組或其他可用於建置應用程式的技術中的潛在安全問題。
安全部署新功能
DevSecOps 鼓勵開發、營運和安全團隊之間的靈活協作。他們對軟體安全的看法相同,並且會使用常用工具來自動化評估預報告。每個人都專注於在不影響安全的情況下為客戶新增更多價值的方法。
DevSecOps 如何運作?
若要實作 DevSecOps,軟體團隊必須先實作 DevOps 和持續整合。
DevOps
DevOps 文化是一種將開發與營運團隊進行整合的軟體開發實務。它使用工具和自動化來促進兩個團隊之間更進一步的協作、溝通和透明度。因此,公司既可以縮短軟體開發時間,同時又仍能靈活應付變更。
持續整合
持續整合與持續交付 (CI/CD) 是一種現代化的軟體開發實務,其使用了自動化的建置與測試步驟,能可靠且有效地為應用程式提供微小的變更。開發人員使用 CI/CD 工具來發佈新版應用程式,並在應用程式可供使用者使用之後快速回應問題。例如,AWS CodePipeline 是一種可用於部署和管理應用程式的工具。
DevSecOps
DevSecOps 透過在整個 CI/CD 流程中整合安全評估,為 DevOps 實務引入安全性。這樣一來,安全便成為參與建置軟體的所有團隊成員的共同責任。在編寫任何程式碼之前,開發團隊應與安全團隊協作。同樣地,營運團隊會在部署軟體後繼續監控軟體的安全問題。因此,公司可以更快速地交付安全軟體,同時確保合規性。
DevSecOps 與 DevOps 比較
DevOps 的重點目標是盡快將應用程式推出市場。在 DevOps 中,安全測試是一個單獨的程序,主要發生在應用程式開發的最後階段以及部署之前。通常情況下,一個單獨的團隊會測試並強制執行軟體的安全性。例如,安全團隊會在建置應用程式之後設定防火牆,以測試應用程式的入侵情況。
另一方面,DevSecOps 使安全測試成為應用程式開發過程本身的一部分。安全團隊和開發人員協作,以保護使用者免受軟體漏洞攻擊。例如,安全團隊會設定防火牆,程式設計人員會設計程式碼以防止漏洞,測試人員則會測試所有變更以防止未經授權的第三方存取。
DevSecOps 有哪些元件?
成功實作 DevSecOps 實務包括以下部分:
程式碼分析
程式碼分析是針對漏洞調查應用程式原始程式碼以及確保其遵循安全最佳實務的過程。
變更管理
軟體團隊使用變更管理工具來追蹤、管理和報告與軟體或需求相關的變更。如此一來,可防止因軟體變更而造成的意外安全漏洞。
合規管理
軟體團隊要確保軟體符合法規要求。例如,開發人員使用 AWS CloudHSM 來證明其符合 HIPAA、FedRAMP 和 PCI 等安全性、隱私權和反竄改規範。
威脅模型建立
DevSecOps 團隊會調查部署應用程式前後可能出現的安全問題。它們可修正任何已知問題,並發佈應用程式的更新版本。
安全培訓
安全培訓涉及培訓軟體開發人員和營運團隊,並遵循最新的安全指南。這樣一來,開發與營運團隊可以在建置和部署應用程式時做出獨立的安全決策。
什麼是 DevSecOps 文化?
DevSecOps 文化集通訊、人員、技術和流程於一體。
通訊
公司會推動從高層開始的文化變革,進而實作 DevSecOps。資深領導人向 DevOps 團隊解釋採用安全實務的重要性和優點。軟體開發人員和營運團隊需要合適的工具、系統和鼓勵,才能採用 DevSecOps 實務。
人員
DevSecOps 導致了涉及軟體團隊的文化轉型。軟體開發人員不再堅持建置、測試和部署程式碼的傳統角色。藉助 DevSecOps,軟體開發人員和營運團隊與安全專家密切合作,以在整個開發過程中提高安全性。
技術
軟體團隊在開發過程中使用技術來執行自動化安全測試。DevOps 團隊使用它來檢查應用程式是否存在安全漏洞,而不會影響交付時間表。例如,軟體團隊使用 Amazon Inspector 進行大規模的自動化持續漏洞管理。
流程
DevSecOps 變更了建置軟體的常規過程。藉助 DevSecOps,軟體團隊會在開發的每個階段執行安全測試和評估。軟體開發人員會在編寫程式碼時檢查安全漏洞。然後,安全團隊會測試預發佈版應用程式是否存在安全漏洞。例如,他們可能會檢查以下內容:
- 授權,以便使用者只能存取其所需內容
- 輸入驗證,以便軟體在接收異常資料時能夠正常運作
然後,軟體團隊會在向最終使用者發佈最終應用程式之前修復所有漏洞。
應用程式上線後,安全測試亦不會結束。營運團隊會繼續監控潛在問題,進行修正,並與安全與開發團隊合作以發佈應用程式的更新版本。例如,他們可能使用 Amazon CodeGuru Reviewer 來偵測安全漏洞、揭露的機密、資源洩漏、並行問題、不正確的輸入驗證,以及與使用 AWS API 和 SDK 之最佳實務的偏差。
DevSecOps 的最佳實務是什麼?
公司使用下列方法來支援 DevSecOps 的數位轉型。
左移
左移是在軟體開發早期階段檢查漏洞的過程。透過遵循該過程,軟體團隊可以在建置應用程式時防止未偵測到的安全問題。例如,開發人員在 DevSecOps 過程中建立安全程式碼。
右移
右移表示在部署應用程式之後關注安全性的重要性。某些漏洞可能會躲開早期的安全檢查,並且只有在客戶使用該軟體時才會顯現出來。
使用自動化安全工具
DevSecOps 團隊可能需要在一天內進行多次修訂。為此,他們需要將安全掃描工具整合到 CI/CD 過程中。這樣一來,可以防止安全評估減慢開發速度。
提高安全意識
公司在建置軟體時,將安全意識視為其核心價值的一部分。在開發應用程式中發揮作用的每位團隊成員,都必須共同分擔保護軟體使用者免受安全威脅的責任。
常見的 DevSecOps 工具有哪些?
軟體團隊使用下列 DevSecOps 工具來評估、偵測和報告軟體開發期間的安全漏洞。
靜態應用程式安全測試
靜態應用程式安全測試 (SAST) 工具可分析及找出專有原始程式碼中的漏洞。
軟體結構分析
軟體結構分析 (SCA) 是自動化開放原始碼軟體 (OSS) 使用的可見性的程序,以實現風險管理、安全性和授權合規性。
互動式應用程式安全測試
DevSecOps 團隊使用互動式應用程式安全測試 (IAST) 工具來評估應用程式在生產環境中的潛在漏洞。IAST 包含從應用程式內部執行的特殊安全監控。
動態應用程式安全測試
動態應用程式安全測試 (DAST) 工具可從網路外部測試應用程式的安全性,進而模擬駭客。
什麼是敏捷開發中的 DevSecOps?
敏捷是一種思維方式,可以幫助軟體團隊在建置應用程式及回應變更方面更有效率。軟體團隊過去常常在一系列不靈活的階段建置整個系統。藉助靈活的架構,軟體團隊可以在持續的循環工作流程中開展工作。他們使用敏捷流程來收集不斷的意見回饋,並在短暫的迭代開發週期內改善應用程式。
DevSecOps 與敏捷開發比較
DevSecOps 與敏捷性並非不是彼此互斥的實務。Agile 允許軟體團隊對變更請求進行快速操作。同時,DevSecOps 會在敏捷開發中將安全實務引入到每個迭代循環中。藉助 DevSecOps,軟體團隊可以使用敏捷開發方法產生更安全的程式碼。
實作 DevSecOps 有哪些挑戰?
公司在將 DevSecOps 引入其軟體團隊時,可能會遇到以下挑戰。
抵制文化變革
多年來,軟體與安全團隊一直遵循傳統的軟體建置實務。公司可能會發現,他們的 IT 團隊很難快速採用 DevSecOps 思維方式。軟體團隊專注於建置、測試和部署應用程式。同時,安全團隊專注於確保應用程式的安全。因此,高層領導需要讓兩個團隊就軟體安全實務和及時交付達成共識。
複雜工具整合
軟體團隊使用不同類型的工具來建置應用程式及測試其安全性。將來自不同廠商的工具整合到持續交付流程中並不容易。傳統的安全掃描器可能不支援現代開發實務。
AWS 如何支援您的 DevSecOps 實作?
AWS 支援現代 DevSecOps 實務,因此軟體團隊能夠自動化其應用程式的安全性、合規性和資料保護。例如,您可以執行以下操作:
- 使用 Amazon Inspector 進行大規模的自動化和持續漏洞管理。
- 使用 AWS CodeCommit 來管理原始程式碼控制,並對應用程式進行遞增變更。
- 使用 AWS Secrets Manager,在整個生命週期中輕鬆輪換、管理及擷取資料庫憑證、API 金鑰和其他機密資訊。
立即建立 AWS 帳戶,開始使用 AWS 上的 DevSecOps。