前言

隨著企業提升響應市場變化的速度,不管企業的規模為何,抑或屬於哪一種產業,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

表格一:DevSecOps 維度
維度子維度
構建與部署(Build and deployment)
  • 構建(Build)
  • 部署(Deployment)
  • 補丁管理(Patch Management)
  • 文化與組織(Culture and Organization)
  • 設計(Design)
  • 教育與指導(Education and Guidance)
  • 流程(Process)
  • 實作(Implementation)
  • 應用程式強化(Application Hardening)
  • 基礎設施強化(Infrastructure Hardening)
  • 資訊蒐集(Information Gathering)
  • 日誌(Logging)
  • 監控(Monitoring)
  • 測試與驗證(Test and Verification)
  • 應用程式測試(Application tests)
  • 彙整(Consolidation)
  • 應用程式動態深度(Dynamic depth for applications)
  • 基礎設施動態深度(Dynamic depth for infrastructure)
  • 應用程式靜態深度(Static depth for applications)
  • 基礎設施靜態深度(Static depth for infrastructure)
  • 測試強度(Test-Intensity)

  • DevSecOps 的成熟度分成四個級別

    L1: 對於安全實踐有基本的理解
    L2: 採用基本的安全實踐
    L3: 高度採用安全實踐
    L4: 大規模的進階安全實踐部署


    在各個子維度下,各級別會包含數個與安全性相關的活動(下個段落將進一步說明),當完成的安全活動越多,則表示組織在安全實踐有較高的成熟度。如下圖的比較,右圖組織的 DevSecOps 成熟度於左圖組織:

    DSOMM 安全活動實踐

    每個子維度在各級別會定義 0~N 個安全活動,協助組織評估當前的 DevSecOps 成熟度,組織可根據未完成的活動實施下一階段的計劃。DSOMM 描述了該活動若未被實踐可能面臨的風險(Risk)和完成後所帶來的機會(Opportunity),以及所需要的知識、時間、資源,並提供了實作方向。同時,DSOMM 將各活動對應至相關的 ISO27001 2017 控制項目與 OWASP SAMM 的實踐活動,對於需要符合 ISO27001 規範的企業,或想要基於 ISO27001 / SAMM 實踐資訊安全的組織而言,DSOMM 為 DevOps 如何落實安全與合規提供了明確的指引。

    表格二:構建與部署 - 構建 安全實踐
    維度子維度L1L2L3L4
    構建與部署
    (Build and deployment)
    構建
    (Build)
  • 已定義的構建流程
  • 在虛擬環境構建和測試 artifacts
  • artifacts 簽章
  • 程式碼簽章
  • -

    表格三:構建與部署 - 構建 《已定義的構建流程》
    DSOMMISO27001 2017SAMM v2
    已定義的構建流程
  • 12.1.1 文件化作業程序
  • 14.2.2 系統變更控制程序
  • i-secure-build|A|1 構建流程

    此外,從分頁 Dependencies 可以了解每個安全活動的關聯,而分頁 Ease and Value 則呈現各個活動實施的難易度和價值。因此組織可以依據活動的關聯性進行規劃,亦可參考難易度和價值進行優先排序。

    例:構建與部署 - 部署 活動依賴關聯性例:活動實施的難易度和價值

    如何使用 DSOMM 評估工具?

    DSOMM 的官網為開源專案,位在 GitHub,不過 DSOMM 已有提供 Docker 映像檔,因此無需再自行下載程式碼編成映像檔。從 DSOMM Matrix 分頁中可以看到,活動分為「藍色項目」及「綠色項目」(如下圖),「藍色項目」表示未完成的活動,「綠色項目」則表示已完成的活動。


    組織如何使用這個模板自行進行評估呢?

    1. 在進行成熟度評估時,我們需要將組織中已完成的活動條列在 selectedData.csv。此檔案可從 GitHub 下載:

      "element"
      "Building and testing of artifacts in virtual environments"
      "Blue/Green Deployment"
      ...
      
    2. 在本地端運行 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
      
    3. 打開瀏覽器,輸入 http://localhost:8080 即可看到與 DSOMM 官網相似的畫面4

    4. 取得當前組織的 DevSecOps 成熟度狀態

      綠色越深表示該級別的活動完成度越高;白色則為該級別無任何活動,或該級別的活動皆未被完成。

    後記

    DSOMM 協助組織在整個產品的生命週期有效地制定 DevSecOps 策略和執行關鍵的活動。成為擁有高成熟度的組織是無法一蹴可幾的,因此組織必須明確每一階段的目標及任務,也同時需要所有人的齊心合作。更重要的是,持續評估及安排安全回顧活動,確認當前處於什麼階段、是否有需要調整的地方?

    最後,DSOMM 看起來仍在努力發展中,官網內容其實有不少的錯字和失效連結,因此建議採用最新版的 Docker 映像檔,直接在本機端運行服務完成您組織的評量。有任何錯誤或點子亦可透過 Pull Request 為開源貢獻一份心力!


    1. Photo by Roberto Reposo on Unsplash
    2. OWASP DSOMM
    3. 可能因 DSOMM 版本而有不同的維度和實踐活動
    4. 由於 DSOMM 官網並無明確版本,因此使用最新的映像檔可能會與官網有所出入,包含內容錯誤的修正、安全活動的增減等