Chuyển đến nội dung chính

DevSecOps 與 Shift-Left:為何資安該在管線中執行,而不是放到最後關頭

Duy Tran8 分鐘
DevSecOps 與 Shift-Left:為何資安該在管線中執行,而不是放到最後關頭
在許多組織中,資安審查仍是上線前最後一道關卡。等到那時才發現漏洞,修復成本是在程式碼審查階段發現的 30-100 倍。Shift-left 解決這個問題的方式,不是拿掉最後檢查,而是把控制點往生命週期的更早階段推進。

為什麼需要 shift-left?

「資安即關卡」模式——在 SDLC 末端放一道人工審查——無法跟上現代發布節奏。當 CI/CD 團隊一天部署多次時,不可能等一位資安工程師審查每個 pull request。常見後果:

  • 資安成為瓶頸,開發團隊想方設法繞過。
  • 缺陷晚發現,修復成本高,有時甚至需要重做架構。
  • 稽核報告厚厚一本,卻無法反映系統真實狀態。

Shift-left 的解法是把末端檢查轉換為持續守門 (guardrail):SDLC 的每個階段都有合適、自動化的資安控制,並在開發者工作的當下就提供回饋。

Shift-left 不是什麼

幾個常見誤解:

  • 不是把所有責任推給開發者。開發者寫程式,但資安團隊提供工具、規則集、威脅模型範本與輔導。Champion 模式是擴展知識的關鍵。
  • 不是取消最終 pentest。Pentest、red team、bug bounty 仍是抓邏輯漏洞與 0-day 不可或缺的環節。Shift-left 只是減少送到 pentester 手上的基礎缺陷數量。
  • 不是一次打開所有工具。同時在 100 個 repo 上開啟 SAST + DAST + SCA + secret scan,只會造成警報疲勞並讓計畫失去支持。

沿著 SDLC 的控制地圖

從左到右的參考對照:

階段典型控制工具範例
需求輕量威脅模型、abuse caseOWASP Threat Dragon、Microsoft TMT
設計安全設計審查、資料分級Architecture Decision Record (ADR)
程式碼Linter、SAST、pre-commit secret scanSemgrep、Gitleaks、ESLint security plugin
建置SCA、SBOM、容器掃描、簽署Trivy、Grype、Syft、Cosign
部署IaC 掃描、admission policyCheckov、Kyverno、OPA Gatekeeper
執行階段WAF、runtime detection、稽核日誌Falco、Cilium Tetragon、SIEM
維運定期 DAST、IR、post-mortemOWASP ZAP、PagerDuty、Sigma

如果公司還什麼都沒有,該從哪裡開始?

根據成本/效益權衡的優先順序:

  1. Secret scanning 在 pre-commit 與 CI 端。便宜、容易快速見效,能阻擋成本最高的事故類型。
  2. SCA + SBOM,讓你知道系統用了哪些套件。當新 CVE 公布時,能在幾分鐘而非幾天內回答「我們是否受影響?」
  3. Branch protection + signed commit + pinned action SHA。保護管線本身免於 pipeline attack——成本幾乎為零。
  4. 對最關鍵的服務做一頁式威脅模型。光是在簡單 DFD 上跑 STRIDE,就能避開一整類設計缺陷。
  5. 之後再擴展 SAST、DAST、容器與 IaC 掃描。

與 maturity model 連結

要知道自己在哪、下一步怎麼走,可用 OWASP SAMM 2.0 或 BSIMM 對 5-15 個關鍵 practice 評分。目標不是讓所有 practice 都到 Level 3,而是每季挑 2-3 個重點領域從 Level 1 升到 Level 2。搭配可量化的指標與 OKR (漏洞 MTTR、掃描覆蓋率、有威脅模型的服務比例),能讓管理層看見價值並持續投資。

結論

Shift-left 是策略,不是工具。目標是把資安變成自動化守門,有指標、有 owner、在缺陷產生當下就回饋。從幾個快速勝利開始 (secret、SCA、branch protection),再依 maturity 擴展。當一切上手後,資安不再是阻擋發布的關卡,而是管線的自然節奏。