比較
CI/CD 資安工具比較
CI/CD 資安工具可分為四類:讀取程式碼的掃描器、強化其周邊管線的工具、監看執行器的代理程式,以及管控並記錄建置的執行器。以下說明各類工具涵蓋的範圍,以及 CRACI 的定位。
更新日期
每篇比較都會說明另一款產品的強項、CRACI 的不同之處,以及何時適合兩者並用。所有類別請見所有比較。
為什麼管線需要專屬的資安工具
CI/CD 管線持有憑證、從網際網路取得程式碼,並產出您的客戶所執行的建置產物。這使它本身就成為攻擊目標。能夠改變建置下載內容或產出內容的攻擊者,根本不必碰您的原始碼。程式碼掃描器並不是為此而設計的,因為它們讀取的是儲存庫,而不是建置。
CI/CD 資安工具從不同方向填補這個缺口。有些檢查管線的設定,有些監看作業執行時執行器上發生的事,有些則管控執行器本身。了解一項工具屬於哪一類,比它的功能清單更能說明問題,因為這決定了工具能看到什麼、能阻止什麼。
CI/CD 資安工具的類型
讀取程式碼的掃描器
靜態分析(SAST)、機密掃描與軟體組成分析(SCA)讀取的是儲存庫:原始碼檔案、manifest 與鎖定檔。例如 GitHub Advanced Security 結合了 CodeQL 程式碼掃描、機密掃描與推送保護,以及來自 GitHub Advisory Database 的 Dependabot 警示。這些工具在建置執行前找出問題,但看不到建置實際取用了什麼,或連線到哪裡。
強化建置周邊管線的工具
態勢與治理工具檢查管線的設定。Cycode 監控 CI/CD 資安政策、設定與治理。StepSecurity 維護您所使用第三方 actions 的資產清冊,為新的 actions 設置核准流程,並開立 pull request,將 actions 釘選到 commit SHA,並設定最小權限的
GITHUB_TOKEN 權限。這些工具讓管線更難被濫用,但它們處理的是建置的定義,而不是執行中的建置。
監看執行器的代理程式
執行階段代理程式在您保留的執行器上、於作業內部執行。StepSecurity Harden-Runner 監控對外連線、程序與檔案寫入,將每一項對應到引發它的工作流程步驟,並可封鎖允許清單以外的對外連線。Cycode 的 Cimon 以 eBPF 在核心層級監控程序執行、網路對外連線與檔案存取,產生執行階段觀察到的 SBOM,並為 SLSA 來源證明簽章。由於代理程式是加到既有的基礎設施上,因此能在許多 CI 系統與託管執行器上運作。
管控並記錄建置的執行器
CRACI 採取最後一種做法:取代執行器。作業透過 runs-on: craci 在 CRACI 上執行,執行結果仍會顯示在 GitHub 中。對外連線政策是執行器的一部分,會在作業開始前完成驗證,並採失效即封鎖。具備套件感知能力的代理伺服器會記錄作業取用的每個套件,包括從 CI 快取還原的套件,因此每個作業都會產生附有完整性狀態的 SBOM、網路追蹤記錄與來源證明資料。
並列比較
| 功能 | CRACI | StepSecurity Harden-Runner | Cycode (Cimon) | GitHub Advanced Security |
|---|---|---|---|---|
| 執行位置 | 本身就是執行器 | 安裝在您自行維護之執行器上的代理程式 | 安裝在您現有 CI 內的代理程式 | 掃描 GitHub 上的儲存庫 |
| 建置對外連線控制 | 預設拒絕或允許,失效即封鎖 | 封鎖模式下的允許清單 | 可指定允許主機的防止模式 | |
| 封鎖前的稽核模式 | 監控模式或試運行模式 | 每個作業的基準 | 偵測模式 | 無對外連線控制 |
| 程序與檔案監控 | eBPF | 未說明 | ||
| 從建置記錄的 SBOM | 每個作業一份,附完整性狀態 | 記錄連線目的地、程序與檔案 | 執行階段觀察到的 SBOM | 由 manifest 產生的關係圖,加上提交的建置資料 |
| 已簽署的建置來源證明 | 無已簽署的來源證明 | 未說明 | SLSA Provenance v1.0 | 建置產物證明(Artifact attestations) |
| SAST | 未說明 | CodeQL | ||
| 機密掃描 | 未說明 | Secret Protection | ||
| 支援的 CI | 目前支援 GitHub Actions;GitLab CI 與 Jenkins 已列入產品藍圖 | GitHub Actions、GitLab CI、Azure DevOps | GitHub Actions、Azure Pipelines、Jenkins、GitLab CI、Buildkite、Harness | GitHub,以及另行購買的 Azure DevOps |
- 支援
- 部分支援
- 不支援
- 已列入產品藍圖
「未說明」表示我們無法在廠商的公開頁面中確認。各欄的詳細內容,請參閱 CRACI 與 StepSecurity 比較、 CRACI 與 Cycode 比較與 CRACI 與 GitHub Advanced Security 比較。
哪種工具涵蓋哪些 CI/CD 風險
OWASP Top 10 CI/CD Security Risks 是最廣為使用的管線風險清單。其十大風險如下:
- CICD-SEC-1: Insufficient Flow Control Mechanisms(流程控制機制不足)
- CICD-SEC-2: Inadequate Identity and Access Management(身分與存取管理不當)
- CICD-SEC-3: Dependency Chain Abuse(相依鏈濫用)
- CICD-SEC-4: Poisoned Pipeline Execution (PPE)(管線執行遭汙染)
- CICD-SEC-5: Insufficient PBAC (Pipeline-Based Access Controls)(以管線為基礎的存取控制不足)
- CICD-SEC-6: Insufficient Credential Hygiene(憑證管理不足)
- CICD-SEC-7: Insecure System Configuration(系統設定不安全)
- CICD-SEC-8: Ungoverned Usage of 3rd Party Services(第三方服務使用缺乏治理)
- CICD-SEC-9: Improper Artifact Integrity Validation(建置產物完整性驗證不當)
- CICD-SEC-10: Insufficient Logging and Visibility(記錄與可視度不足)
沒有任何單一工具能涵蓋全部十項。以下四項是 CRACI 的管控措施適用之處:
| 功能 | 風險的內容 | CRACI 的做法 |
|---|---|---|
| CICD-SEC-3: Dependency Chain Abuse | 建置取用了惡意或非預期的套件 | 對外連線政策限制作業可取用的來源,作業的 SBOM 會記錄它取用的每個套件 |
| CICD-SEC-7: Insecure System Configuration | 執行管線的系統設定薄弱 | 作業在隔離的虛擬機器中執行,無法套用的政策會失效即封鎖 |
| CICD-SEC-9: Improper Artifact Integrity Validation | 遭竄改的建置產物被當成合法產物在管線中流通 | 不提供簽章的來源證明;API 會回傳每次建置的來源證明資料 |
| CICD-SEC-10: Insufficient Logging and Visibility | 管線中的攻擊無人察覺,也無從調查 | 每個作業的網路追蹤記錄、政策違規警示,以及可回傳 SBOM、網路追蹤記錄與來源證明的 API |
就 CICD-SEC-7 而言,CRACI 涵蓋的是執行器。您的儲存庫與 GitHub 組織的設定仍由您負責。坦白說明其餘部分:CRACI 不處理身分與存取管理(CICD-SEC-2)或憑證管理(CICD-SEC-6),也不治理流程控制、管線權限或第三方服務(CICD-SEC-1、5 與 8)。機密掃描(例如 GitHub 的 Secret Protection 或 Cycode 的機密偵測)以及前述的態勢工具,才是為這些風險而打造的。
如何選擇 CI/CD 資安工具
- 取代執行器,還是保留它們。如果您想保留 GitHub 託管執行器、自架執行器或其他 CI 系統,要加入執行階段管控就該使用代理程式。如果您願意更換執行器,像 CRACI 這樣的執行器無需部署代理程式,就能提供對外連線管控與建置記錄。
- 目前的稽核模式。Harden-Runner 與 Cimon 可以在封鎖任何連線之前先監看流量。CRACI 的監控(或試運行)模式已列入產品藍圖。
- 程序層級的鑑識。如果您需要在資安事件期間得知哪個程序寫入了哪個檔案,監控程序與檔案的代理程式可以做到。CRACI 不監控程序或檔案寫入。
- SBOM 與 CRA 佐證資料。如果您需要每次建置的套件層級 SBOM、來源證明,以及 Cyber Resilience Act(CRA)所需的佐證資料,請檢視每項工具記錄了什麼,以及它是否會持續監控已出貨的內容。CRACI 在建置執行時記錄 SBOM,在新漏洞出現時重新評估受監控的 SBOM,並以 CycloneDX 或 SPDX 匯出 SBOM。
- CI 平台與作業系統。CRACI 目前支援 GitHub Actions,GitLab CI 與 Jenkins 已列入產品藍圖;它在 x86-64 與 ARM64 的 Linux 上執行,Windows 與 macOS 已列入產品藍圖。如果您在其他 CI 系統上建置,或現在就需要 Windows 或 macOS 執行器,請先確認代理程式的支援範圍。
- 程式碼與機密。原始碼與機密掃描器涵蓋了任何執行器都不涵蓋的範圍。CRACI 不提供 SAST 或機密掃描,因此請另外規劃。
執行器上的代理程式,還是執行器本身
代理程式是加到別人設計的基礎設施上。在 GitHub 託管執行器上,它是由每個作業開頭的一個步驟安裝,能觸及的範圍取決於該基礎設施允許什麼。正因如此,代理程式能同時涵蓋託管執行器、自架機群與多個 CI 系統;當您的建置分散在這些環境中時,這是實實在在的優勢。
自行執行政策的執行器則恰好相反。在 CRACI 上,對外連線政策會在作業開始前完成驗證、拒絕未知欄位並採失效即封鎖,因此無法套用的政策不會產生未受保護的執行。它的來源依生態系定義類型,提供 24 個內建軟體來源預設組態,以及針對 npm、PyPI、apt、apk、Go proxy、Nix、Cargo、OCI 映像檔庫與 Git 的自訂來源,因此記錄的是套件,而不只是主機。對於在 CRACI 上執行的作業,它會取代執行階段代理程式,而不是與之並行。進一步了解 CI/CD 整合與 建置時 SBOM 產生,或 預約示範,看看 GitHub Actions 作業如何在對外連線政策下執行。
CRACI 與各工具比較
並列比較
在同一頁比較多款工具,適合您在選擇類別而非單一產品時參考。
CI/CD 資安工具常見問題
什麼是 CI/CD 資安工具?
CI/CD 資安工具保護將原始碼轉變為已發布軟體的管線。它們可分為四類:讀取程式碼與相依套件的掃描器(SAST、機密掃描、SCA)、強化建置周邊管線設定的工具、在作業執行時監看執行器的代理程式,以及自行管控並記錄建置的執行器。OWASP Top 10 CI/CD Security Risks 是檢查某項工具處理哪些風險的常見方式。
CI/CD 資安與 SCA 有什麼不同?
軟體組成分析(SCA)讀取您的 manifest 與鎖定檔(lockfile),告訴您哪些宣告的相依套件有已知漏洞。CI/CD 資安保護的是管線本身:誰可以修改它、建置可以連到哪裡,以及您出貨的建置產物是否就是當初建置出來的那一個。CRACI 從建置著手:它記錄每個作業實際取用的套件,包括從 CI 快取還原的套件,並在發布後持續監控新漏洞。
使用 CRACI 還需要執行階段代理程式嗎?
若是為了對外連線管控或建置記錄,就不需要。在 CRACI 上,對外連線政策是執行器的一部分,會在作業開始前完成驗證並採失效即封鎖(fail closed),因此對於在 CRACI 上執行的作業,CRACI 可取代 Harden-Runner 與 Cimon 等代理程式。您會失去的是程序與檔案監控(CRACI 不提供),以及稽核模式(已列入 CRACI 的產品藍圖)。如果程序層級的鑑識是硬性需求,目前可以在您保留的執行器上使用執行器代理程式來滿足。
CI/CD 資安工具能封鎖惡意套件嗎?
有些可以,方式各不相同。對外連線管控會阻止建置連到政策以外的來源,因此從非預期主機的下載會失敗。套件封鎖清單與套件庫管控則能從根本阻止已知的惡意版本被安裝。CRACI 目前依作業執行對外連線政策,來源依生態系定義類型;全組織的套件封鎖清單已列入 CRACI 的產品藍圖。
哪些 CI/CD 資安工具可在 GitHub Actions 以外使用?
截至 2026 年 9 月,StepSecurity 除了 GitHub Actions 之外,也列出 GitLab CI 與 Azure DevOps;Cycode 的 Cimon 也能在 Azure Pipelines、Jenkins、GitLab CI、Buildkite 與 Harness 上執行。GitHub Advanced Security 也有針對 Azure DevOps 的版本。CRACI 目前支援 GitHub Actions,GitLab CI 與 Jenkins 已列入產品藍圖。