CI/CD - 於 GitHub 上建立自動生成 SBOM 及漏洞掃描
使用 GitHub 平台所提供的 CI/CD 工具 GitHub Actions 設定每次程式碼更新自動觸發自動化的生成 SBOM 文件及透過 OSV 工具自動化流程。以下範例將以 petsard 專案為例。
名詞介紹
GitHub Actions
GitHub Actions 是 GitHub 提供的一項持續整合和持續交付(CI/CD)服務。此工具允許使用者於 git repository 中客製化的 workflow ,以便在特定事件發生時自動執行任務。以下簡介 GitHub Actions 功能介紹:
- Workflow
- workflow 是一系列定義的自動化步驟,由 YAML 格式文件所紀錄,通常存放在
.github/workflows/
目錄下。 - 每個 workflow 由 Event、Job 和 Step 所組成。
- workflow 是一系列定義的自動化步驟,由 YAML 格式文件所紀錄,通常存放在
- Event
- Event 是指觸發 workflow 的事件。這些事件可以是推送程式碼、pull request、release 等。例如,當有人將程式碼推送到 main branch 時,可以觸發一個 workflow 來進行測試和部署。
- Job
- Job 是 workflow 中的一個執行單位,包含一系列的 steps。每個 step 是一個可執行的 Shell 腳本,或是一個可執行的 Actions。
- Job 可以在不同的 runner 上執行,這些 runner 由 GitHub 提供的或是 self-hosted runner
- Actions:
- GitHub Actions 平台上的自定義應用程式,用於執行複雜但經常重複的任務。
- GitHub Marketplace 提供了大量預設的 Actions,也可以自行開發定義的 Actions 來滿足特定需求。
- Runner
- Runner 是一個在工作流程觸發時運行你的工作流程的伺服器。每個 Runner 一次只能運行一個作業。GitHub 提供 Ubuntu Linux、Microsoft Windows 和 macOS Runner 來運行你的工作流程
相關 GitHub Actions 介紹
osv-scanner-action
osv-scanner-action
會將專案元件與由 Google 維護的開源漏洞(Open Source Vulnerability,OSV)資料庫進行查詢比對,評估專案的依賴關係並揭示專案的漏洞元件。開發人員可以快速查詢其軟體組件是否存在已知的安全問題。
trivy-action
trivy-action
是由 Aqua Co. 開發的工具,效果與 osv-scanner-action 相似。也可用於生成專案或 container image 的 SBOM 檔案。優勢在於可同時生成 SBOM 與 漏洞元件掃描。