Skip to content

feat: 脆弱性トリアージ・ステータス管理 #21

Description

@kato83

Summary

各脆弱性に対して「未対応 / 調査中 / 対応済み / リスク受容」などのステータスを付与し、チームでの対応状況を追跡する。コメントや担当者のアサイン機能も含む。

前提

ユースケース

  • SBOM 監査やウォッチリストで検出された脆弱性に対して、チームで対応状況を管理したい
  • 「リスク受容」の判断を記録として残し、監査時に説明できるようにしたい
  • 誰がいつ何を判断したかのログを追跡したい

既存実装との関係

注意: sbom_finding_statuses テーブル(migrations/000032)で SBOM限定のfindingステータス管理 は実装済み。
ただしこれは「SBOMバージョン × 脆弱性 × パッケージ(purl)」の組み合わせに対するもので、
本issueで求める 「脆弱性ID単体に対する組織全体のトリアージ」 とは別スコープ。

既存 (SBOM finding statuses) 本issue (脆弱性トリアージ)
SBOMバージョン+purl単位 脆弱性ID単位
SBOMアップロードが前提 SBOMなしでも利用可能
ステータスのみ(justification付き) ステータス+担当者+コメントスレッド
SBOM画面内のフィルタ 専用のトリアージ一覧画面

機能要件

ステータス管理

  • ステータス: open / investigating / resolved / accepted_risk / false_positive
  • ステータス変更時にコメント(理由)を必須 or 任意で記録
  • ステータス変更の履歴を保持

担当者アサイン

  • 脆弱性に担当者(ユーザー)を割り当て
  • 担当者フィルタでの一覧表示

コメント

  • 脆弱性に対して自由テキストのコメントを追加
  • 調査メモ、対応内容、参考リンク等を記録

フィルタ・検索

  • ステータス別フィルタ
  • 担当者別フィルタ
  • 期限切れ(Due Date)フィルタ

タスク

DB(マイグレーション)

  • vulnerability_triage テーブル(脆弱性ID × チーム/ユーザー単位のステータス、担当者、期限)
  • triage_comments テーブル(自由テキストコメント)
  • triage_history テーブル(ステータス変更ログ)

API

  • トリアージ CRUD(GET/PUT ステータス更新、担当者アサイン)
  • コメント CRUD(POST/GET/DELETE)
  • トリアージ一覧(ステータス別・担当者別・期限切れフィルタ)
  • 履歴取得 API

UI

  • 脆弱性詳細画面にトリアージパネル追加(ステータス変更、担当者、コメント)
  • トリアージ一覧・フィルタ画面(専用ページ)

Webhook通知連携

  • triage_status_changed イベント追加(#18 Webhook通知機能)

参考: 既存SBOM実装(本issueのスコープ外)

以下は実装済みで本issueでは対応不要:

  • sbom_finding_statuses テーブル + CRUD API + UI
  • sbom_finding_status_log テーブル(変更履歴)
  • expires_at による期限切れ自動リセット
  • ✅ SBOM scan結果画面内でのステータスフィルタ

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions