前言
隨著企業提升響應市場變化的速度,不管企業的規模為何,抑或屬於哪一種產業,DevOps 儼然成為現代 IT 的重要典範。但在快速迭代的業務發展下,由於傳統的安全治理較為繁瑣,也使企業在導入 DevOps 的過程中,從需求、設計、實作,到後續的監控和改善,較難看見充分的安全實踐,組織亦缺乏在每個流程階段,衡量當前安全的成熟狀況。
什麼是 OWASP DSOMM?
DSOMM 2 的全名為 DevSecOps Maturity Model(DevSecOps 成熟度模型),或許大家較耳熟能詳 OWASP 的另一個軟體安全的成熟度模型 SAMM(Software Assurance Maturity Model,軟體保證成熟度模型),SAMM 針對五個業務功能(治理、設計、實作、驗證、維運)定義了一系列的安全實踐及評量指標,協助組織將安全覆蓋至全軟體開發生命週期。SAMM 為較高層級的規範性模型,而 DSOMM 則為更具體的 DevSecOps 實踐。
DevSecOps 維度與成熟度級別
DSOMM 針對 DevSecOps 定義了五個主要維度,而各個維度下又細分了多個子維度3:
維度 | 子維度 |
---|---|
構建與部署(Build and deployment) | |
文化與組織(Culture and Organization) | |
實作(Implementation) | |
資訊蒐集(Information Gathering) | |
測試與驗證(Test and Verification) |
DevSecOps 的成熟度分成四個級別:
L1: 對於安全實踐有基本的理解L2: 採用基本的安全實踐L3: 高度採用安全實踐L4: 大規模的進階安全實踐部署
在各個子維度下,各級別會包含數個與安全性相關的活動(下個段落將進一步說明),當完成的安全活動越多,則表示組織在安全實踐有較高的成熟度。如下圖的比較,右圖組織的 DevSecOps 成熟度高於左圖組織:
DSOMM 安全活動實踐
每個子維度在各級別會定義 0~N 個安全活動,協助組織評估當前的 DevSecOps 成熟度,組織可根據未完成的活動實施下一階段的計劃。DSOMM 描述了該活動若未被實踐可能面臨的風險(Risk)和完成後所帶來的機會(Opportunity),以及所需要的知識、時間、資源,並提供了實作方向。同時,DSOMM 將各活動對應至相關的 ISO27001 2017 控制項目與 OWASP SAMM 的實踐活動,對於需要符合 ISO27001 規範的企業,或想要基於 ISO27001 / SAMM 實踐資訊安全的組織而言,DSOMM 為 DevOps 如何落實安全與合規提供了明確的指引。
維度 | 子維度 | L1 | L2 | L3 | L4 |
---|---|---|---|---|---|
構建與部署(Build and deployment) | 構建(Build) | - | |
DSOMM | ISO27001 2017 | SAMM v2 |
---|---|---|
已定義的構建流程 | i-secure-build|A|1 構建流程 |
此外,從分頁 Dependencies 可以了解每個安全活動的關聯,而分頁 Ease and Value 則呈現各個活動實施的難易度和價值。因此組織可以依據活動的關聯性進行規劃,亦可參考難易度和價值進行優先排序。
如何使用 DSOMM 評估工具?
更新 (2023):目前的架設方式已變動,若有架設需求的讀者請參考文章:DevSecOps 成熟度模型(DSOMM)2023 年發展狀況‼️
原文:
DSOMM 的官網為開源專案,位在 GitHub,不過 DSOMM 已有提供 Docker 映像檔,因此無需再自行下載程式碼編成映像檔。從 DSOMM Matrix 分頁中可以看到,活動分為「藍色項目」及「綠色項目」(如下圖),「藍色項目」表示未完成
的活動,「綠色項目」則表示已完成
的活動。
組織如何使用這個模板自行進行評估呢?
在進行成熟度評估時,我們需要將組織中
已完成
的活動條列在selectedData.csv
。此檔案可從 GitHub 下載:"element" "Building and testing of artifacts in virtual environments" "Blue/Green Deployment" ...
在本地端運行 DSOMM 服務(Docker)
# 建立資料夾 $ mkdir dsomm $ cd dsomm # 將 selectedData.csv 複製到此資料夾下,並將您組織已完成的活動條列上去 $ cp <path_to_selectedData.csv> . # 將 selectedData.csv 掛載至容器內,並運行 DSOMM 服務 $ docker run -d --name dsomm --mount type=bind,source="$(pwd)"/selectedData.csv,target=/var/www/html/selectedData.csv -p 8080:80 wurstbrot/dsomm:latest
打開瀏覽器,輸入
http://localhost:8080
即可看到與 DSOMM 官網相似的畫面4取得當前組織的 DevSecOps 成熟度狀態
綠色越深表示該級別的活動完成度越高;白色則為該級別無任何活動,或該級別的活動皆未被完成。
後記
DSOMM 協助組織在整個產品的生命週期有效地制定 DevSecOps 策略和執行關鍵的活動。成為擁有高成熟度的組織是無法一蹴可幾的,因此組織必須明確每一階段的目標及任務,也同時需要所有人的齊心合作。更重要的是,持續評估及安排安全回顧活動,確認當前處於什麼階段、是否有需要調整的地方?
最後,DSOMM 看起來仍在努力發展中,官網內容其實有不少的錯字和失效連結,因此建議採用最新版的 Docker 映像檔,直接在本機端運行服務完成您組織的評量。有任何錯誤或點子亦可透過 Pull Request 為開源貢獻一份心力!