運用專業知識把一項東西從無到有做出來就是做東西的精髓,做東西則必須要注意每個流程的安全性元素及生命週期的重要性。
生命週期要一起看的有以下兩種
SSDLC (Secure Software Development Life Cycle)
流程如下
- 計畫階段 (Plan)
- 先寫計畫書及決定開發方法
- 組建團隊 (IPT)
- Integrated Product Team
- 依照產品需求找尋相關能力而整合型的一個團隊簡稱
- 分析階段 (Analysis)
- 收集需求
- URS (User Requirements Specification)
- 分析及記錄需求
- SRS (Software Requirements Specification)
- 軟體要求規範
- 這在某些組織中是有順序性的,先從使用者需求分析後而產出SRS
- 紀錄需求
- 內部驗證正確性 (Verification)
- 例如: 電氣訊號產品就是要去驗EMC/ EMI/ SI的部分
- 外部驗證有效性 (Validation)
- 驗證資訊系統及其週邊的相容性問題,是否符合客戶需求
- 設計階段 (Design)
- 從架構開始設計
- 細部設計
- 設計審查
- 再次驗證是否滿足 V & V
- V & V (Verification & Validation)
- 正確性 & 有效性
- 威脅建模
- 種類超多
- TRA & RRA
- 威脅及風險分析 & 快速風險分析
- 主要是用在專案的快速分析上
參考自 RRA intro
- DREAD (CISSP 考試範圍)
- D - 損害
- R - 可再重現性
- E - 可利用程度
- D - 受影響用戶及可發現性
- 微軟有提供DREAD 威脅建模的工具,但怎麼使用不在此討論,有興趣的讀者可以前往MS DREAD tool 自行參考
- VAST (CISSP 範圍)
參考自 威脅建模
- 開發階段 (Development)
- 按照設計圖施工
- 需要有版本庫 (Code Repository)
- 物件導向的程式設計原則 (OOP)
- 測試階段 (Testing)
- 測試種類
- 箱子測試
- 黑箱: 測試人員對受測物不存在任何知識情報
- 白箱: 測試人員對受測物非常了解所有知識情報
- 灰箱: 測試人員對受測物的知識情報似懂非懂
- 動靜態測試
- 靜態測試
- 程式(Program)放在硬碟中就直接進行測試而稱之
- 動態測試
- 程式執行後載入到記憶體中(Process),進行的測試稱之
- DAST
- 測試對象
- 黑盒測試技術
- 原理:
- 缺點:
- 影響可用性
- 可能造成業務持續及產品及服務中斷的風險
- SAST
- 直接對原始碼進行檢測的一種方法
- 原理:
- 將程式先轉譯成一種中介語言並針對程式中的各種不安全的變數、邏輯進行一系列的評估
- 缺點:
- 手動測試 <> 自動測試
- 探索性測試: 使用者依照手動測試的方式,使用各種嘗試方法去做的測試而稱之,沒有固定的手動測試流程及方法
- 固定流程: 依照定義好的手動測試步驟進行測試
- 自動測試: 經手動流程轉為自動化流程的測試工具後所進行的測試而稱之
參考
IDEA 軟體開發模型總共有五個階段
- Initialing (發起)
- Diagnosing (診斷)
- Establishing (建立)
- Acting (行動)
- Learning (學習)
參考自實體書籍 OSG 9th
[10萬個WHY] DevOps <> DevSecOps 差別?
DevOps 的流程中,最讓人擔心的點在於沒有經過授權就可以隨意發布到終端,這就會造成一定的負面風險。所以有人提出要在DevOps 設入安全斷點在重要的地方,名稱就變成DevSecOps。
NIST System Development Life Cycle (SDLC)
- 系統開發的生命週期
- 流程元素如下
- 啟動
- 開發 或收購
- 實施/ 評估
- 運營及維護
- 廢止後的處置
看到黑影(SDLC)就開槍,結果就GG了
不能看到生命週期就直接以為都是指軟體或系統的,但其實兩者間也可能存在交互關係,而不能直接單獨看待。其實並不知道生命周期指的是軟體的還是指系統的生命週期