正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

セキュリティスキャンの結果

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLabでパイプラインセキュリティスキャンの結果を表示し、それに対して対応します。パイプラインで実行したセキュリティスキャナーを選択し、セキュリティレポートを出力します。これらのレポートの内容はGitLabが処理してGitLab上に表示します。

結果を生成するには、プロジェクトに対してセキュリティスキャンを設定する必要があります。セキュリティスキャナーの設定については、Security configurationを参照してください。

セキュリティスキャンの結果を理解するための主要な用語:

検出結果: 検出結果とは、開発ブランチで特定された潜在的な脆弱性です。ブランチがデフォルトブランチにマージされると、検出結果は脆弱性になります。検出結果は、関連するCI/CDジョブアーティファクトが期限切れになるか、パイプラインの作成から90日後に期限切れになります。これは、関連するジョブアーティファクトがロックされている場合でも同様です。

脆弱性: 脆弱性とは、デフォルトブランチで特定されたソフトウェアのセキュリティ上の弱点です。脆弱性レコードは、アーカイブされるまで保持されます。これは、脆弱性がデフォルトブランチで検出されなくなった場合でも同様です。

デフォルトブランチで特定された脆弱性は、脆弱性レポートに一覧表示されます。

セキュリティレポートアーティファクト

セキュリティスキャナーはブランチパイプラインで実行され、有効になっている場合はマージリクエストパイプラインでも実行されます。各セキュリティスキャナーは、特定のセキュリティスキャナーによって検出されたすべての検出結果または脆弱性の詳細を含むセキュリティレポートアーティファクトを出力します。

子パイプラインのセキュリティレポートは、パイプラインセキュリティレポートおよびマージリクエストウィジェットに含まれます。

開発(デフォルトではない)ブランチでは、検出結果には、開発ブランチの作成時点でターゲットブランチに存在していた脆弱性が含まれます。

ファインディングは、関連するCI/CDジョブアーティファクトの期限が切れた場合、または関連するジョブアーティファクトがロックされている場合でも、パイプラインの作成から90日後に期限切れになります。期限切れになった検出結果は、パイプラインのセキュリティタブには表示されません。これらを再現するには、パイプラインを再実行します。

セキュリティレポートをダウンロードする

  • プラン: Ultimate

セキュリティレポートをダウンロードして、たとえばGitLabの外部で分析したり、アーカイブしたりできます。セキュリティレポートはJSONファイルです。

前提条件:

  • プロジェクトのデベロッパー、メンテナー、またはオーナーのロール。

セキュリティレポートをダウンロードするには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. ビルド > パイプラインを選択します。
  3. パイプラインを選択します。
  4. セキュリティタブを選択します。
  5. 結果をダウンロードを選択し、目的のセキュリティレポートを選択します。

選択したセキュリティレポートがデバイスにダウンロードされます。

セキュリティレポートのリスト

パイプラインセキュリティレポート

  • プラン: Ultimate

パイプラインセキュリティレポートには、ブランチで検出されたすべての検出結果または脆弱性の詳細が含まれています。デフォルトブランチに対して実行されたパイプラインでは、パイプラインセキュリティレポート内のすべての脆弱性も脆弱性レポートに含まれています。

ブランチ内の検出結果のリスト

パイプラインセキュリティレポートを表示する

パイプラインセキュリティレポートを表示して、ブランチで検出されたすべての検出結果または脆弱性の詳細を確認します。

前提条件:

  • プロジェクトのデベロッパー、メンテナー、またはオーナーのロール。

パイプラインセキュリティレポートを表示するには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. ビルド > パイプラインを選択します。
  3. 最新のパイプラインを選択します。

検出結果または脆弱性の詳細を表示するには、その説明を選択します。

イシューを作成する

イシューを作成して、検出結果または脆弱性の修正作業を追跡、文書化、管理します。

前提条件:

  • プロジェクトのデベロッパー、メンテナー、またはオーナーのロール。

イシューを作成するには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. ビルド > パイプラインを選択します。
  3. パイプラインを選択します。
  4. セキュリティタブを選択します。
  5. 検出結果の説明を選択します。
  6. イシューを作成を選択します。

イシューがプロジェクトに作成され、説明には検出結果または脆弱性の説明がコピーされます。

ステータスまたは重大度を変更する

パイプラインのセキュリティタブで、検出結果または脆弱性のステータス、重大度、またはその両方を変更できます。検出結果に加えた変更は、ブランチがデフォルトブランチにマージされた後もすべて保持されます。

前提条件:

  • プロジェクトのメンテナーロール、またはadmin_vulnerabilityカスタム権限。

検出結果または脆弱性のステータスと重大度を変更するには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. ビルド > パイプラインを選択します。

  3. 最新のパイプラインを選択します。

  4. セキュリティタブを選択します。

  5. 検出結果レポートで:

    1. 変更する検出結果または脆弱性を選択します。

      • 個々の検出結果または脆弱性を選択するには、それぞれの横にあるチェックボックスをオンにします。
      • ページ上のすべての検出結果または脆弱性を選択するには、テーブルヘッダーのチェックボックスをオンにします。
    2. アクションを選択ドロップダウンリストで、ステータスの変更または重大度の変更を選択します。

セキュリティレポートをダウンロードする

  • プラン: Ultimate

セキュリティレポートをダウンロードして、たとえばGitLabの外部で分析したり、アーカイブしたりできます。セキュリティレポートはJSONファイルです。

前提条件:

  • プロジェクトのデベロッパー、メンテナー、またはオーナーのロール。

セキュリティレポートをダウンロードするには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. ビルド > パイプラインを選択します。
  3. パイプラインを選択します。
  4. セキュリティタブを選択します。
  5. 結果をダウンロードを選択し、目的のセキュリティレポートを選択します。

選択したセキュリティレポートがデバイスにダウンロードされます。

セキュリティレポートのリスト

マージリクエストセキュリティウィジェット

  • プラン: Ultimate

マージリクエストには、変更によって検出結果にどのような差分が生じるかを要約したセキュリティウィジェットが表示されます。CI/CDパイプラインの実行後、セキュリティレポートの処理に時間がかかるため、セキュリティウィジェットが表示されるまでに遅延が発生する可能性があります。

たとえば、次のスキャン結果を含む2つのパイプラインについて考えてみましょう:

  • ソースブランチパイプラインで、V1およびV2として識別される2つの脆弱性が検出される。
  • ターゲットブランチパイプラインで、V1およびV3として識別される2つの脆弱性が検出される。
  • V2はマージリクエストウィジェットに「追加済み」と表示される。
  • V3はマージリクエストウィジェットに「修正済み」と表示される。
  • V1は両方のブランチに存在し、マージリクエストウィジェットには表示されない。

ソースブランチとターゲットブランチの差分を表示するには、両方のセキュリティレポートが必要です。フィーチャーブランチがターゲットブランチから作成されたときのコミットについて、最新の10件のパイプラインで、セキュリティレポートがあるか確認します。最新の10件のパイプラインで見つからない場合、すべての検出結果が新規としてリストされます。マージリクエストでセキュリティスキャンを有効にする前に、デフォルトブランチに対してセキュリティスキャンが有効になっていることを確認してください。

セキュリティウィジェットを表示する

マージリクエストセキュリティウィジェットを表示して、変更によって検出結果にどのような差分が生じるかを確認します。

前提条件:

  • プロジェクトのデベロッパー、メンテナー、またはオーナーのロール。

セキュリティウィジェットを表示するには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. マージリクエストを選択します。
  3. マージリクエストを選択します。

各セキュリティレポートタイプの詳細を表示するには、詳細を表示 chevron-down )を選択します。ウィジェットには、セキュリティレポートタイプごとに、重大度順に並べた追加済みの検出結果25件と修正済みの検出結果25件が表示されます。マージリクエストのソースブランチ上のすべての検出結果を表示するには、すべてのパイプラインの検証結果を表示するを選択します。

マージリクエストにおけるセキュリティスキャンの結果

トラブルシューティング

セキュリティスキャンを使用する際に、次の問題が発生する可能性があります。

却下された脆弱性がMRセキュリティウィジェットに表示される

マージリクエストでセキュリティウィジェットを表示すると、却下された脆弱性が引き続きリストに表示されることがあります。

この問題については、まだ解決策はありません。詳細については、イシュー411235を参照してください。

レポートの解析およびスキャンの取り込みのエラー

以下の手順は、GitLabサポートがこの種のエラーを再現することを目的としています

一部のセキュリティスキャンでは、レポートの解析またはスキャンの取り込みに関連して、パイプラインのセキュリティタブにエラーが表示される場合があります。ユーザーからプロジェクトのコピーを入手できない場合でも、スキャンによって生成されたレポートを使用してエラーを再現できます。

エラーを再現するには:

  1. ユーザーからレポートのコピーを入手します。この例では、gl-sast-report.jsonです。

  2. プロジェクトを作成します。

  3. リポジトリにレポートをコミットします。

  4. .gitlab-ci.ymlファイルを追加し、ジョブのアーティファクトとしてレポートを含めます。

    たとえば、SASTジョブが原因で発生するエラーを再現するには:

    sample-job:
      script:
        - echo "Testing report"
      artifacts:
        reports:
          sast: gl-sast-report.json
  5. パイプラインが完了したら、パイプラインのセキュリティタブの内容を参照し、エラーが表示されているか確認します。

レポートの生成元のスキャンに応じて、sast: gl-sast-report.jsonの部分は対応するartifacts:reportsのタイプと、正しいJSONレポートのファイル名に置き換えてください。