エンゲージメント (Open Source)
組織 → アセット → エンゲージメント → テスト → 検出事項
概要
DefectDojoの製品階層において、エンゲージメントは特定の製品内で関連するテストをグループ化する、期間またはパイプラインに紐づいたコンテナです。定期的であれ単発であれ、計画されたテスト活動がある場合、エンゲージメントはその関連する結果をすべて格納する場所を提供します。
エンゲージメントの例には、以下のようなものがあります。
- 単発のペネトレーションテスト
- 毎月または四半期ごとに実施される定期スキャン
- バグバウンティのレビュー期間
- CI/CDパイプラインの実行(各パイプラインを個別のエンゲージメントとして扱うチームの場合)
- コードリリースサイクル(例:「v4.2リリースのセキュリティレビュー」)
エンゲージメントの種類
DefectDojoは、インタラクティブとCI/CDの2種類のエンゲージメントをサポートしています。これらの種類によって、テストが通常どのように作成され、スキャン結果がどのようにインポートされるかが決まります。
インタラクティブエンゲージメントは、通常エンジニアによって実施されます。インタラクティブエンゲージメントは、自動テスト、人間のテスター、またはアプリケーションの機能と「対話」する何らかの活動を用いて、アプリケーションが稼働している状態でテストを行うことに重点を置いています。
CI/CDエンゲージメントは、CI/CDパイプラインとの自動連携を目的としています。CI/CDエンゲージメントは、リリースプロセスの一部のステップによってトリガーされる自動アクションとしてデータをインポートすることを想定しています。
| カテゴリ | インタラクティブエンゲージメント | CI/CDエンゲージメント |
|---|---|---|
| 主なユースケース | 手動またはアドホックなセキュリティテスト | パイプライン内での自動化された定期的なセキュリティテスト |
| 期間 | 期間が定められた有限のもの | 無期限になり得るもの |
| 頻度 | 定期的または単発 | 継続的またはコミットごと |
| ワークフロー | 人間のテスターがツールを実行 → 手動で結果をインポート | パイプラインがツールを実行 → 自動的に結果をDefectDojoにプッシュ |
| 結果のインポート方法 | UIまたはCLI経由での手動アップロード | 自動化(CLI、コネクタ、cronジョブ、パイプラインスクリプトなど)によるAPI駆動のインポート |
| 一般的なテストの種類 | ペネトレーションテスト、レッドチーム演習、手動評価 | 静的解析、依存関係スキャン、コンテナスキャン |
エンゲージメントのデータ
テスト活動を整理するコンテナとして、エンゲージメントはさまざまなデータを格納・追跡できます。
- 目標開始日と終了日
- 説明とスコープに関するメモ
- ステータス(進行中、計画中、完了など)
- 担当者/リード
- 関連するテスト(スキャン、ペネトレーションテスト、手動テストなど)
- 検出事項と検出事項の種類(アクティブ、緩和済み、リスク受容済み、重複など)
- 脅威モデルまたはリスク受容に関する情報
- タグ
- ファイルとメモ
- Jiraプロジェクトの設定
- 環境の詳細(ステージング環境か本番環境かなど)
- ビルドID(CI/CDに連携している場合)
- エンゲージメント内の過去のテストの履歴データ
エンゲージメントへのアクセス
エンゲージメントにはサイドバーからアクセスできます。サブメニューからは、アクティブなエンゲージメントとすべてのエンゲージメントにアクセスできるほか、製品別、テストの種類別、環境別にエンゲージメントを表示するオプションも利用できます。

また、特定の製品内のエンゲージメントは、トップバーの「エンゲージメント」オプションのサブメニューからアクセスすることもできます。

権限
エンゲージメントは、オブジェクト階層において製品の下、テストの上に位置します。そのため、製品へのアクセス権を持っていると、その製品内のすべてのエンゲージメントへのアクセス権が自動的に付与されます。エンゲージメントは独自のアクセス制御リストを持ちません。
エンゲージメントの操作
エンゲージメントの作成
エンゲージメントの作成にはいくつかの方法があります。いずれの方法でも、まずエンゲージメントを格納する製品を作成しておく必要があります。
製品を作成したら、製品のナビゲーションバーの「エンゲージメント」セクションから、新しいインタラクティブエンゲージメントまたはCI/CDエンゲージメントを追加できます。

すべてのエンゲージメントには、以下のフィールドを設定する必要があります。
- 種類(インタラクティブまたはCI/CD)
- 一意の名前
- 目標開始日と終了日
- これにより、カレンダーセクションにおけるエンゲージメントの表示が決まります
- 製品
- ステータス
エンゲージメントのステータス
エンゲージメントには、作成時にさまざまなステータスを設定できます。ステータスは、エンゲージメントの設定から後で変更することもできます。
エンゲージメントには、以下のいずれかのステータスを設定できます。
- 未着手
- ブロック中
- キャンセル済み
- 完了
- 進行中
- 保留中
- 予定済み
- リソース待ち
エンゲージメントのステータスを「完了」に変更すると、テストの追加やスキャンのインポートといった大半の書き込み操作が利用できなくなるか、非表示になります。それ以外のステータスは、エンゲージメントの機能には実質的な影響を与えず、主にフィルタリングや情報提供の目的で使用されます。
エンゲージメントの編集
エンゲージメントは、エンゲージメントの設定内にある編集ボタンをクリックすることで編集できます。編集可能なフィールドは、エンゲージメントの作成時にも同様に利用できます。
エンゲージメントのコピー
製品内のエンゲージメント一覧に移動し、コピーしたいエンゲージメントの横にある⋮ケバブメニューからコピーボタンをクリックすることで、エンゲージメントを簡単に複製できます。これにより、メタデータ、テスト、検出事項を含む元のエンゲージメントの完全なコピーが、親製品内に作成されます。

エンゲージメントのクローズ
エンゲージメントをクローズするには、製品内のエンゲージメント一覧に移動し、対象のエンゲージメントの⋮ケバブメニューから「クローズ」をクリックします。

クローズすると、エンゲージメントのステータスは「完了」に変更されます。ただし、テストの追加やスキャンのインポートといった大半の書き込み操作は、引き続き利用可能です。
エンゲージメントをクローズしても、そのエンゲージメント内のテストに含まれる検出事項のステータスは変更されません。検出事項は、それぞれのライフサイクルに従ってオープン、緩和済み、またはリスク受容済みのままとなり、閲覧やレポート作成のために引き続きアクセス可能です。
エンゲージメントがJiraのEpicにリンクされている場合(**Jira連携:エンゲージメントEpicマッピングの有効化**を参照)、エンゲージメントをクローズすると、連携先のJiraスペース内の対応するEpicをクローズする非同期タスクがトリガーされます。
エンゲージメントの再オープン
クローズされたエンゲージメントは、クローズ済みエンゲージメントのテーブル内にある⋮ケバブメニューから再オープンをクリックすることで再オープンできます。これにより、エンゲージメントは再度アクティブになり、ステータスは「進行中」に戻ります。

期限切れのエンゲージメント
エンゲージメントは、目標終了日を過ぎると期限切れになります。
エンゲージメントの期限切れは、エンゲージメントの機能に直接的な影響を与えるものではなく、主に監視/通知の仕組みとして機能します。
期限切れになると、エンゲージメントの「期間」フィールドに赤色で「X日超過」という通知が表示されますが、エンゲージメントの機能が制限されることはありません。エンゲージメントのステータスは引き続き「進行中」と表示されます。
デフォルトでは有効になっていませんが、エンゲージメントが一定の日数だけ期限切れになった時点で自動的にクローズするオプションがシステム設定内に用意されています。

エンゲージメントの削除
エンゲージメントの削除は、エンゲージメントの設定から削除を選択することで実行できます。この操作は元に戻せません。
エンゲージメントを削除すると、以下も併せて削除されます。
- エンゲージメントに関連するすべてのテスト
- それらのテストに含まれるすべての検出事項
- リンクされているJira Epicのマッピング(Epic自体はJira上に残りますが、DefectDojoとJiraの間のリンクは削除されます)
- エンゲージメントに関連するすべてのメモとアップロードされたファイル
監査の観点から、完了したエンゲージメントは削除するのではなく、クローズすることを推奨します。
| 操作 | 結果 | 元に戻せるか |
|---|---|---|
| クローズ | 非アクティブとしてマークされる。データは残る。再オープン可能 | はい(再オープン) |
| 期限切れ | 視覚的な警告のみ。オプションで自動クローズ。通知あり | 該当なし |
| 削除 | エンゲージメント、テスト、検出事項、メモ、ファイル、Jira Epicマッピング(Epic自体はJiraに残る)を完全に削除 | いいえ |
Jira連携
エンゲージメントは連携先のJiraスペースにリンクでき、エンゲージメント内の検出事項をJiraにIssueとしてプッシュできるようになります。Jiraの設定に関する完全なガイドについては、**DefectDojoとJiraの連携**を参照してください。
エンゲージメントEpicマッピング
製品のJira設定でエンゲージメントEpicマッピングを有効化がチェックされている場合、エンゲージメントはJiraにEpicとしてプッシュされます。エンゲージメント内の検出事項は、そのEpicの下に子Issueとしてプッシュされ、DefectDojoのエンゲージメント→検出事項という階層が、JiraのEpic→Issueという構造に反映されます。
この設定の詳細については、**エンゲージメントEpicマッピングの有効化**を参照してください。
エンゲージメントレベルのJira設定
デフォルトでは、エンゲージメントは親製品からJira設定を継承します。ただし、個々のエンゲージメントでこれらの設定を上書きし、異なるJira構成を使用することも可能です。エンゲージメントごとにカスタマイズできる設定は以下のとおりです。
- プロジェクトキー — 検出事項を別のJiraスペースに振り分ける
- Issueテンプレート — このエンゲージメントから作成されるIssueに別のテンプレートを使用する
- カスタムフィールド — 異なるカスタムフィールドのマッピングを適用する
- Jiraラベル — エンゲージメント固有のラベルをIssueに付与する
- デフォルトの担当者 — Issueを別のチームメンバーに割り当てる
これらの設定は、エンゲージメントの編集ページからアクセスできます。詳細については、**エンゲージメントレベルのJira設定**を参照してください。