比較
CRACI vs Sonatype
Sonatype 決定哪些開源元件可以進入您的儲存庫,並標記最終進入您應用程式之內容的風險。CRACI 執行建置,並記錄建置實際取得的內容。兩者回答的是不同的問題,搭配使用效果很好。
更新日期
簡短回答
Sonatype 最擅長開源治理:以政策決定允許哪些元件、以防火牆在儲存庫擋下不良套件,並以分析告訴您最終進入應用程式的內容。CRACI 是相容 GitHub Actions 的 CI 執行器,會記錄建置引入的每個外部相依套件,並依據這份紀錄產生 SBOM、來源證明與法規遵循佐證資料。Sonatype 是掃描工具,也是守門員。CRACI 是記錄工具,其政策關卡也能依發現阻擋建置。兩者都需要的團隊,多半會將它們並用。
Sonatype 各產品的分工
Sonatype 販售多項產品,而產品名稱對這次比較很重要:
- Sonatype Lifecycle 是軟體組成分析(SCA)與政策產品,可自架或以 SaaS 形式執行。
- Sonatype Repository Firewall 會在不符合您政策的元件進入儲存庫之前,將其阻擋並隔離。它專為 Sonatype Nexus Repository 設計。Sonatype Firewall Pro 則涵蓋 JFrog Artifactory、Cloudsmith 與 GitHub Packages 等其他儲存庫管理工具,支援 npm、Maven、PyPI 與 NuGet。
- Sonatype SBOM Manager 可匯入、監控與分享 SBOM,並提供 VEX 工作流程。
產品組合正在調整。Sonatype 的價格頁面指出,所有 Lifecycle 功能現已納入 Sonatype Guide,新客戶購買 Guide 來取得 SCA 與治理功能,而 Guide 也包含 SBOM Manager 的法規遵循功能。
一覽表
| 功能 | CRACI | Sonatype |
|---|---|---|
| 在建置執行時觀察相依套件 | 執行器上可辨識套件的代理伺服器 | 掃描建置輸出、lockfile 與 manifest |
| 附完整度狀態的建置時 SBOM | 五種狀態,按作業與按快取 | 每次掃描產出 CycloneDX 或 SPDX |
| 建置作業的對外連線政策 | 預設拒絕或允許,失效即封鎖 | 不執行您的建置 |
| 在下載前阻擋惡意套件 | 目前僅提供來源層級的對外連線政策 | Repository Firewall 與 Firewall Pro |
| 監控已出貨的 SBOM | 持續重新評估受監控的 SBOM | SBOM Manager 監控匯入的 SBOM |
| 授權政策 | 授權政策規則,包括依授權阻擋建置 | 涵蓋 2,000 種以上授權的政策 |
| 依可達性排定優先順序 | Lifecycle 中的可達性與升級資料 | |
| 執行您的 CI 作業 | 作業在 CRACI 執行器上執行 | 接入您現有的 CI |
| 支援的 CI 系統 | 目前支援 GitHub Actions;GitLab CI 與 Jenkins 已列入產品藍圖 | Jenkins、GitHub Actions、GitLab、Azure DevOps、Bamboo |
| 價格 | 每 vCPU 分鐘 $0.002(2 vCPU 為 $0.004),按秒計量;無月費,也不按 SBOM 收費 | 新客戶購買 Sonatype Guide:Pro 每年 $1,200 起,Enterprise 另訂。Firewall Pro 每年 $4,800 起。截至 2026 年 11 月。 |
- 支援
- 部分支援
- 不支援
- 已列入產品藍圖
Sonatype 的強項
大規模政策管理。Lifecycle 內建 18 項預設政策,以及超過 30 項可自訂的限制條件,涵蓋資安、法律與架構規則。授權政策涵蓋超過 2,000 種開源授權。它依可達性、破壞性變更與可用升級等資料為發現排序,並可開啟附建議升級的 Golden Pull Requests。
檢視建置產出的內容。Lifecycle 整合預設使用 Advanced Binary Fingerprinting,在建置後檢查應用程式包含的所有內容(包括內嵌的相依套件),並能識別被重新命名或修改的元件。只有在這之後,才會退回使用 lockfile 與 manifest。每份掃描報告都能匯出為 CycloneDX 或 SPDX SBOM。
在門口擋下不良套件。Repository Firewall 在下載當下強制執行您的資安、授權與品質標準,並隔離可疑元件。CRACI 目前沒有對應功能:套件封鎖清單已列入其產品藍圖。
適用任何管線。Sonatype 可與 Jenkins、GitHub Actions、GitLab CI、Azure DevOps 及 Bamboo 整合,並提供 Maven、Gradle 外掛與適用其他 CI 伺服器的 CLI。CRACI 目前僅支援 GitHub Actions,GitLab CI 與 Jenkins 已列入產品藍圖。
CRACI 的不同之處
記錄建置本身,而非分析建置輸出
二進位指紋分析能告訴您完成的應用程式內有什麼,卻無法告訴您建置過程中下載了什麼:編譯器與工具鏈、安裝腳本、基礎映像檔、以 curl 取得的發布版二進位檔,或從快取還原的套件。CRACI 看得到這些,因為它就是執行器。作業執行時,可辨識套件的代理伺服器會觀察前往套件來源的流量,涵蓋 npm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk 與 Git 來源,以及來源或下載預設集。相依套件的佐證資料會隨 CI 快取一併保留,因此快取中的套件仍會被計入。
每份 SBOM 都會按作業與按快取標示自身的完整度:Complete、Complete with connections、Incomplete、Unavailable 或 Not recorded。紀錄有缺口時,您會知道。
管控建置能連線到哪裡
Repository Firewall 管理經由儲存庫進入的內容;CRACI 的對外連線政策則管理建置究竟能連線到哪裡。政策可設為預設拒絕或預設允許,內建 24 個軟體來源預設集,並可為 npm、PyPI、apt、apk、Go proxy、Nix、Cargo、OCI 登錄庫與 Git 設定具型別的自訂來源。政策會在作業開始前驗證,並採失效即封鎖(fail closed)。兩者搭配,可確保建置作業只從您核准的來源取得套件,而這些來源也只提供您允許的套件。
持續監看已出貨的內容
API 會回傳 SBOM、網路追蹤與來源證明。CRACI 不會為來源證明簽章。CRACI 彙整各建置與儲存庫的漏洞,並持續重新評估受監控的 SBOM。
部署位置的資產清冊
CRACI 的資產清冊檢視會在全球範圍內清楚顯示哪些軟體版本部署到哪些產品。新漏洞出現時,您可以直接看到哪些產品執行受影響的版本,而不必從版本資訊與試算表中拼湊。
何時兩者並用
- 您已在使用搭配 Firewall 的 Nexus Repository。請繼續以它作為關卡。加入 CRACI,讓每次建置都留下取得內容的紀錄,並以對外連線政策讓建置只使用您核准的來源。
- 您的法務團隊仰賴 Lifecycle 的授權政策。請繼續使用。CRACI 會在 SBOM 匯出中包含宣告的授權中繼資料,也同樣會強制執行授權政策。
- 您在 SBOM Manager 中收集 SBOM。SBOM Manager 可匯入 CycloneDX 與 SPDX,正是 CRACI 匯出的格式,因此建置時 SBOM 可以和您已在管理的 SBOM 放在一起。
- 您的管線在 Jenkins 或 Azure DevOps 上。目前 Sonatype 較合適。CRACI 需要先將這些管線移到 GitHub Actions;Jenkins 已列入其產品藍圖。
因應 Cyber Resilience Act
Sonatype 發布了 Cyber Resilience Act(CRA)使用指南與 CRA 檢查清單,並將 SBOM Manager 定位為其 CRA 產品。其指南強調產生 VEX 檔案以報告 SBOM 中的已知漏洞,以及將 Nexus Repository 作為散布安全性更新的更新站台。
CRACI 從建置端涵蓋佐證資料:每個版本附完整度標示的 SBOM、來源證明、持續的漏洞監控,以及以 CycloneDX 或 SPDX 格式匯出 SBOM。它將企業在更廣泛的 CRA 法規遵循流程中所需的軟體供應鏈可視性與佐證資料,自動化了相當大的一部分。兩款工具都無法單獨讓產品符合法規。請參閱CRA 法規遵循與CRA 是什麼。
在 Sonatype 之外加入 CRACI
CRACI 取代的是執行器,而不是 GitHub Actions。在工作流程中將 runs-on 改為 craci,執行結果仍會顯示在 GitHub 介面中。您的 Sonatype 步驟仍保留在工作流程內。先從一條發布管線開始,比較 CRACI 的 SBOM 與您的 Lifecycle 報告,看看哪些內容只有其中一方看到。
CRACI 目前支援 GitHub Actions。GitLab CI、Jenkins 與其他 CI 系統已列入產品藍圖。進一步了解建置時 SBOM 產生與漏洞追蹤。