Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
本篇是 建構安全軟體開發 系列文的 EP12。
在建構安全軟體開發的過程中,有一點不得不盡早提出的就是 CM - Configuration Management ,這也是在 OWASP Top 10 當中也常出現的一點 "Security Misconfiguration"。
無論是任何的軟體/應用/服務...等資訊系統,一定都有其組態設定資料,而如果不在一開始就做正確的安全規劃與設定,後面要去改變一定會變得相對複雜。
而在 NIST SP 800-128:Guide for Security-Focused
Configuration Management of Information Systems 的這份文件中有詳細說明,這邊也簡單整理一下:
而依序地從點 1 進展到點 4 後,若在點 4 有發現應矯正的作為時,就要再持續的從點 1 到點 4。
再來最常被爭論的議題就是在開發的過程中,功能面都已經做不完了,怎麼會去確保 Security。
這就要討論在面對開發時的心態問題:
究竟是要透過安全去讓軟體/產品/服務更完整
還是 要讓軟體/產品/服務來滿足安全的要求與腳步
。
而大約在 2000 年前左右 Microsoft SDL(Security Development Lifecycle) 的開發方法論就已經被提出來,並與提出 The Seven Touchpoints of Secure Software 來結合:
但經過時代的演變,現今 Microsoft SDL 被整理成 12 個 Practices 進行實踐:
上述圖片擷取自微軟的 What are the Microsoft SDL practices? 網頁頁面。
這邊特別提一下 "Microsoft SDL" 的 "S" 是代表著 "Security"。
其後的 SDLC(Software Development Life Cycle) 當中,各式軟體開發方法論陸續被提出來,例如 Agile Methods 當中的 Scrum、XP...等敏捷的方法論,乃至於今日最常聽見的 DevOps,理應在各個環節要介接 Security 的構造成為 DevSecOps。
敏捷求的就是 快,那要做到 Security 勢必須縮小檢測的範圍。
Quality -> 快 -> 影響了什麼
Security -> 快 -> 影響了什麼
都應妥當的評估所影響的層級而決定。
DevSecOps:
在各個環節與測試期間加入安全的測試項目。
有興趣了解更多的朋友可參考 SEI 於 2020 年發表有關如何針對 DevSecOps 環境的指引論文:
Guide to Implementing DevSecOps for a
System of Systems in Highly Regulated
Environments
若討論 DevSecOps 的過程當中,其實最常見的問題是在 CI/CD 的 Pipeline 進程當中,應該考慮的幾點 Security 挑戰:
上述論點參考自 CI/CD Security - How to Secure Your CI/CD Pipeline
也可以進一步地透過 Software Engineering Institute (SEI) 了解更多:
SEI 的 DevSecOps
大多數的作法與觀點是常用軟體生命週期的角度去切入安全開發領域:
SDLC(Software Development Life Cycle) -> SSDLC(Secure Software Development Life Cycle)
這常會陷入一個邏輯的討論問題,也就是前述提到的心態問題:
究竟是要透過安全去讓軟體/產品/服務更完整
還是 要讓軟體/產品/服務來滿足安全的要求與腳步
。
或許可以參考一下:
所提的內容。
審視一下真正希望達成的觀點是什麼吧!
除了有被法規要求的廠商,實務上再推動SSDLC還真的是不太容易,
尤其常常被長官問是否有total solution 的產業,自動化去產出。