この公開リポジトリは、各リポジトリで再利用可能な GitHub Actions ワークフローを提供します。
Trivy を使用して SBOM(Software Bill of Materials)を生成し、Dependency-Track にアップロードする reusable workflow です。
- バージョン固定: Trivy のバージョンを明示的に指定可能
- 整合性検証: SHA256 チェックサムによるバイナリの検証
- CycloneDX 形式: 業界標準の SBOM フォーマットで出力
- 柔軟なスキャン対象: 任意のファイルやディレクトリをスキャン可能
呼び出し元のリポジトリで以下のようにワークフローを定義します。
name: SBOM Upload
on:
push:
branches: [main]
schedule:
- cron: "0 0 * * 1" # 毎週月曜日
jobs:
sbom:
uses: chaintope/.github/.github/workflows/trivy-sbom.yml@main
with:
scan-target: "Gemfile.lock"
secrets:
dependencytrack-server: ${{ secrets.DEPENDENCYTRACK_SERVER }}
dependencytrack-apikey: ${{ secrets.DEPENDENCYTRACK_APIKEY }}
dependencytrack-project: ${{ secrets.DEPENDENCYTRACK_PROJECT }}| パラメータ | 必須 | デフォルト | 説明 |
|---|---|---|---|
scan-target |
Yes | - | スキャン対象のファイルまたはディレクトリ(例: Gemfile.lock, package-lock.json, .) |
ref |
No | 現在の ref | チェックアウトする Git ref(ブランチ、タグ、コミット SHA) |
trivy-version |
No | 0.69.3 |
使用する Trivy のバージョン |
trivy-sha256 |
No | (デフォルト値) | Trivy バイナリの SHA256 チェックサム |
auto-create |
No | false |
Dependency-Track にプロジェクトが存在しない場合に自動作成するか |
project-version |
No | "" |
Dependency-Track のプロジェクトバージョン |
| シークレット | 説明 |
|---|---|
dependencytrack-server |
Dependency-Track サーバーのホスト名 |
dependencytrack-apikey |
Dependency-Track API キー |
dependencytrack-project |
Dependency-Track プロジェクト UUID |
新しいバージョンの Trivy を使用する場合は、trivy-version と trivy-sha256 の両方を指定してください。
SHA256 チェックサムは Trivy Releases の trivy_<version>_checksums.txt から取得できます。
with:
scan-target: "Gemfile.lock"
trivy-version: "0.70.0"
trivy-sha256: "<新しいバージョンのSHA256>"jobs:
sbom:
uses: chaintope/.github/.github/workflows/trivy-sbom.yml@main
with:
scan-target: "Gemfile.lock"
secrets:
dependencytrack-server: ${{ secrets.DEPENDENCYTRACK_SERVER }}
dependencytrack-apikey: ${{ secrets.DEPENDENCYTRACK_APIKEY }}
dependencytrack-project: ${{ secrets.DEPENDENCYTRACK_PROJECT }}jobs:
sbom:
uses: chaintope/.github/.github/workflows/trivy-sbom.yml@main
with:
scan-target: "package-lock.json"
secrets:
dependencytrack-server: ${{ secrets.DEPENDENCYTRACK_SERVER }}
dependencytrack-apikey: ${{ secrets.DEPENDENCYTRACK_APIKEY }}
dependencytrack-project: ${{ secrets.DEPENDENCYTRACK_PROJECT }}