了解依據設計的安全性與隱私權

已完成

Microsoft SDL 在設計上強調安全性和隱私權的重要性。 安全性和隱私權功能不應該是附加元件,而是我們產品和服務的中心元件。 我們在功能生命週期初期定義安全性需求、維護所有主要服務元件和功能最新的威脅模型,並要求手動檢查所有原始程式碼,以建立產品的安全性。

安全性和隱私權需求

安全性與隱私權需求應通知所有高度安全的應用程式和系統的設計。 在 Microsoft,我們開發的每一項產品、服務和功能都從清楚定義的安全性和隱私權需求開始。 由於軟體開發是持續不斷的過程,因此我們會在整個產品生命週期中持續更新這些需求,以反映所需功能和威脅情況中的變更。 影響安全性和隱私權需求的因素包括所開發軟體的性質、已知的安全性威脅、從安全性事件學習到的經驗、法律和產業需求,以及內部標準和程式碼編寫作法。

定義安全性和隱私權需求的最佳時間就是在產品或功能的初始設計和規劃階段。 如此可讓開發團隊將安全性功能整合到產品的核心功能。 例如,我們在設計階段詢問有關每個產品的一個問題,就是產品是否將處理敏感性資訊,例如客戶資料。 Microsoft 的 SDL 包含安全性和隱私權需求,可協助開發人員實作為敏感資料處理的最佳作法,並確保我們的軟體根據相關需求安全地收集、處理和儲存敏感性資料。 敏感數據處理的 SDL 需求包括加密、記錄和事件響應準備,以保護敏感數據,併為 Microsoft 安全性回應小組提供調查和回應潛在安全性事件所需的稽核功能。

威脅模型和資料流程圖 (DFD)

一旦產品的設計包含明確定義的安全性和隱私權需求,開發團隊會建立威脅模型,以視覺化方式呈現最可能影響產品的安全性和隱私權威脅。 威脅模型可協助根據風險識別、分類和評分潛在威脅,讓開發人員可以建議及實施適當的防護功能。 SDL 需要 Microsoft 的開發小組維護最新的威脅模型和數據流圖, (所有主要服務元件和功能的 DFD) 。

圖表顯示元件威脅模型:定義、圖表、識別、緩解和驗證。

威脅模型一開始會先定義產品或功能的元件,並以圖解表示元件在重要功能案例 (例如驗證或敏感資料處理) 中的彼此關係。 威脅模型圖表包含相關的資料流程、功能和程式,可協助以視覺化方式呈現對服務的威脅。 在威脅模型處理過程中,服務團隊會建立和維護 DFD,記錄服務元件或功能使用的所有資料流程、連接埠和通訊協定。

已完成的圖表可用來識別系統威脅,並排定防護威脅的優先順序。 開發團隊會針對威脅模型暴露的風險提議和實作緩解措施。 新的緩和措施會新增到產品的安全性需求中,在手動程式碼檢閱和自動化測試期間驗證程式碼,並檢閱為發行前核准程式一部分。

現代化軟體開發使用敏捷方法,強調為客戶提供快速功能,因此開發威脅模型是持續進行的過程。 為了確保開發團隊之間的一致性,以及協助讓威脅模型保持在最新狀態,Microsoft 要求其開發人員針對所有威脅模型使用 Microsoft 的威脅模型工具。 威脅模型工具可讓 Microsoft 的任何開發人員或軟體結構設計師:

  • 就關於系統的安全性設計進行溝通。
  • 使用經證實的方法分析潛在安全性問題的安全性設計。
  • 建議和管理安全性問題的緩解措施。

在發行前的安全性審查期間,會審查所有威脅模型是否正確和完整,包括是否針對無法接受的風險採取緩和措施。 這些檢閱將釐清責任歸屬,並用於鼓勵以安全性為導向的設計。

手動程式碼檢閱

我們的開發團隊會使用 Azure DevOps Git 來控制所有新程式碼存放庫的版本。 若要確認在 Microsoft 開發的所有程式碼都符合 SDL 和設計需求,SDL 需要個別檢閱者手動檢閱程式碼,才能將程式碼變更簽入發行分支。 程式碼檢閱者會檢查程式碼錯誤,並確認程式碼變更符合 SDL 和設計需求、通過功能和安全性測試,並能確實可靠地執行。 他們也會檢查相關聯的文件、設定和相依性,以確保系統會適當地記錄程式碼變更,且不會造成非預期的副作用。

如果檢閱者在程式碼檢閱期間發現問題,他們可以要求提交者以建議的變更和其他測試重新提交程式碼。 程式碼檢閱者也可以決定完全封鎖不符合需求的程式碼簽入。 對於提交供發行的程式碼,所有變更都必須明確歸到單一開發人員,並由另外的檢閱者檢閱,以釐清責任歸屬。 此外,對於發行程式碼的所有變更都必須記錄並保留至少 18 個月,以提供所有程式碼變更的可稽核記錄,以及其作者、業務理由、測試結果,以及核准變更的檢核者。

深入了解