グローバル検索 (Pro)
DefectDojo Proには、トップバーの1つのボックスから検出事項と関連オブジェクトを横断的に検索できるグローバル検索が搭載されています。ネイティブのPostgres全文検索を基盤としており、あいまい検索やタイプミスに強いマッチングに対応しているため、正確な表記を覚えていなくてもオブジェクトを見つけられます。
検索の実行
- トップバーの検索ボックス — 上部ナビゲーションのSearchボックスをクリックして入力を開始します。入力すると、ドロップダウンにオブジェクトタイプごとにグループ化された上位の一致結果がプレビュー表示され、各タイプの横に件数が、下部にSee all N resultsリンクが表示されます。
- 完全な結果ページ — Enterキーを押すか、See all N resultsをクリックすると、完全な結果ページが開きます。これは、すべてのオブジェクトタイプにわたる一致結果を1つにまとめた、並べ替えとフィルタリングが可能なテーブルです。
結果は常に閲覧権限のある範囲に限定されます。グローバル検索が、本来アクセスできないはずのオブジェクトを表示することはありません。(Finding Templatesはその唯一の例外です。DefectDojoの他の箇所と同様、サインインしているすべてのユーザーに表示されます。)
検索対象
グローバル検索は、以下のオブジェクトタイプを対象としています。
| オブジェクトタイプ | 補足 |
|---|---|
| Findings | |
| Assets | (Products) |
| Organizations | (Product Types) |
| Engagements | |
| Tests | |
| Endpoints または Locations | インスタンスの設定によって異なります — Locationsが有効なインスタンスではLocationsを検索し、それ以外ではEndpointsを検索します。 |
| Finding Templates | |
| Technologies | |
| Vulnerability IDs | 例: CVE |
ほとんどのタイプでは、検索はオブジェクトの名前/タイトルと説明に対して一致判定を行います。Findings、Assets、Engagements、Testsについては、タグ(前方一致)にも一致します。Vulnerability IDsはID値そのものに一致します。
クエリ構文
フリーテキスト
任意のキーワードを入力すると、すべてを一度に検索できます。一致結果は関連度順にランク付けされ、タイトル/名前での一致は説明での一致より上位に表示されます。あいまい検索(後述)により、完全に一致しない近い単語でもマッチします。
引用符で囲んだフレーズ
フレーズを二重引用符で囲むと、まとまった1つの語として扱われます。"space inside"は、2つのキーワードではなく1つの語として処理されます。
演算子
語の先頭に演算子(operator:value)を付けると、検索を絞り込めます。サポートされている演算子は以下のとおりです。
| 演算子 | 動作 |
|---|---|
finding: product: engagement: test: template: technology: | 検索対象を単一のオブジェクトタイプに限定し、その値で検索します(例: finding:sqli)。 |
id: | 数値IDで検出事項を検索します(例: id:12345)。 |
endpoint: | エンドポイント/ロケーションのホストに値が含まれる検出事項を検索します。 |
vulnerability_id: | Vulnerability IDに完全一致します。カンマ区切りのリストを受け付け、繰り返し指定することもできます(例: vulnerability_id:CVE-2020-1234,CVE-2018-7489)。 |
tag: / tags: | タグでオブジェクトに一致します。tag:は部分一致で単一のタグに一致し、tags:はリスト内のいずれかのタグに一致します。 |
test-tag: engagement-tag: product-tag:(およびその複数形-tags) | オブジェクト自体ではなく、関連するTest、Engagement、Assetのタグで一致します。 |
not-tag: not-tags:(およびnot-…-tagの関連バリエーション) | 上記のタグ演算子を否定し、一致するものを除外します。 |
同じクエリの中で、演算子とフリーテキストのキーワードを組み合わせることができます。
あいまい検索
3文字以上のクエリでは、グローバル検索はトライグラム(単語類似度)マッチングも行います。これによりタイプミスを許容し、ドットやハイフンを含む長い値の内部にある語も見つけられます。たとえば、internalはapi.internal.example.comに一致します。
結果ページのフィルタリングと並べ替え
完全な結果ページでは、クエリテキストとは独立して列をフィルタリング・並べ替えできます。object type、severity、title、contextでフィルタリングし、任意の列で並べ替えられます。これらは上記のoperator:構文とは別のもので、統合された結果テーブルに適用されます。
結果の上限
- 完全な結果ページはページ分割されています(デフォルトでは1ページ25行)。
- 各オブジェクトタイプが1回の検索に提供できる一致件数には上限があり、デフォルトでは100件です。表示件数を超える一致が存在する場合、結果は切り詰められた旨がフラグ表示されます。より関連性の高い結果を見るには、クエリを絞り込んでください。
- トップバーのドロップダウンには、タイプごとの上位数件からなる小さなプレビューが総件数とともに表示されるため、See all N resultsは常に実際の総数を反映します。