SSDLC 是什麼?安全軟體開發生命週期的階段、安全活動與 DevSecOps 差異
資安事件發生後才補洞,成本往往是開發階段就處理的數十倍。SSDLC(Secure Software Development Life Cycle,安全軟體開發生命週期)的核心精神就是「安全左移」:把安全要求放進需求、設計、開發、測試到維運的每個階段。這篇整理 SSDLC 的階段劃分、各階段該做的安全工作,以及和 DevSecOps、相關標準的關係。
SSDLC是安全軟體開發生命週期,是一套完整面向Web和APP開發的安全開發方法。幫助軟體企業降低安全問題,提升軟體安全品質。SSDLC的理念來源於微軟SDL,最終目標是幫助使用者減少安全性問題,並使用該方法從每個階段提高總體安全等級。
根據各階段定義可分為:
- 分析設計(Define)
- 架構設計(Design)
- 程式實作(Develop)
- 系統測試(Test)
- 分發部署(Deploy)
- 運作與維護(Maintain)
- 變更管理(Change)
特性
SSDLC與SDLC的差異多了個Secure,也就是導入安全性的思維,降低了系統後續維護的成本,以及遭受到攻擊行為的損失。
各階段安全之安全工作要求
- 分析設計階段:資安措施的分析與規劃
- 架構設計階段:系統任務目標、功能關聯、邊界範圍,作為程式實作階段的基礎
- 程式實作階段:資安防護最重要的一環,針對可能入侵手法建立防護機制
- 系統測試階段:已知的攻擊手法是否能夠防禦
- 分發部署階段:軟體控管以及人員教育訓練
- 運作與維護階段:資安防護措施的持續維護
- 變更管理階段:因應變化定期更改各階段的程序
如何測試
可參考本網站提供之Web類別使用工具文章。
其他資源
推薦這部YT,講得很詳細。
參考資料
SSDLC 各階段常見的安全活動
| 階段 | 安全活動 | 常用工具或產出 |
|---|---|---|
| 需求分析 | 定義安全需求、資料分類、法規遵循要求 | 安全需求清單、OWASP ASVS |
| 架構設計 | 威脅建模、安全架構審查、權限設計 | STRIDE、Microsoft Threat Modeling Tool |
| 程式實作 | 安全程式碼規範、靜態程式碼分析(SAST)、套件弱點檢查(SCA) | SonarQube、Semgrep、Dependabot |
| 系統測試 | 動態測試(DAST)、弱點掃描、滲透測試 | OWASP ZAP、Burp Suite、OpenVAS |
| 分發部署 | 安全組態檢查、機敏資料與金鑰管理 | CIS Benchmark、Secrets 管理工具 |
| 運作維護 | 弱點修補、日誌監控、事件應變 | SIEM、ELK、WAF |
| 變更管理 | 變更前安全評估、回歸測試 | 變更紀錄、Code Review |
SSDLC 和 DevSecOps 有什麼不同?
兩者目標一致,差別在落實方式。SSDLC 是一套階段性的開發方法論,強調每個階段都要有安全檢查點;DevSecOps 則是在 CI/CD 自動化流程中嵌入安全檢測,讓 SAST、SCA、容器掃描在每次提交時自動執行。實務上常以 SSDLC 定義「要做什麼」,再用 DevSecOps 的工具鏈決定「怎麼自動化做」。
相關標準與框架
- Microsoft SDL:SSDLC 概念的主要源頭
- NIST SP 800-218(SSDF):美國政府採購軟體時參考的安全開發框架
- OWASP SAMM:評估組織安全開發成熟度的模型
- 台灣資通安全管理法:資通系統防護基準要求依系統防護等級,在開發生命週期各階段落實安全要求,公部門委外開發專案常會要求廠商提出 SSDLC 文件
