CI/CD - 於 GitLab 上建立自動生成 SBOM 及漏洞掃描
使用 GitLab 平台所提供的 CI/CD 工具 GitLab CI/CD 設定每次程式碼更新自動觸發自動化的生成 SBOM 文件及透過 Trivy 工具進行漏洞掃描的自動化流程。
名詞介紹
GitLab CI/CD
GitLab CI/CD 是 GitLab 內建的持續整合和持續交付(CI/CD)服務。此工具允許使用者在 Git repository 中定義自動化的工作流程,當特定事件發生時自動執行任務。以下簡介 GitLab CI/CD 功能:
-
Pipeline(管線)
- Pipeline 是一系列自動化工作的集合,由 YAML 格式的
.gitlab-ci.yml文件定義,存放在專案根目錄。 - 每個 Pipeline 由多個 Stage(階段)組成,每個 Stage 包含一個或多個 Job(任務)。
- Pipeline 是一系列自動化工作的集合,由 YAML 格式的
-
Stage(階段)
- Stage 是 Pipeline 中的執行階段,用於組織和控制 Job 的執行順序。
- 同一個 Stage 中的 Job 會並行執行,而不同 Stage 會按順序執行。
- 常見的 Stage 包括:build(建置)、test(測試)、deploy(部署)等。
-
Job(任務)
- Job 是 Pipeline 中的基本執行單位,包含一系列要執行的指令。
- 每個 Job 都在獨立的環境 中執行,通常是 Docker 容器。
- Job 可以設定觸發條件(rules)、依賴關係、並產生產出物(artifacts)。
-
Runner(執行器)
- Runner 是執行 CI/CD Job 的服務,可以是 GitLab 提供的共享 Runner,或是自行架設的專用 Runner。
- GitLab 提供多種作業系統的 Runner,包括 Linux、Windows 和 macOS。
-
Artifacts(產出物)
- Job 執行完成後產生的文件,可以在不同 Job 間傳遞,或供使用者下載。
- 可以設定保存期限和存取權限。
-
Rules(規則)
- 用於定義 Job 的觸發條件,例如特定分支、標籤或合併請求時才執行。
- 取代了舊版的
only/except語法,提供更靈活的條件控制。
相關工具介紹
Trivy
Trivy 是由 Aqua Security 開發的全方位安全掃描工具,支援:
- 漏洞掃描:檢測作業系統套件和應用程式依賴中的已知漏洞
- SBOM 生成:產生軟體物料清單,支援多種格式(SPDX、CycloneDX)
- 配置掃描:檢查 Dockerfile、Kubernetes 配置等安全問題
- 秘密掃描:偵測程式碼中的敏感資訊