微軟的SDLC安全開發周期介紹小結

2021-10-05 16:46:39 字數 3039 閱讀 3687

sdl 的出現不是為了顛覆傳統的 dlc 框架,而是希望在 dlc 中加入足夠清晰的安全需

求,以此來為軟體開發的過程提供完整的安全防護。sdl 的標準執行流程有 7 個步驟:

安全培訓、需求分析、設計、開發、測試、部署和響應。流程如下圖:

1. 培訓

在 sdl 中,安全培訓是第一步。之所以會這麼設計,就是因為很多公司都對安全人員給予

了過高的期望,認為他們能夠解決一切的安全問題,而忽略了對開發、測試、運維等人員的

安全意識培訓。這就導致安全人員一直處於乙個「救火」的狀態,無法從根本上杜絕安全問

題的產生。

因此,sdl 中明確提出:開發、測試、運維和產品經理每年至少進行一次安全培訓。培訓

的內容包括安全概念和框架、威脅評估、web 安全、安全測試以及隱私保護等。

2 需求分析

sdl 要求在需求分析的過程中,我們必須把安全防護的需求考慮進來。在需求分析階段,

安全人員提出的防護需求主要包括三個方面。

安全標準:為軟體制定對應的安全標準。比如,需要對敏感資料進行加密儲存、需要進

行二次認證等。

安全指標:定義軟體在上線時需要滿足的安全指標。比如,在上線時,軟體必須經過安

全測試,且不允許存在任何高危漏洞。

風險點評估:安全人員會對整體需求進行評估,找出需要對安全性重點關注的部分,也

就是風險點。比如某個需求會使用到使用者的隱私資料,那麼風險點就是這些隱私資料。

這三個方面的安全需求,能夠為軟體開發劃定最低的安全保障,也能夠時刻提醒軟體開發環

節的各個人員保持對安全的關注。

3   設計

對需求進行分析整理之後,我們就需要對軟體的功能和架構進行設計了。那我們都需要設計

些什麼呢?其實就是為後續的開發、測試和部署環節制定響應的方案和計畫。針對上面整理

出的三個方面的安全需求,我們也需要在設計環節中,給出具體的實現方案。

在設計的過程中,我們需要對安全和開發成本進行平衡考量,使得最終的安全設計方案能夠

被所有專案人員認可。

為安全標準確定具體的實施方案。比如,對敏感資料作加密儲存,那麼,具體的加密算

法是什麼,金鑰怎麼生成和儲存,都需要在設計階段確定方案細節。

安全指標的響應方案則是在軟體開發方案中,盡可能地考慮安全問題,降低可能出現風

險的概率。比如,依據最小許可權原則,明確軟體每個使用者和角色能夠進行的操作。或者

確定審計需求,明確各個階段需要記錄的日誌及時發現攻擊行為。

對於需求階段定義的風險點進行完整的風險評估。依據識別資料、攻擊和漏洞的方式,

明確需要採取的安全防護機制,提公升這些關鍵風險點的安全性。

4  開發

在開發階段,安全人員的工作則是盡可能地避免開發人員的**出現安全問題。那究竟應該

怎麼做呢?其實,我們可以通過限制工具和方法、定期審查**來實現。

首先,我們可以限制開發人員使用的工具和方法。比如:為了避免外掛程式漏洞,我們可以只允

許開發人員使用通過我們驗證的外掛程式和工具;為了避免 sql 注入漏洞的出現,我們可以限

制開發人員使用字串拼接的方式執行 sql 等。

其次,我們也需要對開發人員產出的**進行定期的安全審查,通過人工或者工具分析,發

現一些沒有得到限制的安全漏洞。比如,沒有對使用者的輸入進行驗證等。

5  . 測試

測試的內容主要包括兩個方面。

一方面,我們需要評估軟體是否符合當初的安全設計方案,是否存在不一致的地方。有的時

候,雖然我們在設計的時候考慮了最小許可權原則,但是在實際開發的過程中,也可能由於開

發人員的理解偏差或者 bug,導致許可權濫用的出現。因此,在測試階段我們需要依據當初

的安全設計方案,一項一項去確認是否符合要求。

另一方面,我們要進行動態的安全測試。動態測試的方法有兩種,執行漏洞掃瞄和進行模糊

測試。漏洞掃瞄很好理解,我們可以通過向軟體發起一些測試性的攻擊指令碼,來驗證是否存

在漏洞。模糊測試就是不斷向軟體發起隨機或者異常的請求,然後看軟體是否出現報錯等情

況,以此來檢測可能存在的漏洞。

6. 部署

在測試完成之後,軟體就可以準備部署上線了。

到這一步,可以說安全人員已經把安全漏洞出現的可能性降到最低了。但是,我經常說「沒

有 100% 的安全,安全人員需要隨時為可能發生的安全事件做好防護準備",所以,在軟體

上線前,我們需要做好安全預案。

我來舉個例子。一旦出現資料洩露事件,運維人員必須第一時間對資料庫進行隔離,開發人

員需要下線軟體相關功能,產品人員需要做好使用者的安撫工作,安全人員需要立即對相關日

志進行儲存,然後分析事件產生的原因。這就是乙個安全預案的基本框架,但是每一步的具

體操作,還需要我們根據實際情況來細化。

預案準備完成之後,我們還需要再一次進行安全確認工作。這個過程主要是來確定,軟體的

整個開發流程是否有嚴格按照既定的 sdl 流程進行,以及最終的軟體是否滿足我們開始提

出的三個安全需求。

在各項事情都確認完畢之後,我們就需要對整個專案進行歸檔了。歸檔之後,包括**、需

求列表、設計方案和應急預案在內的所有的內容都不允許改動。

完成了安全預案、安全確認和歸檔之後,我們就可以進行軟體的最終部署上線了。

7. 響應

軟體上線之後,安全人員所需要做的,就是及時響應和處理安全事件。這就需要用到我們在

部署階段制定的安全預案了,為了執行這個安全預案,我們需要成立安全應急響應小組。這

個小組的工作就是對安全事件以及外界的漏洞情報進行監控,一旦發現安全事件立即對事件

進行評估,決定需要啟動的安全預案。通過安全應急響應小組,我們可以保持對線上軟體安

全的時刻監控,保障軟體的安全和穩定。

現在,相信你已經能夠理解 sdl 是如何從根源上解決安全問題的了。我來簡單總結一下:

sdl 通過安全培訓來解決人的問題,然後在需求和設計階段提出安全需求,在開發和測試

階段發現安全漏洞,最終在部署和響應階段處理安全問題。

如何推動 sdl 落地?

應用安全 微軟的安全開發生命週期 SDL

0x01 sdl介紹 安全開發生命週期 sdl 即security development lifecycle,是乙個幫助開發人員構建更安全的軟體和解決安全合規要求的同時降低開發成本的軟體開發過程。0x02 sdl流程框架 自2004年起,sdl就成為microsoft全公司的計畫和強制施行政策,其...

軟體安全開發生命週期讀書筆記

分階段 0.教育和意識 1.微軟成功的原因在於管理層支援和教育與培訓.2.工程師必須對基本的安全弱點 常見的安全漏洞型別 基本的安全設計有所了解。3.主要教育如下 軟體工程原理 歷史專案總結,經驗,教訓 軟體架構 測試方法 事件交換技術 可信度 可伸縮性 理解未來技術方向 各種技術例如xml,asp...

軟體安全開發生命週期讀書筆記

分階段 0.教育和意識 1.微軟成功的原因在於管理層支援和教育與培訓.2.工程師必須對基本的安全弱點 常見的安全漏洞型別 基本的安全設計有所了解。3.主要教育如下 軟體工程原理 歷史專案總結,經驗,教訓 軟體架構 測試方法 事件交換技術 可信度 可伸縮性 理解未來技術方向 各種技術例如xml,asp...