脆弱性レポート
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
脆弱性レポートでは、コードベースで検出されたセキュリティの脆弱性を一元的に確認できます。重大度、レポートタイプ、スキャナー(プロジェクトのみ)、その他の属性で脆弱性を並べ替えて、最初に対応が必要なイシューを判断します。ステータスインジケーターと、修正の進捗状況を示すアクティビティアイコンを使用して、脆弱性のライフサイクル全体を追跡できます。
共通脆弱性評価システム(CVSS)のスコアや、利用可能な場合はファイルの場所など、各脆弱性の詳細情報を確認できます。類似する脆弱性をフィルタリングしてグループ化することで、体系的に対処できます。
パフォーマンス上の理由により、脆弱性の総数が1000件を超える場合、脆弱性レポートには正確な件数ではなく1000+ と表示されます。この制限は、ページ上部に表示される件数にのみ影響します。テーブルでは、引き続きすべての脆弱性を確認できます。
正確な件数を表示するための改善が、イシュー547510で提案されています。正確な件数を確認するには、イシュー480378に記載されている回避策のいずれかを使用してください。
GitLab.comでは、脆弱性は最終更新から1年後にアーカイブされます。
概要については、Vulnerability Management - Advanced Security Testingを参照してください。
脆弱性レポートの内容
レポートにはデフォルトブランチのデータが含まれており、正常に完了したすべてのセキュリティスキャンジョブの累積結果が表示されます。スキャン結果は、ジョブの完了後、または手動ジョブによってパイプラインがブロックされたときに表示されます。
プロジェクトおよびグループの脆弱性レポートには、次の情報が含まれます:
- 重大度レベルごとの脆弱性の合計数。
- 一般的な脆弱性の属性のフィルター。
- テーブル形式で表示される各脆弱性の詳細。
一部の脆弱性では、詳細にデフォルトブランチ内の関連ファイルと行番号へのリンクが含まれます。CVEの脆弱性については、脆弱性レポートでKEVステータス、CVSSおよびEPSSスコア、到達可能性情報も確認できます。
プロジェクトの脆弱性レポートには、さらに次の情報が含まれます:
- デフォルトブランチが最後に更新された時刻を示すタイムスタンプと、最新のパイプラインへのリンク。デフォルト以外のブランチに対して実行されたパイプラインでは、このタイムスタンプは更新されません。
- 最新のパイプラインで発生した失敗の数。失敗通知を選択すると、パイプラインページの失敗したジョブタブが表示されます。
アクティビティ列には、その行の脆弱性に対して行われたアクティビティがある場合、それを示すアイコンが表示されます。
- イシュー : 脆弱性に対して作成されたイシューへのリンク。
- マージリクエスト : 脆弱性に対して作成されたマージリクエストへのリンク。
- チェック済みの円 : 脆弱性は修正されました。
- 誤検出 : スキャナーが、この脆弱性を誤検出と判定しました。
- 解決策 : 脆弱性に利用可能な解決策があることを示します。
- 脆弱性の修正 : 脆弱性に利用可能なAIによる解決策があることを示します。
- 誤検出判定 : GitLab Duoが、この脆弱性について誤検出かどうかを分析したことを示します。アイコンにカーソルを合わせると、信頼度スコアと説明が表示されます。
脆弱性に対して作成されたイシューを開くには、アクティビティエントリにカーソルを合わせ、リンクを選択します。イシューアイコン( )は、イシューのステータスを示します。Jiraイシューのサポートが有効になっている場合、アクティビティエントリにあるイシューリンクを選択すると、Jiraイシューが開きます。GitLabイシューとは異なり、JiraイシューのステータスはGitLab UIには表示されません。
アクティビティ列の赤いマルウェアバッジは、GitLab Malware Advisoryに基づいて、脆弱性がマルウェアと識別されたことを示します。
脆弱性が複数プロジェクトのパイプラインの設定から発生した場合、このページには、選択したプロジェクトから発生した脆弱性が表示されます。
脆弱性レポートを表示する
脆弱性レポートを表示して、プロジェクトまたはグループ内のすべての脆弱性を一覧表示します。
前提条件:
- プロジェクトまたはグループのセキュリティマネージャー、デベロッパー、メンテナー、オーナーのいずれかのロールが必要です。
脆弱性レポートを表示するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。
脆弱性をフィルタリングする
脆弱性レポートの脆弱性をフィルタリングすることで、より効率的にトリアージできます。
以下でフィルタリングできます。
- ステータス: 現在の脆弱性のステータス(トリアージが必要、確認済み、却下済み、解決済み)。却下済みの脆弱性は、却下された理由によってまとめて、または個別にフィルタリングできます。
- 重大度: 脆弱性の重大度(重大、高、中、低、情報、不明)。
- レポートタイプ: 脆弱性を検出したレポートタイプ(SAST、コンテナファジングなど)。
- スキャナー: 脆弱性を識別した特定のスキャナー。
- アクティビティ: 脆弱性の追加プロパティ(脆弱性に対するイシュー、マージリクエスト、利用可能な解決策の有無など)。
- 識別子: 脆弱性の識別子(高度な脆弱性管理が必要です。高度な脆弱性管理がない場合、この機能を利用できるのは、脆弱性が20,000件以下のプロジェクトとグループに限られます)。
- プロジェクト: 特定のプロジェクトの脆弱性をフィルタリングします(グループでのみ利用可能)。
- 到達可能性: 脆弱性を到達可能性のステータス(到達可能、到達経路なし、利用不可)でフィルタリングします。このフィルターを使用するには、高度な脆弱性管理を有効にする必要があります。
- 有効性チェック: 脆弱性をその有効性ステータス(アクティブ、非アクティブ、おそらくアクティブ)でフィルタリングします。このフィルターを使用するには、高度な脆弱性管理を有効にする必要があります。
- マルウェア: 脆弱性がマルウェアとして識別されているかどうか(はい、いいえ)でフィルタリングします。プロジェクトでは、このフィルターの名前はマルウェア(デフォルトブランチのみ) です。このフィルターを使用するには、高度な脆弱性管理を有効にする必要があります。
- 追跡対象のref: 追跡対象のref(脆弱性が検出されたブランチまたはタグ)で脆弱性をフィルタリングします(プロジェクトでのみ利用可能)。このフィルターを使用するには、高度な脆弱性管理を有効にする必要があります。
- ポリシー違反: 脆弱性をバイパス理由でフィルタリングします。警告モードのセキュリティポリシーで、ユーザーがセキュリティポリシー違反をバイパスした際に導入された脆弱性が表示されます。ユーザーが警告モードのポリシーによる違反をバイパスする場合は、理由を入力する必要があります。このフィルターを使用するには、高度な脆弱性管理を有効にする必要があります。
脆弱性をフィルタリングする
脆弱性レポートをフィルタリングして、脆弱性の一部に絞り込みます。
脆弱性のリストをフィルタリングするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。
- オプション。デフォルトのフィルターを削除するには、クリア( )を選択します。
- 脆弱性のリストの上にあるフィルターバーを選択します。
- 表示されるドロップダウンリストで、フィルタリングする属性を選択し、ドロップダウンリストから値を選択します。
- フィルターフィールドの外側を選択します。重大度ごとの脆弱性の合計数と、一致する脆弱性のリストが更新されます。
- 複数の属性でフィルタリングするには、前の3つの手順を繰り返します。複数の属性は、論理積で結合されます。
レポートタイプのフィルター
脆弱性を検出したレポートのタイプに基づいて、脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートには、すべてのレポートタイプで検出された脆弱性が一覧表示されます。
手動で追加された脆弱性をフィルタリングするには、手動で追加されました属性を使用します。
スキャナーフィルター
プロジェクトでは、脆弱性を検出したスキャナーに基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートにはすべてのスキャナーからの脆弱性が表示されます。
プロジェクトフィルター
プロジェクトフィルターの内容は、次のように異なります:
- セキュリティセンター: 個人のセキュリティセンターに追加したプロジェクトのみ。
- グループ: グループ内のすべてのプロジェクト。
- プロジェクト: 該当なし。
アクティビティフィルター
アクティビティフィルターの動作は、他のフィルターとは異なります。各カテゴリで選択できる値は1つだけです。フィルターを解除するには、アクティビティフィルターのドロップダウンリストで、解除するフィルターを選択します。
アクティビティフィルターを使用する場合の選択の動作は、次のとおりです。
- アクティビティ
- すべてのアクティビティ: アクティビティステータスを問わず、すべての脆弱性(このフィルターを無視する場合と同じ)。このオプションを選択すると、他のすべてのアクティビティフィルターオプションの選択が解除されます。
- 検出
- まだ検出されています(デフォルト):
defaultブランチの最新のパイプラインスキャンで、引き続き検出されている脆弱性。 - 検出されませんでした:
defaultブランチの最新のパイプラインスキャンで、検出されなくなった脆弱性。
- まだ検出されています(デフォルト):
- イシュー
- イシューがあります: 1件以上の関連するイシューがある脆弱性。
- イシューはありません: 関連するイシューがない脆弱性。
- マージリクエスト
- マージリクエストがあります: 1件以上の関連するマージリクエストがある脆弱性。
- マージリクエストはありません: 関連するマージリクエストがない脆弱性。
- 利用可能な解決策
- 解決策あり: 自動マージリクエストで解決できる脆弱性。
- 解決策がありません: 自動マージリクエストによる解決を利用できない脆弱性。
- GitLab Duoによる解決策:
- 脆弱性の修正は利用可能: 利用可能なAIによる修正がある脆弱性。
- 脆弱性の修正は利用不可: 利用可能なAIによる修正がない脆弱性。
- GitLab Duoの誤検出判定:
- 誤検出: GitLab Duoによって誤検出の可能性が高いとマークされた脆弱性。
- まだ誤検出と特定されていません: 誤検出として識別されていない、またはGitLab Duoによってマークされていない脆弱性。
**GitLab Duo(AI)**フィルターは、次の場合に利用できます:
- セキュリティセンターの脆弱性レポート: セキュリティセンター内のいずれかのプロジェクトで、GitLab Duoの切替がオンになっている。
- グループの脆弱性レポート: グループで、GitLab Duo機能がデフォルトでオンに設定されている。
- プロジェクトの脆弱性レポート: プロジェクトで、GitLab Duo切替がオンになっている。
到達可能性フィルター
グループとプロジェクトでは、到達可能性の値に基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートには、到達可能性の値に関係なく、すべての脆弱性が一覧表示されます。
このフィルターを使用するには、高度な脆弱性管理が必要です。
有効性チェックフィルター
グループおよびプロジェクトでは、有効性チェックの値に基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートには、ステータスがおそらくアクティブの脆弱性が一覧表示されます。
このフィルターを使用するには、高度な脆弱性管理が必要です。
マルウェアフィルター
グループおよびプロジェクトでは、マルウェアとして識別されているかどうかに基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートにはマルウェアステータスにかかわらず、すべての脆弱性が表示されます。
マルウェア検出はプロジェクトのデフォルトブランチでのみ実行されるため、このフィルターの対象は、そのブランチで検出された脆弱性に限られます。追跡対象のrefによるフィルタリングも可能なプロジェクトの脆弱性レポートでは、このフィルターの名前はマルウェア(デフォルトブランチのみ)です。追跡対象のrefフィルターがないグループの脆弱性レポートでは、このフィルターの名前はマルウェアです。
マルウェアのステータスを選択できるのは、追跡対象のrefフィルターでデフォルトブランチのみを選択している場合に限られます。それ以外の追跡対象のrefを選択すると、フィルターにははいといいえのオプションの代わりに、To filter by malware, remove the filter for other tracked refsというメッセージが表示されます。マルウェアフィルターを適用した後に追跡対象のrefフィルターを変更すると、GitLabによってマルウェアフィルターの適用が解除されます。
このフィルターを使用するには、高度な脆弱性管理が必要です。
追跡対象のrefフィルター
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
プロジェクトでは、追跡対象のref(GitLabがセキュリティ検出結果を追跡するブランチまたはタグ)に基づいて脆弱性をフィルタリングできます。ブランチとタグに分類されたオプションから、一度に複数のrefsを選択できます。また、すべての追跡対象のリファレンスというオプションもあります。デフォルトでは、プロジェクトのデフォルトブランチがフィルターに設定されています。別の追跡対象ブランチの脆弱性に対してフローを実行するには、フィルターでそのブランチを選択してから、それらの脆弱性に対してフローを実行します。
このフィルターを使用するには、高度な脆弱性管理が必要です。
脆弱性をグループ化する
脆弱性レポートページで脆弱性をグループ化して、より効率的にトリアージできます。
次の項目でグループ化できます。
脆弱性をグループ化する
脆弱性をグループ化するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。
- グループ化の基準ドロップダウンリストから、グループを選択します。
選択したグループに従って脆弱性がグループ化されます。各グループは折りたたまれ、グループ名の横に脆弱性の合計数が表示されます。各グループの脆弱性を表示するには、グループ名を選択します。
脆弱性の詳細を表示する
脆弱性の詳細を表示するには、脆弱性の説明を選択します。脆弱性の詳細ページが開きます。
脆弱性のステータスを変更する
脆弱性をトリアージする際に、却下を含め、そのステータスを変更できます。
脆弱性が却下されると、監査ログには、却下したユーザー、却下日時、却下の理由が記録されます。脆弱性レコードは削除できないため、記録は常に永続的に保持されます。
前提条件:
- プロジェクトのセキュリティマネージャー、メンテナー、またはオーナーロールが必要です。GitLab 17.0で、
admin_vulnerability権限がデベロッパーロールから削除されました。
脆弱性のステータスを変更するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。
- 次のいずれかを選択します:
- 1つ以上の脆弱性を選択するには、各脆弱性の横にあるチェックボックスをオンにします。
- ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスをオンにします。
- ステータスを設定ドロップダウンリストで、必要なステータスを選択します。
- 却下ステータスを選択した場合は、ドロップダウンリストの却下理由を設定から目的の理由を選択します。
- コメントを追加入力欄にコメントを入力できます。却下ステータスの場合、コメントは必須です。
- ステータスを変更を選択します。
選択した脆弱性のステータスが更新され、脆弱性レポートの内容が更新されます。
脆弱性の重大度を変更またはオーバーライドする
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
場合によっては、組織の優先事項をより適切に反映するために、検出された脆弱性の重大度を調整する必要があります。たとえば、スキャナーから報告された重大度が低くても、環境や構成によっては、より重大であると判断する場合があります。この機能を使用すると、スキャナーによって割り当てられたデフォルトの重大度をオーバーライドできます。
前提条件:
- プロジェクトのセキュリティマネージャー、メンテナー、オーナーのいずれかのロール、または
admin_vulnerability権限が必要です。
脆弱性の重大度を手動でオーバーライドするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- セキュリティ > 脆弱性レポートに移動します。
- 脆弱性を選択します。
- 個々の脆弱性を選択するには、各脆弱性の横にあるチェックボックスをオンにします。
- ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスをオンにします。
- アクションを選択ドロップダウンリストで、重大度の変更を選択します。
- 重大度を選択ドロップダウンリストで、目的の重大度レベルを選択します。
- 重大度の変更理由を追加します(必須) テキストボックスに、重大度を変更する理由の簡単な説明を追加します。
- 重大度の変更を選択します。
選択した各脆弱性について、次の処理が行われます:
- 脆弱性の詳細ページと脆弱性レポートの両方で、重大度が更新されます。
- 重大度がオーバーライドされたことを示すバッジが重大度に追加されます。
- 重大度の手動調整が脆弱性の履歴に記録されます。
ユーザーによる脆弱性の重大度のオーバーライドを防止する
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
環境によっては、ユーザーが脆弱性の重大度をオーバーライドできないようにする必要があります。管理者はhide_vulnerability_severity_override機能フラグを使用して、脆弱性レポートで重大度をオーバーライドする機能を非表示にできます。この機能は、組織がプロジェクト間で脆弱性の重大度評価を標準化するのに役立ちます。この機能を有効にすると、次のようになります:
- 脆弱性レポートのアクションドロップダウンリストで、重大度の変更オプションが非表示になります。
- ユーザーがUIから重大度レベルを手動で変更できなくなり、スキャナーの結果に基づく一貫した脆弱性スコアリングが確保されます。
- 脆弱性の重大度の変更に関連するすべてのAPIエンドポイントが無効になり、すべてのアクセス方法で一貫性が維持されます。
hide_vulnerability_severity_overrideフラグを有効にするには、機能フラグの背後にデプロイされたGitLabの機能を有効/無効にするを参照してください。
既存のイシューに脆弱性を追加する
1件以上の脆弱性を、脆弱性レポート内の既存のイシューにリンクできます。
前提条件:
- プロジェクトのセキュリティマネージャー、メンテナー、オーナーのいずれかのロール、または
admin_vulnerability権限を持つカスタムロールが必要です。GitLab 17.0で、admin_vulnerability権限がデベロッパーロールから削除されました。
脆弱性を既存のイシューにアタッチするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- セキュリティ > 脆弱性レポートに移動します。
- 脆弱性を選択します。
- 個々の脆弱性を選択するには、各脆弱性の横にあるチェックボックスをオンにします。
- ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスをオンにします。
- アクションを選択ドロップダウンリストで、既存のイシューにアタッチを選択します。
- イシューのURLまたは<イシューのID>を入力テキストボックスに、オートコンプリートするイシューのIDを入力するか、イシューのURLを追加します。脆弱性を複数のイシューに追加する場合は、複数のイシューを入力できます。
- 追加を選択します。
選択した各脆弱性が、指定したすべてのイシューにリンクされます。
新規のイシューに脆弱性を追加する
1つ以上の脆弱性を新規のイシューにリンクできます。
前提条件:
- プロジェクトのセキュリティマネージャー、メンテナー、オーナーのいずれかのロール、または
admin_vulnerability権限を持つカスタムロールが必要です。GitLab 17.0で、admin_vulnerability権限がデベロッパーロールから削除されました。
脆弱性を新規のイシューにアタッチするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- セキュリティ > 脆弱性レポートに移動します。
- 脆弱性を選択します。
- 個々の脆弱性を選択するには、各脆弱性の横にあるチェックボックスをオンにします。
- ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスをオンにします。
- アクションを選択ドロップダウンリストで、新規のイシューにアタッチを選択します。
- イシューを作成を選択します。
新規のイシューにリダイレクトされます。選択した各脆弱性は、すでにそのイシューにリンクされています。
AIフローを一括実行する
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
他の追跡対象ブランチの脆弱性を含む複数の脆弱性に対して、SAST誤検出判定とSAST脆弱性の修正を一度に実行できます。詳細については、複数の脆弱性を解決するおよび複数の脆弱性を分析するを参照してください。
脆弱性を検出日でソートする
デフォルトでは、脆弱性は重大度を基準にソートされ、重大度が最も高い脆弱性がリストの一番上に表示されます。
各脆弱性が検出された日付で脆弱性をソートするには、「検出日」列のヘッダーを選択します。
エクスポート
脆弱性レポートに一覧表示されている脆弱性の詳細をエクスポートできます。エクスポート形式はCSV(カンマ区切り値)です。フィルターはエクスポートに適用されないため、すべての脆弱性が含まれます。
次のフィールドが含まれます:
- ステータス(ステータス値がどのようにエクスポートされるかについては、次の表を参照してください)
- グループ名
- プロジェクト名
- レポートタイプ
- スキャナー名
- 脆弱性
- 基本情報
- 追加情報
- 重大度
- CVE(共通脆弱性識別子)
- CWE(共通脆弱性タイプ一覧)
- その他の識別子
- 検出日時
- 場所
- アクティビティ: 脆弱性がデフォルトブランチで解決済みの場合は
trueを返し、そうでない場合はfalseを返します。 - コメント
- フルパス
- CVSSベクター
- 却下理由
- 脆弱性ID
詳細については、ジョブアーティファクトAPIを参照してください。脆弱性が検出されたファイルのパスなどを取得するには、*artifact_pathの代わりに、gl-*-report.json形式のレポートファイル名のいずれかを使用します。
脆弱性レポートに表示されるステータスフィールドの値は、脆弱性エクスポートに含まれる値とは異なります。両者を対応付けるには、次のリファレンス表を使用します。
| 脆弱性レポート | 脆弱性エクスポート |
|---|---|
| トリアージが必要 | 検出済み |
| 却下済み | 却下済み |
| 解決済み | 解決済み |
| 確認済み | 確認済み |
詳細をエクスポートする
脆弱性レポートに一覧表示されているすべての脆弱性の詳細をエクスポートするには、エクスポートを選択します。
エクスポートされた詳細が利用可能になると、メールが届きます。エクスポートされた詳細をダウンロードするには、メール内のリンクを選択します。
CSVリーダーによっては、行数や列のサイズに制限があり、大規模なエクスポートに対応できない場合があります。脆弱性エクスポートは、個々のプログラムの制限を考慮していません。
脆弱性を手動で追加する
GitLabの脆弱性データベースに登録されていない脆弱性は、手動で追加します。脆弱性を追加できるのは、プロジェクトの脆弱性レポートのみです。
脆弱性を手動で追加するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。
- 脆弱性を送信を選択します。
- フィールドに入力してフォームを送信します。
新しく作成された脆弱性の詳細ページが開きます。
高度な脆弱性管理
GitLabでは主にPostgreSQLを使用して、脆弱性レポートと依存関係リストをフィルタリングします。データベースのインデックスに関する制約や、複数のフィルターを適用する際のパフォーマンス上の課題があるため、GitLabでは脆弱性管理と依存関係管理の特定の機能に高度な検索を使用しています。
高度な検索は、次の機能で使用されます:
- プロジェクトまたはグループの脆弱性レポートで、データをOWASP 2021カテゴリ別にグループ化する。
- プロジェクトまたはグループの脆弱性レポートで、データをOWASP 2025カテゴリ別にグループ化する。
- プロジェクトまたはグループの脆弱性レポートで、脆弱性の識別子に基づいてフィルタリングする。
- プロジェクトまたはグループの脆弱性レポートで、到達可能性の値に基づいてフィルタリングする。
- プロジェクトまたはグループの脆弱性レポートで、有効性チェックのステータスに基づいてフィルタリングする。
- プロジェクトまたはグループの脆弱性レポートと依存関係リストで、マルウェアのステータスに基づいてフィルタリングする。
- プロジェクトの脆弱性レポートと依存関係リストで、追跡対象のrefに基づいてフィルタリングする。
- プロジェクトまたはグループの脆弱性レポートで、ポリシー違反のバイパス理由に基づいてフィルタリングする。
- 新しいセキュリティダッシュボードで、各パネルおよびダッシュボード全体のデータをフィルタリングする。
高度な検索は、他のフィルターと組み合わせる場合も含め、これらの特定の機能にのみ使用されます。その他のフィルターを単独で使用する場合は、引き続き標準のPostgreSQLフィルタリングが使用されます。
GitLab Self-Managedでは、GitLab 18.7より前のバージョンからアップグレードした後、データ移行が完了するまでの通常数時間、高度な脆弱性管理の機能を一時的に利用できない場合があります。移行が完了すると、すべての機能を利用できるようになります。
要件
高度な脆弱性管理の機能を使用するには:
コンテキスト全体での脆弱性の追跡
デフォルトでは、脆弱性レポートとセキュリティダッシュボードには、プロジェクトのデフォルトブランチで検出された脆弱性が表示されます。他のブランチやタグの脆弱性を追跡することもできます。最良の結果を得るには、特定の環境用のブランチ(project-qa、project-prod)、デプロイプラットフォーム用のブランチ(project-iOS、project-android)、またはサポートされているリリースバージョン用のブランチなど、少数の長期存続ブランチを追跡してください。
追跡対象コンテキストを使用すると、次のことができます:
- セキュリティ設定ページで追加のブランチとタグを追跡する。
- 脆弱性レポートとプロジェクトのセキュリティダッシュボードで、追跡対象コンテキストによるフィルタリングを行う。
- 追跡対象コンテキストの脆弱性ステータスを更新する。
追跡対象コンテキストとは
追跡対象コンテキストとは、脆弱性の追跡対象となるブランチまたはタグです。デフォルトブランチは常に追跡対象コンテキストであり、追跡を解除することはできません。保護ブランチも追跡対象ブランチにできますが、この2つは個別に管理されます。ブランチを追跡しても、そのブランチが保護されるわけではありません。
追加のコンテキストを追跡する
前提条件:
- プロジェクトのセキュリティマネージャー、メンテナー、オーナーロール、または
admin_vulnerability権限を持つカスタムロールが必要です。
追加のブランチまたはタグを追跡するには、次の操作を行います:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- セキュリティ > セキュリティ設定を選択します。
- 脆弱性管理タブを選択します。
- データベースの作成場所セクションで、新しいrefを追跡を選択します。
- ブランチまたはタグを検索し、その横にあるチェックボックスを選択します。
- refを追跡を選択します。
- ブランチまたはタグでパイプラインを実行します。パイプラインが完了すると、GitLabは脆弱性を追跡します。
プロジェクトごとに最大4つのコンテキスト(デフォルトブランチと他の3つのブランチまたはタグ)を追跡できます。上限に達した状態で別のコンテキストを追跡するには、まず1つの追跡を解除してください。
脆弱性レポートとセキュリティダッシュボードをフィルタリングする
脆弱性レポートとセキュリティダッシュボードには、追跡対象refのフィルターが含まれています。デフォルトでは、このフィルターにはデフォルトブランチが表示されます。フィルターを変更して、追加の追跡対象コンテキストを含めたり、単一の追跡対象コンテキストのみを表示したりできます。ページ上のすべての情報が、フィルターの内容を反映して更新されます。
このフィルターを使用するには、高度な脆弱性管理が必要です。
追跡対象コンテキストでの脆弱性のステータス
ステータスの変更は、それを行った追跡対象コンテキストにのみ適用されます。同じ脆弱性が別の追跡対象コンテキストにも存在する場合は、そのコンテキストでも個別にステータスを変更する必要があります。
コンテキストの追跡を停止する
ブランチまたはタグの追跡を解除すると、GitLabはそのブランチまたはタグの脆弱性データを完全に削除します。この操作は元に戻すことができません。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- セキュリティ > セキュリティ設定を選択します。
- 脆弱性管理タブを選択します。
- データベースの作成場所セクションで、ブランチまたはタグを見つけます。
- 追跡を解除を選択し、確認します。
セキュリティポリシーとの連携
一部のセキュリティポリシーは、コンテキスト全体の脆弱性に適用されます:
- デフォルトブランチ用に設定された脆弱性管理ポリシーは、すべての追跡対象コンテキストに適用されます。
- マージリクエスト承認ポリシーは、保護ブランチをサポートします。追跡対象ブランチに承認ポリシーを適用するには、そのブランチを保護ブランチとしても設定してください。
運用上の脆弱性
運用上の脆弱性タブには、運用コンテナスキャン(OCS)によって検出された脆弱性が一覧表示されます。このタブは、プロジェクト、グループ、およびセキュリティセンターの脆弱性レポートに表示されます。




