尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
搜尋引擎里輸入「安全開發」,結果頁面里是長篇累牘的建議和最佳實踐。你可以相對快速地創建長長的最佳實踐和指南清單,內容事無巨細,涵蓋從怎樣建立威脅模型,到避免跨站腳本錯誤的注意事項等等。新一點的文章可能聚焦移動應用安全開發,或關注在 DevOps 環境中有效應用安全開發,因為我們構建代碼的方式已經隨時間推移而發生了改變。
然而,創建安全代碼的理論車載鬥量,真正做到安全開發的企業卻寥寥無幾,很多公司都苦於難以實際運用安全開發。
事實上,微軟強制推行其安全開發生命周期 (SDL) 也就 15 年多點的時間,從 2004 年夏天開始的。此前兩年,現在廣為人知的可信計算 (Trustworthy Computing) 推出,微軟開始在安全軟件開發上投入空前資源。但 2004 年是特別重要的一個時間節點,蘊藏著長篇累牘的指南和最佳實踐中往往會漏掉的一課,同時也是 SDL 在快速變遷的技術思潮中保持長青的關鍵一課——SDL 全是關於開發人員的。我們很快就發現,如果不考慮軟件開發的實際進行方式,或者不關注開發人員須怎樣才能成功,那麼軟件開發實踐注定失敗。
我們必須先理解開發過程,然後界定出該過程中安全應如何操作。SDL 旨在支持開發人員構建更安全的軟件,進而令產品更安全,讓終端用戶更滿意。
我們發現 SDL 方法真的有效。15 年過後,盡管技術使用方法和軟件構建方式都發生了很大變化,SDL 依然在很多全球軟件巨頭企業中充當軟件安全項目的基石,其采納並沒有減緩的跡象。當然,多年前微軟設置的原始參數是做了些修改。但這正是 SDL 的魅力所在:專注進化。
沒什麼是一成不變的——15 年的演進與改變
過去 15 年來發生在 SDL 身上的三大變化可總結為:
-
多樣性
-
速度
-
供應鏈
最初,微軟構建的 SDL 針對使用 C、C++ 和 C# 編程語言進行的軟件開發。如今,公司企業可能使用 10~15 種語言,增加了 SDL 團隊的工作量和工作複雜度。(但並沒有給開發人員帶來麻煩,他們就用自己在用的語言,且只需要用該語言編寫安全代碼就行。)所以,隨時間推移,語言越來越多樣。
速度是 SDL 發生重大變化的另一個領域。SDL 很適應敏捷方法或 DevOps,但一開始也遭到了開發人員的一些抵制。正是這些反饋,通過專注安全開發工具集成,盡可能地自動化驗證,以及確定某些要求可以發布後做到,幫助改善了 SDL 的功能。及時產出安全的產品依舊是 SDL 給開發過程帶來的最主要好處之一。
供應鏈是經歷了重大變化的第三個領域。鑒於使用「第三方代碼」——尤其是開源軟件,幾乎成為當今標準操作,供應鏈或許是變化最大的領域。「第三方代碼」的使用給 SDL 過程又加了一層。使用「第三方代碼」時,公司里最好有人負責列清單、設置驗收與使用標準,並用系統檢測這些公司外部創建的代碼中可能存在的安全問題。最重要的是,準備好在有需要的時候響應問題。
產品完成即安全完成:SDL 15 年之經驗
下面五條經驗習自 15 年來做到和管理 SDL 環境所得:
1. 開發人員想做正確的事
開發人員自豪於自己的公司、產品和工作,知道安全很重要。SDL 直擊開發人員需求,只要正確做到,便可幫助開發人員達成目標。
2. 安全必須融入軟件開發過程,而不僅僅是在產品完成後才測試
SDL 「產品完成即安全完成」的文化是發售安全代碼的唯一途徑,可幫助避免業務目標與安全產生衝突。
3. SDL 是 SDL 團隊建議的產品團隊活動
產品團隊必須信任 SDL 團隊,充分理解安全的重要性,才可以使 SDL 的種種好處在公司里落地開花。文化很重要。
4. 持續改進是 SDL 成功的中心
新型漏洞自然能讓你去更新工具和/或過程。
5. 培訓很好,但工具更好,因為人會忘記,但代碼不會
SDL 生來就是和安全工具協同工作的。專注開發人員並不意味著保持手動操作,公司企業反而應經常考慮技術和自動化可怎樣支持開發人員做到他們的安全目標。
對在軟件安全領域工作過一段時間的人而言,以上這些都不是什麼驚天動地的東西。最終,無非就是賦權開發人員。但或許是因為我們大多數人內心都是工程師或技師,有時候我們會失去焦點,拘泥於操作和工具,然後開始將 SDL 當成檢查清單而非一個過程。所以,時不時地,有必要後退一步,記起我們的起點和一路走來所學到的東西,確保始終銘記 SDL 所有的一切都是關於開發人員的。
可查看 SAFCode 最近的 Security Champions 論文,獲悉更多關於軟件安全中「人」這一方面的知識。
SAFCode Security Champions 論文:
https://safecode.org/publications/#safecodepublications-2661
相關閱讀
28款DevSecOps工具助力安全開發