前陣子在粉絲專頁中介紹了一篇 DevSecOps 的文章:4 New Year’s Resolutions to Integrate Security into DevOps,很適合在初六開工時再次分享給大家。

不過與其再次分享文章,我想多整理更多 DevSecOps 思考的方向給大家參考。

畢竟在兩天後又要放假了,可以趁這幾天收心時慢慢閱讀和思考。

如果要一句話說明 DevSecOps,也許可以說是 「在 DevOps 中導入 Security」,並且「讓大家都有權力和責任來實踐資安」

在接觸 DevSecOps 時,可能會覺得資安之路漫長且遙遙無期。所以通常在開始前,我們可以先確定未來的「目標」。

有了目標之後,接著才是 DevSecOps 中三大部分:「人、流程、技術」,三個部分的實踐和延伸。

目標:定義團隊的資安未來

沒有共同的目標會讓團隊感到困惑。讓大家都有共同的未來藍圖,不僅在之後可以確定自己沒有走歪,也讓團隊可以更堅定地朝共同目標前進。

如同這篇文章所介紹,我們開始的第一步可以先「定義你的未來」。

而這個未來,可以從一個問題開始:「如果最後成功實踐 DevSecOps,那會是長什麼樣子?」

從這個問題可以再延伸出:

  • 現在和未來,我們要解決什麼資安問題?
  • 團隊大家會是一個什麼樣的狀態?
  • 為了達到這個目標,中間的每個里程碑(milestone)又會是哪些?

包含資安風險、合規這類的問題就會開始出現,不過先不用延伸太多,我們先有個「未來目標」的光景、中間里程碑、以及簡單的實踐計畫(例如:PDCA)就好。

為了朝向我們未來想達成的目標,我們可以將 DevSecOps 拆成三個部分來準備:「人、流程、技術」。

人:文化與權責

由上而下

一般來說都會知道,要讓大家都有「責任」來做資安,但常常忽略了還要讓大家都有 「權力」 來實踐資安。

而這類的文化推動,必要條件就是由上而下

而這樣的權責要怎麼傳達?扁平化組織要怎麼達成共識?文化的推動與持續經營?

而且對大家來說,與其「強制讓大家負責」,能讓大家更自主負責資安想必會是更好的方式。

像是導入 Security Champions,對於在團隊中有資安貢獻的人們,讚賞他們的資安貢獻、並且提供他們實踐資安所需的資源。

權責的組成

雖然說資安是大家的權責,但還是需要有明確的執行人或負責人來整合大家的需求和執行方向。

其中在這篇文章中提到的 SSG(Software Security Group) 就是一個方式。

SSG 是在 BSIMM 中所定義,通常可以從內部找出 IT 資安工程師、或是外部找尋軟體資安人才來組成。

但 SSG 的人才組成其實是一個蠻大的問題:沒有現成的人才?聘人和內部培訓的效益與成本衡量?

其實在起頭,SSG 甚至只有一位也可以,至少有個擁有資安經驗的領導者(或持續學習資安新知的人),可以帶領大家朝確定的資安方向前進。

培訓與學習

內部資安經驗的人稀少的狀況下,要怎麼讓大家都有資安意識?

也許有個不錯的方式是:培訓和分享知識。

Awesome DevSecOps 裡面收集了很多資安資訊,包含資安培訓、書籍、研討會等等。

甚至也可以在線上的 Wargame 平台上學習攻擊技巧,進而轉變成防禦能力。

而在團隊內,持續接觸和了解資安,並且持續提供給大家資安知識,這對提升團隊資安意識也會有不少幫助。

流程:將資安導入開發流程中

五個階段

DevSecOps 的開發流程可以分成五個階段

  1. 準備階段(Preparation Phase)
  2. 設計階段(Design Phase)
  3. 建構階段(Build Phase)
  4. 部署階段(Deploy Phase)
  5. 執行階段(Run Phase)

每個階段都有實踐資安的方法,像是 10 個最佳實踐嵌入資安到 DevOps、或是 DevSecOps pipeline 與工具等文章都有提到每個階段可行的資安內容。

裡面包含像是 CI/CD、開發生命週期(SDLC,Software Development Life Cycle)的每個階段,將資安自動化,並且將資安左移

準備階段:風險與成本

至於「將資安左移」要移多少?每個階段要導入的資安要到什麼程度?

這是在一開始的準備階段需要考量的,但這階段常見的問題在於: 「不夠瞭解資安風險」

光是 MITRE ATT&CK 定義的攻擊技術和手法就上百種,如何從簡單明瞭的方式讓大家知道現在的風險?這些風險的損失和實踐的成本該怎麼量化衡量?

比較容易導入的像是用 STRIDE 評估、或是 CVSS 量化等等,都是值得考量的工具。

技術:工具輔助與快速疊代

工具只是輔助

一個常見的迷思是:導入資安工具就算是導入 DevSecOps。

但其實工具的目的是幫助資安自動化、以及標準化資安項目,並且藉由工具來疊代優化產品安全。

而工具的選擇也是一個問題,像是在這篇文章提到的 28 個 DevSecOps 工具、或是 Awesome DevSecOps 列的工具

這些工具中有許多問題需要評估:工具的使用成本?維護成本?甚至在必要時決定是否要付費購買工具?等等各種層面問題需要考量。

檢查清單與合規

要檢查自己的資安技術整合是否有達標,可以參考一些檢查清單來確認。

或是搭配一些自動化合規或稽核工具 ,像是 inspecdev-sec.io 等工具來檢查是否有達到足夠的防禦效果。

學習、思考、優化,並且疊代

資安的內容看似很多,且每篇文章連結出去還有很多要學。

但我認為,實踐 DevSecOps,也許不用一開始就全部到位,是一步一步疊代成長的,當然「人」也是。

我們也許無法一次到位把所有資安技能都學會,但就像之前提過,可以像 DevOps 一樣持續疊代成長。

而面對不同環境和文化,都會有不同的 DevSecOps。大方向保持一致,然後找出適合自己團隊的方法,並且讓整個團隊和產品持續成長,也許最後就可以達到你所想的那個資安未來。