Microsoft 安全性開發生命週期 (SDL)

在開發安全軟體時,安全性和隱私權絕對不應該是事後思考,必須有正式程式,以確保在產品生命週期的所有時間點都考慮這些程式。 Microsoft 的安全性開發生命週期 (SDL) 將完整的安全性需求、技術特定工具和必要程式內嵌到所有軟體產品的開發和作業中。 Microsoft 的所有開發小組都必須遵守 SDL 程式和需求,以降低開發成本來產生更安全的軟體,並減少較不嚴重的弱點。

安全性開發生命週期程式。

Microsoft SDL 包含七個元件,包括五個核心階段和兩個支援的安全性活動。 五個核心階段包括需求、設計、實作、驗證和發行。 每個階段都包含必要的檢查和核准,以確保能正確解決所有安全性和隱私權需求和最佳做法。 這兩個支援的安全性活動訓練和回應會分別在核心階段之前和之後進行,以確保它們已正確實作,且軟體在部署後仍保持安全。

訓練

所有 Microsoft 員工都必須完成一般安全性意識訓練,以及適合其角色的特定訓練。 初始安全性意識訓練會在雇用時提供給新員工,而年度重新整理訓練則需要在整個 Microsoft 雇用期間進行。

開發人員和工程師也必須參與角色特定訓練,讓他們掌握安全性基本概念和安全開發的最新趨勢。 也鼓勵所有全職員工、實習員工、臨時員工、轉包商和協力廠商,並有機會尋求進階的安全性和隱私權訓練。

需求

Microsoft 開發的每個產品、服務和功能都是從明確定義的安全性和隱私權需求開始;它們是安全應用程式的基礎,並通知其設計。 開發小組會根據產品將處理的資料類型、已知的威脅、最佳做法、法規和產業需求,以及從先前事件中學習到的課程等因素來定義這些需求。 定義之後,就會清楚定義、記載和追蹤需求。

軟體發展是持續的程式,這表示相關聯的安全性和隱私權需求會在整個產品生命週期中變更,以反映功能和威脅環境的變更。

設計

一旦定義安全性、隱私權和功能性需求之後,就可以開始設計軟體。 在設計程式中,會建立威脅模型,以協助根據風險識別、分類和評分潛在威脅。 隨著軟體的變更,必須在每個產品的生命週期中維護和更新威脅模型。

威脅模型化圖表。

威脅模型化程式一開始會定義產品的不同元件,以及它們如何在關鍵功能案例中彼此互動,例如驗證。 建立資料流程圖 (DFD) ,以視覺化方式表示所使用的關鍵資料流程互動、資料類型、埠和通訊協定。 DFD 可用來識別並排定新增至產品安全性需求之風險降低的威脅優先順序。

開發人員必須針對所有威脅模型使用 Microsoft 的Threat Modeling Tool,這可讓小組:

  • 溝通其系統的安全性設計
  • 使用經過證實的方法分析安全性設計是否有潛在的安全性問題
  • 建議和管理安全性問題的緩和措施

發行任何產品之前,會檢閱所有威脅模型的正確性和完整性,包括降低無法接受的風險。

實作

實作會從開發人員根據他們在前兩個階段中建立的計畫撰寫程式碼開始。 Microsoft 為開發人員提供一套安全的開發工具,以有效實作他們所設計軟體的所有安全性、隱私權和功能需求。 這些工具組括編譯器、安全的開發環境,以及內建的安全性檢查。

驗證

在發行任何書面程式碼之前,必須先進行數次檢查和核准,以確認程式碼符合 SDL、符合設計需求,而且沒有程式碼撰寫錯誤。 SDL 需要由檢閱者與開發程式碼的人員分開進行手動檢閱。 職責區分是此步驟中的重要控制措施,可確保同一個人無法撰寫和釋放任何程式碼,而導致潛在的意外或惡意傷害。

您也需要進行各種自動化檢查,而且會內建在認可管線中,以便在簽入期間和組建編譯時分析程式碼。 Microsoft 所使用的安全性檢查分為下列類別:

  • 靜態程式碼分析:分析原始程式碼是否有潛在的安全性缺陷,包括程式碼中存在認證。
  • 二進位分析:評估二進位程式碼層級的弱點,以確認程式碼已準備好生產環境。
  • 認證和秘密掃描器:識別原始程式碼和組態檔中可能的認證和秘密公開實例。
  • 加密掃描:驗證原始程式碼和程式碼執行中的加密最佳做法。
  • 模糊測試:使用格式不正確和非預期的資料來執行 API 和剖析器,以檢查弱點並驗證錯誤處理。
  • 組態驗證:根據安全性標準和最佳做法分析生產系統的設定。
  • 元件控管 (CG) :開放原始碼軟體偵測和檢查版本、弱點和法律義務。

如果手動檢閱者或自動化工具在程式碼中發現任何問題,提交者將會收到通知,而且必須先進行必要的變更,才能再次提交以供檢閱。

此外,內部和外部提供者會定期在 Microsoft 線上服務上進行滲透測試。 滲透測試提供另一種方法來探索其他方法未偵測到的安全性缺陷。 若要深入瞭解 Microsoft 的滲透測試,請參閱 Microsoft 365 中的攻擊模擬

發行

通過所有必要的安全性測試和檢閱之後,組建不會立即發行給所有客戶。 組建會在稱為安全部署程式 (SDP) 中,有系統地逐漸發行至較大和較大的群組,稱為「通道」。 SDP 通道的定義如下:

  • 通道 0:負責服務的開發小組
  • 通道 1:所有 Microsoft 員工
  • 通道 2:Microsoft 外部的使用者,已將其組織或特定使用者設定為在目標發行通道上
  • 環形 3:子階段中的全球標準版本

這些通道中的組建會保留適當的天數且具有高負載週期,但環形 3 除外,因為建置已針對先前通道中的穩定性進行適當測試。

回應

所有 Microsoft 服務在發行後都會受到廣泛記錄和監視,並使用集中式的近乎即時監視系統來識別潛在的安全性事件。 若要深入瞭解 Microsoft 的安全性監視和安全性事件管理,請參閱 安全性監視概觀Microsoft 安全性事件管理