監査ログ
DefectDojoはデータへの変更の監査証跡を記録します。追跡対象のオブジェクトはそれぞれ自動的に create(作成)、update(更新)、delete(削除)のイベントを記録し、リレーションシップ(多対多)テーブルは add(追加)と remove(削除)のイベントを記録します。
仕組み#
監査トラッキングは、モデルごとに登録されたデータベーストリガーによって駆動されます。追跡対象の各オブジェクトについて、次の3種類のイベントが発生し得ます。
| イベント種別 | 発生タイミング | アクション |
|---|
InsertEvent | 新しいレコードが作成されたとき | Create(作成) |
UpdateEvent | レコードが変更されたとき——実際にフィールドの値が変わった場合のみ | Update(更新) |
DeleteEvent | レコードが削除されたとき | Delete(削除) |
多対多のリレーションシップテーブル(タグ、レビュアー、ファイアウォールIP範囲)は、add(InsertEvent)と remove(DeleteEvent)のみを追跡します。リレーションシップの行に「update」は存在しません。
すべてのイベントで記録される内容#
- Who(実行者) — リクエストコンテキストから取得した操作ユーザー。
- When(日時) — タイムスタンプ。
- Source IP(送信元IP) —
X-Forwarded-For プロキシチェーンを考慮したリモートアドレス。 - Before/after snapshot(変更前後のスナップショット) — レコードの全フィールド値。
- Context / label(コンテキスト / ラベル) — 同一リクエストに由来するイベントをグループ化します。ラベル
initial_backfill は、トラッキングが最初に有効化されたときにインポートされた過去のレコードを示します。
バックグラウンドジョブによって生成されたイベントは、発生元のリクエストのコンテキストへ結び付けられるため、非同期に完了した操作であっても、それを引き起こしたユーザーに正しく帰属します。
コア(オープンソース)— 追跡対象のアクション#
| オブジェクト | 作成 | 更新 | 削除 | 備考 |
|---|
| ユーザー | ✅ | ✅ | ✅ | password はスナップショットから除外されます |
| 製品タイプ | ✅ | ✅ | ✅ | |
| 製品 | ✅ | ✅ | ✅ | |
| エンゲージメント | ✅ | ✅ | ✅ | |
| テスト | ✅ | ✅ | ✅ | |
| 検出事項 | ✅ | ✅ | ✅ | |
| 検出事項グループ | ✅ | ✅ | ✅ | |
| 検出事項テンプレート | ✅ | ✅ | ✅ | |
| リスク受容 | ✅ | ✅ | ✅ | |
| エンドポイント | ✅ | ✅ | ✅ | |
| ロケーション | ✅ | ✅ | ✅ | |
| URL | ✅ | ✅ | ✅ | |
| 通知Webhook | ✅ | ✅ | ✅ | header_name / header_value は除外されます(機密情報のため) |
コア — リレーションシップ(追加 / 削除)イベント#
| リレーションシップ | 追加 | 削除 |
|---|
| 検出事項 → レビュアー | ✅ | ✅ |
| 検出事項 → タグ | ✅ | ✅ |
| 検出事項 → 継承タグ | ✅ | ✅ |
| 製品 → タグ | ✅ | ✅ |
| エンゲージメント → タグ | ✅ | ✅ |
| エンゲージメント → 継承タグ | ✅ | ✅ |
| テスト → タグ | ✅ | ✅ |
| テスト → 継承タグ | ✅ | ✅ |
| エンドポイント → タグ | ✅ | ✅ |
| エンドポイント → 継承タグ | ✅ | ✅ |
| 検出事項テンプレート → タグ | ✅ | ✅ |
| アプリ分析(Technology) → タグ | ✅ | ✅ |
| Objects/Product → タグ | ✅ | ✅ |
Pro — 追跡対象のアクション#
| オブジェクト | 作成 | 更新 | 削除 | 備考 |
|---|
| 拡張検出事項 | ✅ | ✅ | ✅ | 検出事項に対応するPro版 |
| ルール | ✅ | ✅ | ✅ | ルールエンジン |
| ルールアクション | ✅ | ✅ | ✅ | |
| ルールアクション条件 | ✅ | ✅ | ✅ | |
| ルールフィルターエントリ | ✅ | ✅ | ✅ | |
| ルールエンジン操作 | ✅ | ✅ | ✅ | |
| ルールエンジン操作メッセージ | ✅ | ✅ | ✅ | |
| スケジュールタスク | ✅ | ✅ | ✅ | |
| スケジュールタスク実行 | ✅ | ✅ | ✅ | |
| 緩和ポリシー | ✅ | ✅ | ✅ | |
| 調整可能な設定 | ✅ | ✅ | ✅ | システム設定の変更 |
| フィーチャーフラグの状態 | ✅ | ✅ | ✅ | フラグの切り替え + システムピン留め |
| フィーチャーフラグ定義 | ✅ | ✅ | ✅ | メタデータ / レジストリ同期 |
| クラウドファイアウォール | ✅ | ✅ | ✅ | locked フィールドは除外されます |
| ファイアウォールIPマスク | ✅ | ✅ | ✅ | |
Pro — RBAC / 権限#
| オブジェクト | 作成 | 更新 | 削除 |
|---|
| グループ | ✅ | ✅ | ✅ |
| ロール | ✅ | ✅ | ✅ |
| グループメンバーシップ | ✅ | ✅ | ✅ |
| グローバルロール | ✅ | ✅ | ✅ |
| 製品グループ割り当て | ✅ | ✅ | ✅ |
| 製品タイプグループ割り当て | ✅ | ✅ | ✅ |
| 製品メンバー | ✅ | ✅ | ✅ |
| 製品タイプメンバー | ✅ | ✅ | ✅ |
Pro — リレーションシップ(追加 / 削除)イベント#
| リレーションシップ | 追加 | 削除 |
|---|
| クラウドファイアウォール → IP範囲 | ✅ | ✅ |
設定と保持期間(オンプレミス制御)#
| 設定 | 環境変数 | デフォルト | 効果 |
|---|
| 監査ログを有効化 | DD_ENABLE_AUDITLOG | True | False の場合、すべての履歴トリガーが無効化され、イベントは記録されません |
| 保持期間 | DD_AUDITLOG_FLUSH_RETENTION_PERIOD | -1(フラッシュしない) | 保持する履歴の月数。それより古いイベントはフラッシュジョブによってバッチ単位で削除されます |
| フラッシュのバッチサイズ | DD_AUDITLOG_FLUSH_BATCH_SIZE | 1000 | クリーンアップ時にバッチごとに削除される行数 |
| フラッシュの最大バッチ数 | DD_AUDITLOG_FLUSH_MAX_BATCHES | 100 | 1回のフラッシュ実行あたりのバッチ数の上限 |
補足と制限事項#
- 機密情報は決して記録されません。 ユーザーのパスワードと通知Webhookのヘッダー値は、イベントのスナップショットから明示的に除外されます。
- 更新は実際に変更があった場合のみ記録されます。 フィールドの値を変更しない保存では更新イベントは発生しません。
last_updated のような自動管理フィールドのみの変化ではイベントは発生しません。 - 認証イベントはここには記録されません。 対象はデータの変更のみです。ログイン、ログアウト、ログイン失敗の活動は別途扱われ、この監査ログには含まれません。