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

継続的コンテナスキャン

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

継続的脆弱性スキャン(CVS)は、コンテナスキャンにおいて、新しいパイプラインの実行を必要とせずに、最新のセキュリティアドバイザリーの情報とプロジェクトのイメージ依存関係のコンポーネント名およびバージョンを比較することで、セキュリティ脆弱性を探します。CVSは、プロジェクトがどのコンポーネントを使用しているかを把握するために、デフォルトブランチに保存されているCycloneDX SBOMレポートに依存します。このSBOMを作成するには、コンテナスキャンのジョブがデフォルトブランチで少なくとも1回実行される必要があります。その後、CVSは、それらのコンポーネントに対する新しく公開されたアドバイザリーを自動的に検出し、それ以上のパイプラインの実行は不要です。イメージのコンテンツが変更された場合、CVSが更新されたコンポーネントセットを評価できるように、SBOMを更新するために、デフォルトブランチで新しいパイプラインを実行する必要があります。ほとんどのプロジェクトでは、依存関係の変更には通常、すでにパイプラインをトリガーするコードの変更が伴うため、これは通常のワークフローの一部として発生します。

新しい脆弱性が発生するのは、継続的脆弱性スキャンがサポートされているパッケージタイプを持つコンポーネントを含むすべてのプロジェクトでスキャンをトリガーする場合です。

コンテナスキャン用の継続的脆弱性スキャンによって作成された脆弱性は、スキャナー名としてGitLab SBoM Vulnerability Scannerを、脆弱性タイプとしてContainer Scanningを使用します。

CI/CDベースのセキュリティスキャンとは対照的に、継続的脆弱性スキャンは、CI/CDパイプラインではなくバックグラウンドジョブ(Sidekiq)を通じて実行され、セキュリティレポートアーティファクトは生成されません。

前提条件

サポートされているパッケージタイプ

継続的脆弱性スキャンは、以下のPURLタイプを持つコンポーネントをサポートします:

  • apk
  • deb
  • rpm

既知の制限事項:

  • 先頭にゼロを含むAPKバージョンはサポートされていません。これらのバージョンをサポートする作業は、イシュー471509で追跡されています。
  • ^を含むRPMバージョンはサポートされていません。これらのバージョンをサポートする作業は、イシュー459969で追跡されています。
  • Red HatディストリビューションのRPMパッケージはサポートされていません。このユースケースをサポートする作業は、エピック12980で追跡されています。

CycloneDX SBOMレポートを生成する方法

CycloneDX SBOMレポートを使用して、プロジェクトのコンポーネントをGitLabに登録します。

CycloneDXレポートは以下に準拠する必要があります:

GitLabは、GitLabと互換性のあるレポートを生成できるセキュリティアナライザーを提供しています:

新しい脆弱性の確認

継続的脆弱性スキャンによって検出された新しい脆弱性は、脆弱性レポートで確認できます。しかし、それらは影響を受けたSBOMコンポーネントが検出されたパイプラインにはリストされません。

セキュリティアドバイザリーが追加または更新された後に脆弱性が作成されますが、コードベースが変更されていない限り、対応する脆弱性がプロジェクトに追加されるまでに数時間かかる場合があります。過去14日以内に公開されたアドバイザリーのみが、継続的脆弱性スキャンの対象となります。

脆弱性が検出されなくなった場合

継続的脆弱性スキャンは、新しいアドバイザリーが公開されると自動的に脆弱性を作成しますが、プロジェクトに脆弱性が存在しなくなった時期を判断することはできません。そのために、GitLabでは依然として、デフォルトブランチのパイプラインでコンテナスキャンのスキャンを実行し、最新情報を含む対応するセキュリティレポートアーティファクトを生成する必要があります。これらのレポートが処理され、特定の脆弱性を含まなくなった場合、それらは継続的脆弱性スキャンによって作成されたものであっても、そのようにフラグが付けられます。

レジストリ用コンテナスキャンによって検出された脆弱性は、この方法では解決できず、イメージで修正した後も表示されたままになります。これは、レジストリ用コンテナスキャンが脆弱性を解決済みとしてマークするために必要なセキュリティレポートではなく、SBOMのみを生成するためです。

セキュリティアドバイザリー

継続的脆弱性スキャンは、GitLabによって管理されるサービスであるパッケージメタデータデータベースを使用します。このデータベースは、ライセンスとセキュリティアドバイザリーデータを集約し、GitLab.comおよびGitLab Self-Managedインスタンスで使用される更新を定期的に公開します。

GitLab.comでは、同期はGitLabによって管理され、すべてのプロジェクトで利用可能です。

GitLab Self-Managedでは、GitLabインスタンスの管理者エリアでパッケージレジストリメタデータを同期するように選択できます。

データソース

セキュリティアドバイザリーの現在のデータソースには以下が含まれます:

脆弱性データベースにコントリビュートする

脆弱性を見つけるには、rawデータを含むAqua securityのvuln-list repositoryを検索できます。Trivy-DBにコントリビュートすることもできます。