サプライチェーンの完全性
NextPDF のサプライチェーン統制は 2 つのポイントで機能します。依存関係を変更するすべてのプルリクエストとすべてのバージョンタグで実行される CI ゲートと、 プロベナンス生成・キーレス署名・SBOM 生成を構成するリリースワークフローです。
| 統制 | 種別 |
|---|---|
ビルドの CycloneDX 1.7 SBOM | CI ゲート(ハード) |
| ビルド入力にコミットする in-toto ステートメント | CI ゲート(ハード) |
| 固定ベースラインとの SHA-256 依存関係フィンガープリント差分比較 | CI ゲート(ハード) |
| 依存関係アドバイザリポリシーに対する OpenVEX 整合性チェック | CI ゲート(ハード) |
| フィクスチャ横断の決定論性チェック | CI チェック(ベストエフォート) |
固定した slsa-github-generator によるプロベナンス生成 | ワークフロー構成 — リリースワークフロー |
Rekor 透明性ログを伴う Sigstore cosign キーレス署名 | ワークフロー構成 — リリースワークフロー |
CycloneDX 1.7 および SPDX 2.3 の SBOM 生成 | ワークフロー構成 — リリースワークフロー |
パーサーおよびライターのパスを対象とする夜間 php-fuzzer マトリクス | スケジュール実行の CI |
CI ゲート
「CI ゲート」という見出しのセクション依存関係に触れるすべてのプルリクエストと、すべてのバージョンタグで、次のチェックが実行されます。
| チェック | 内容 | ゲート |
|---|---|---|
| インベントリ | ビルドの CycloneDX 1.7 SBOM を生成します | ハード |
| ビルド入力の記録 | ビルド入力にコミットする in-toto ステートメントを生成します | ハード |
| 依存関係の完全性 | SHA-256 バイトフィンガープリントを固定ベースラインと差分比較します | ハード |
| VEX 整合性 | 依存関係アドバイザリポリシーのすべてのエントリについて、リポジトリの OpenVEX v0.2.0 ドキュメント内に対応するステートメントが存在することを要求します | ハード |
| 再現性 | フィクスチャ横断で決定論性チェックを実行します | ベストエフォート |
依存関係完全性ゲートは、依存関係ツリーの SHA-256 バイトフィンガープリントを、 リポジトリに固定されたベースラインと差分比較します。この比較はパッケージメタデータに依存しません。
リリースワークフローの構成
「リリースワークフローの構成」という見出しのセクションプロベナンス — ワークフロー構成
「プロベナンス — ワークフロー構成」という見出しのセクションリリースワークフローは、正規の slsa-github-generator 再利用可能ワークフローを固定して使用します。このワークフローは、分離されたエフェメラルなビルダー内で
in-toto プロベナンスを生成するよう構成されており、さらにジェネレーターの出力に対して slsa-verifier をインラインで実行するよう構成されています。
署名と透明性 — ワークフロー構成
「署名と透明性 — ワークフロー構成」という見出しのセクションリリースワークフローは、アーティファクトバンドルに対する Sigstore cosign
キーレス署名を構成しており、Rekor への透明性ログ記録を伴います。キーレス署名は、
ワークフローの OIDC アイデンティティ
(https://token.actions.githubusercontent.com)から短命の証明書を導出するため、
このリリース署名パスは長期有効なアーティファクト署名鍵を持たない構成になっています。
SBOM — ワークフロー構成
「SBOM — ワークフロー構成」という見出しのセクションリリースワークフローは、CycloneDX 1.7 ドキュメントと SPDX 2.3 ドキュメントの
2 形式で SBOM を生成するよう構成されています。
ファジング
「ファジング」という見出しのセクション夜間の php-fuzzer マトリクスが、AST/構造ツリーハーネスとともに、パーサーおよびライターの各パスを検証します。