SBOM
SBOM 自動化
SBOM 自動化是指每次建置都會產生自己的軟體物料清單(SBOM),不需要任何人把版本複製到試算表裡。如果您的團隊在多個產品之間手動整理元件,這份清單到下一次版本發布時就已過時,而且每多一個產品,工作量就跟著增加。
更新日期
為什麼手動維護的 SBOM 會行不通
- 下一次建置就過時。相依套件在每次版本發布時都會改變,而試算表只有在有人記得更新時才會改變。
- 只涵蓋人看得到的部分。直接相依套件很容易列出。但其下的遞移相依套件就不是了,沒有人能用手動方式追蹤。
- 檔案會不斷增加。多個產品、每個產品又有多個支援中的版本,就代表數十個檔案,每個都有自己的負責人,也各有一套自認正確的說法。
- 無法回答真正重要的問題。當新漏洞出現時,您需要知道哪些版本包含該套件。在一整個資料夾的試算表中搜尋既緩慢,答案也不可信。
- 不是別人要的格式。客戶與工具期待的是 CycloneDX 或 SPDX 等機器可讀的格式。請參閱如何回應客戶的 SBOM 請求。
好的 SBOM 自動化會做到什麼
- 為每次建置產生 SBOM,不需要任何人執行或記得任何事。
- 涵蓋完整的相依樹,包括每一層的遞移相依套件。
- 讓每份 SBOM 對應一次建置,讓您知道哪個檔案描述哪個版本。
- 說明它看不到什麼,而不是把部分清單當成完整清單呈現。
- 匯出標準格式,讓 SBOM 能用於下一個工具與下一位客戶。
- 持續監控已出貨的內容,因為週一沒有問題的版本,週二就可能受到影響。
三種維護 SBOM 的方式比較
| 問題 | 試算表 | CI 中的掃描工具 | 在建置過程中記錄 |
|---|---|---|---|
| 何時更新? | 有人記得時 | 掃描步驟執行時 | 每次建置 |
| 資料從何而來? | 人工 | 鎖定檔(lockfile)或最終產出 | 建置實際取用的內容 |
| 遞移相依套件? | 很少涵蓋 | 僅限能推算出的部分 | 每一層都涵蓋 |
| 隱藏相依套件,例如安裝腳本下載的內容? | 否 | 會遺漏 | 會記錄 |
| 從 CI 快取還原的套件? | 否 | 視工具而定 | 會記錄並標示為來自快取 |
| 漏洞監控? | 手動 | 通常需另一套工具 | CRACI 內建 |
以掃描工具自動化,確實比試算表進步許多,但它仍然是在推測建置放進了什麼。背後的道理請參閱為什麼建置才是事實的來源。
您的試算表會變成怎樣
元件資料會移出試算表:版本與套件來自建置,因此沒有人需要手動輸入。留下來的是只有您的團隊才知道的資訊,例如有哪些產品、由誰負責,以及哪些版本仍在支援中。這才是值得人花時間的部分。
CRACI 如何處理
CRACI 以更快、成本更低的執行器取代您的 GitHub 託管執行器,並在每次建置執行時記錄 SBOM。您只要設定 runs-on: craci,執行結果仍會顯示在 GitHub 中。標準建置不需任何設定即可取得完整的 SBOM。使用自有套件庫或特殊容器設定的建置,可能需要一些設定。
- 是記錄,不是掃描。CRACI 會看到進入每次建置的流量,包括以 lockfile 為基礎的工具會遺漏的隱藏相依套件。SBOM 中的每個元件都確實存在於建置中。
- 每個作業都有完整性狀態,讓您知道何時某次建置無法被完整記錄,以及原因。
- 匯出 CycloneDX 與 SPDX,包含遞移相依套件,以及在元件中找到的漏洞。
- 跨產品的單一檢視。資產清冊檢視會顯示哪些軟體版本部署到哪些產品,而 CRACI 會持續重新評估受監控的 SBOM。
若要在管線各不相同的團隊之間推行,請參閱跨工程團隊的 SBOM 產生。
SBOM 自動化:常見問題
什麼是 SBOM 自動化?
在建置過程中產生軟體物料清單,讓每個版本都有一份,而不需要任何人手動建立。較完善的做法還會在版本出貨後,持續監控每份 SBOM 是否出現新漏洞。
我們可以用 Excel 維護 SBOM 嗎?
試算表可以作為最初的資產清冊,但很難保持最新,也無法涵蓋遞移相依套件。它也不是標準的 SBOM 格式。客戶與資安工具通常期待 CycloneDX 或 SPDX,而 Cyber Resilience Act(CRA)要求使用常見且機器可讀的格式。
SBOM 自動化需要在每條管線中加入新步驟嗎?
大多數產生工具都需要:您得在每個工作流程中加入一個步驟,並持續維護。CRACI 在執行器中記錄 SBOM,因此不需要在作業中加入任何步驟。
CRACI 會記錄哪些生態系?
npm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、Debian 與 Ubuntu 套件(apt)、Alpine 套件(apk)與 Git 來源,以及 Yocto 與 OpenEmbedded 的下載內容。Maven 與 Java 已列入產品藍圖。
CRACI 支援哪些 CI 系統與平台?
目前支援 GitHub Actions,其他 CI 系統已列入產品藍圖。執行器目前為 Linux x86-64 與 ARM64,Windows 與 macOS 已列入產品藍圖。
向廠商購買的元件怎麼辦?
您可以將廠商的 SBOM 加入 CRACI,讓外購元件與您自己的建置一起受到監控。
費用是多少?
CRACI 只收取建置分鐘數的費用:每 vCPU 分鐘 $0.002(預設 2 vCPU 執行器為 $0.004),按秒計量,沒有月費,也不按 SBOM 份數收費。