SBOMを使用した依存関係スキャンに移行する
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
依存関係スキャン機能は、GitLab SBOM脆弱性スキャナーにアップグレードされます。この変更の一環として、SBOMを使用した依存関係スキャン機能と新しい依存関係スキャンアナライザーにより、Gemnasiumアナライザーに基づく従来の依存関係スキャン機能が置き換えられます。ただし、今回の移行によって導入される大幅な変更により、自動的には実装されません。このドキュメントは、移行ガイドとして提供されます。
GitLab依存関係スキャンを使用しており、次のいずれかの条件に該当する場合は、この移行ガイドに従ってください:
依存関係スキャンCI/CDジョブが、依存関係スキャンCI/CDテンプレートを含めることによって構成されている。
include: - template: Jobs/Dependency-Scanning.gitlab-ci.yml - template: Jobs/Dependency-Scanning.latest.gitlab-ci.yml依存関係スキャンCI/CDジョブが、スキャン実行ポリシーを使用して構成されている。
依存関係スキャンCI/CDジョブが、パイプライン実行ポリシーを使用して構成されている。
変更点の理解
SBOMを使用した依存関係スキャンにプロジェクトを移行する前に、導入される基本的な変更を理解しておく必要があります。今回の移行は、技術的な進化、GitLabにおける依存関係スキャンの動作方法に対する新しいアプローチ、ユーザーエクスペリエンスに対するさまざまな改善を表しています。その一部を以下に示します:
- サポート対象言語の増加。非推奨のGemnasiumアナライザーは、PythonとJavaの限られたサブセットのバージョンに制限されています。新しいアナライザーにより、組織は、これらのツールチェーンの古いバージョンを古いプロジェクトで使用したり、アナライザーのイメージに対するメジャーアップデートを待たずに、新しいバージョンを試したりするために必要な柔軟性を得ることができます。さらに、新しいアナライザーは、ファイルカバレッジの向上というメリットがあります。
- パフォーマンスの向上。アプリケーションによっては、Gemnasiumアナライザーによって実行されるビルドが1時間近くかかる場合があり、重複した作業になることがあります。新しいアナライザーは、ビルドシステムを直接実行しなくなりました。代わりに、以前に定義されたビルドジョブを再利用して、全体的なスキャンパフォーマンスを向上させます。
- より小さなアタックサーフェス。ビルド機能をサポートするために、Gemnasiumアナライザーには、さまざまな依存関係がプリロードされています。新しいアナライザーは、これらの依存関係の大部分を削除し、より小さなアタックサーフェスを実現します。
- よりシンプルな設定。非推奨のGemnasiumアナライザーでは、正常に機能するために、プロキシ、認証局(CA)証明書バンドル、およびその他のさまざまなユーティリティの設定が頻繁に必要になります。新しいソリューションでは、これらの要件の多くが削除され、設定がより簡単な堅牢なツールが実現します。
セキュリティスキャンに対する新しいアプローチ
従来の依存関係スキャン機能を使用する場合、すべてのスキャン作業はCI/CDパイプライン内で行われます。スキャンを実行すると、Gemnasiumアナライザーは2つの重要なタスクを同時に処理します。プロジェクトの依存関係を特定し、GitLab Advisory Databaseのローカルコピーと特定のセキュリティスキャンエンジンを使用して、それらの依存関係のセキュリティ分析を直ちに実行します。次に、結果をさまざまなレポート(CycloneDX SBOMおよび依存関係スキャンセキュリティレポート)に出力します。
一方、SBOMを使用した依存関係スキャン機能は、依存関係の検出を、静的到達可能性または脆弱性スキャンなどの他の分析から分離する、分解された依存関係分析アプローチに依存しています。これらのタスクは引き続き同じCIジョブ内で実行されますが、切り離された再利用可能なコンポーネントとして機能します。たとえば、脆弱性スキャン分析では、GitLab継続的脆弱性スキャン機能もサポートする、統合エンジンであるGitLab SBOM脆弱性スキャナーが再利用されます。これにより、将来のインテグレーションポイントの機会も開かれ、より柔軟な脆弱性スキャンワークフローが可能になります。
SBOMを使用した依存関係スキャンがアプリケーションをどのようにスキャンするかについて、詳細をお読みください。
CI/CD設定
CI/CDパイプラインの中断を防ぐため、新しいアプローチは、安定版の依存関係スキャンCI/CDテンプレート(Dependency-Scanning.gitlab-ci.yml)には適用されません。GitLab 18.5以降では、有効にするには、v2テンプレート(Dependency-Scanning.v2.gitlab-ci.yml)を使用する必要があります。この機能が成熟するにつれて、他の移行パスも検討される可能性があります。
スキャン実行ポリシーを使用している場合、これらの変更はCI/CDテンプレートに基づいてビルドされるため、同じように適用されます。
メインの依存関係スキャンCI/CDコンポーネントを使用している場合、新しいアナライザーがすでに使用されているため、変更は表示されません。ただし、Android、Rust、Swift、Cocoapods用の特殊化されたコンポーネントを使用している場合は、現在サポートされているすべての言語とパッケージマネージャーをカバーするメインコンポーネントに移行する必要があります。
JavaおよびPythonのビルドサポート
1つの重要な変更は、依存関係がどのように検出されるか(特にJavaおよびPythonプロジェクトの場合)に影響します。新しいアナライザーは、アプリケーションをビルドして依存関係を判別する代わりに、ロックファイルまたは依存関係グラフファイルを介して、明示的な依存関係情報を必要とする、異なるアプローチを取ります。この変更は、これらのファイルが、リポジトリにコミットするか、CI/CDパイプライン中に動的に生成することにより、使用可能であることを確認する必要があることを意味します。これには初期セットアップが必要ですが、さまざまな環境で、より信頼性が高く一貫性のある結果が得られます。以下のセクションでは、必要に応じて、プロジェクトをこの新しいアプローチに適応させるために必要な具体的な手順について説明します。
スキャン結果へのアクセス
ユーザーは、Dependency-Scanning.v2.gitlab-ci.ymlを使用すると、ジョブアーティファクト(gl-dependency-scanning-report.json)として依存関係スキャン結果を表示できます。
ベータ版の動作
この機能のベータ版のリリース後のお客様からのフィードバックに基づいて、一般リリース用の依存関係スキャンレポートアーティファクトの生成を復活させることにしました。ベータ版の動作は、透明性と履歴上の理由から、ここに記載されていますが、一般的に利用可能な機能では正式にサポートされなくなり、製品から削除される可能性があります。
脆弱性スキャンの結果へのアクセス方法の変更点の詳細については、このセクションを展開してください。
SBOMを使用した依存関係スキャンに移行すると、セキュリティスキャンの結果の処理方法に基本的な変更があることに気付くでしょう。新しいアプローチでは、セキュリティ分析がCI/CDパイプラインからGitLabプラットフォームに移行され、結果へのアクセス方法と操作方法が変更されます。従来の依存関係スキャン機能では、Gemnasiumアナライザーを使用するCI/CDジョブは、スキャン結果を含む依存関係スキャンレポートアーティファクトを生成し、プラットフォームにアップロードします。これらの結果には、ジョブアーティファクトに提供されるすべての可能な方法でアクセスできます。つまり、結果がGitLabプラットフォームに到達する前に、CI/CDパイプライン内で結果を処理または変更できます。SBOMアプローチを使用した依存関係スキャンは、異なる動作をします。セキュリティ分析は、組み込みのGitLab SBOM脆弱性スキャナーを使用してGitLabプラットフォーム内で実行されるため、ジョブアーティファクトにスキャン結果は表示されなくなります。代わりに、GitLabはCycloneDX SBOMレポートアーティファクトを分析します。これは、CI/CDパイプラインが生成し、セキュリティに関する発見事項をGitLabプラットフォームに直接作成します。移行をスムーズに行うために、GitLabはいくつかの下位互換性を維持します。Gemnasiumアナライザーを使用している間は、スキャン結果を含む標準アーティファクト(artifacts:pathsを使用)を取得できます。つまり、これらの結果を必要とする後続のCI/CDジョブがある場合、それらにアクセスできます。ただし、GitLab SBOM脆弱性スキャナーが進化および改善されるにつれて、これらのアーティファクトベースの結果は、最新の機能強化を反映しなくなることに注意してください。新しい依存関係スキャンアナライザーに完全に移行する準備ができたら、プログラムでスキャン結果にアクセスする方法を調整する必要があります。ジョブアーティファクトを読み取りする代わりに、GitLab GraphQL API(特に(Pipeline.securityReportFindingsリソース))を使用します。
コンプライアンスフレームワークに関する考慮事項
SBOMベースの依存関係スキャンに移行する場合は、コンプライアンスフレームワークへの潜在的な影響に注意してください:
- SBOMベースのスキャンを使用すると、「依存関係スキャンの実行」コンプライアンス制御が、従来の
gl-dependency-scanning-report.jsonアーティファクトを予期するため、GitLab Self-Managedインスタンス(18.4以降)で失敗する可能性があります。 - このイシューは、GitLab.com (SaaS) インスタンスには影響しません。
- 組織が依存関係スキャン制御でコンプライアンスフレームワークを使用している場合は、最初に本番環境以外の環境で移行をテストしてください。
詳細については、コンプライアンスフレームワークの互換性を参照してください。
影響を受けるプロジェクトの特定
この移行でどのプロジェクトに注意が必要かを理解することは、最初の重要なステップです。JavaおよびPythonプロジェクトでは、依存関係の処理方法が根本的に変化するため、最も大きな影響があります。影響を受けるプロジェクトの特定を支援するために、GitLabは依存関係スキャンビルドサポート検出ヘルパーツールを提供します。このツールは、GitLabグループまたはGitLab Self-Managedインスタンスを調べ、現在、gemnasium-maven-dependency_scanningまたはgemnasium-python-dependency_scanning CI/CDジョブで依存関係スキャン機能を使用しているプロジェクトを特定します。このツールを実行すると、移行中に注意が必要なプロジェクトの包括的なレポートが作成されます。この情報を早期に把握すると、特に組織全体で複数のプロジェクトを管理している場合に、移行戦略を効果的に計画するのに役立ちます。
SBOMを使用した依存関係スキャンに移行する
SBOM方式を使用した依存関係スキャンに移行するには、プロジェクトごとに次の手順を実行します:
- Gemnasiumアナライザーに基づく依存関係スキャンの既存のカスタマイズを削除します。
gemnasium-dependency_scanning、gemnasium-maven-dependency_scanning、またはgemnasium-python-dependency_scanningCI/CDジョブを手動でオーバーライドして、プロジェクトの.gitlab-ci.ymlまたはパイプライン実行ポリシーのCI/CD設定でそれらをカスタマイズした場合は、それらを削除します。- 影響を受けるCI/CD変数を設定した場合は、それに応じて設定を調整してください。
- 次のいずれかのオプションを使用して、SBOM機能を使用した依存関係スキャンを有効にします:
- おすすめ:
v2依存関係スキャンCI/CDテンプレートDependency-Scanning.v2.gitlab-ci.ymlを使用して、新しい依存関係スキャンアナライザーを実行します:.gitlab-ci.ymlCI/CD設定に、v2依存関係スキャンCI/CDテンプレートが含まれていることを確認します。- 必要に応じて、以下の言語固有の手順に従って、プロジェクトとCI/CD設定を調整します。
- スキャン実行ポリシーを使用して、新しい依存関係スキャンアナライザーを実行します:
- 依存関係スキャン用に設定されたスキャン実行ポリシーを編集し、
v2テンプレートを使用していることを確認します。 - 必要に応じて、以下の言語固有の手順に従って、プロジェクトとCI/CD設定を調整します。
- 依存関係スキャン用に設定されたスキャン実行ポリシーを編集し、
- パイプライン実行ポリシーを使用して、新しい依存関係スキャンアナライザーを実行します:
- 設定されたパイプライン実行ポリシーを編集し、
v2テンプレートを使用していることを確認します。 - 必要に応じて、以下の言語固有の手順に従って、プロジェクトとCI/CD設定を調整します。
- 設定されたパイプライン実行ポリシーを編集し、
- 依存関係スキャンCI/CDコンポーネントを使用して、新しい依存関係スキャンアナライザーを実行します:
- 依存関係スキャンCI/CDテンプレートの
includeステートメントを、.gitlab-ci.ymlCI/CD設定の依存関係スキャンCI/CDコンポーネントに置き換えます。 - 必要に応じて、以下の言語固有の手順に従って、プロジェクトとCI/CD設定を調整します。
- 依存関係スキャンCI/CDテンプレートの
- おすすめ:
多言語プロジェクトの場合は、関連するすべての言語固有の移行手順を完了します。
CI/CDテンプレートからCI/CDコンポーネントへの移行を決定した場合は、GitLab Self-Managedインスタンスの現在の制限事項を確認してください。
言語固有の手順
新しい依存関係スキャンアナライザーに移行する際には、プロジェクトのプログラミング言語とパッケージマネージャーに基づいて、特定の調整を行う必要があります。これらの手順は、CI/CDテンプレート、スキャン実行ポリシー、または依存関係スキャンCI/CDコンポーネントのいずれを使用して、実行するように設定したかに関係なく、新しい依存関係スキャンアナライザーを使用する場合は常に適用されます。以下のセクションでは、サポートされている各言語とパッケージマネージャーの詳細な手順について説明します。それぞれについて、以下を説明します:
- 依存関係検出がどのように変化しているか
- 提供する必要がある特定のファイル
- ワークフローにまだ含まれていない場合に、これらのファイルを生成する方法
このフィードバックイシューで、新しい依存関係スキャンアナライザーに関するフィードバックを共有してください。
Bundler
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブと、Gemfile.lockファイル(gems.locked代替ファイル名もサポートされています)を解析することにより、プロジェクトの依存関係を抽出する機能を備えたBundlerプロジェクトをサポートします。サポートされているBundlerのバージョンとGemfile.lockファイルの組み合わせは、依存関係スキャン(Gemnasiumベース)のドキュメントで詳しく説明されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、Gemfile.lockファイル(gems.locked代替ファイル名もサポートされています)を解析することによって、プロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。
Bundlerプロジェクトの移行
新しい依存関係スキャンアナライザーを使用するようにBundlerプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
依存関係スキャンアナライザーを使用するようにBundlerプロジェクトを移行するために必要な追加の手順はありません。
CocoaPods
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、CI/CDテンプレートまたはスキャン実行ポリシーを使用する場合、CocoaPodsプロジェクトをサポートしません。CocoaPodsのサポートは、試験的なCocoapods CI/CDコンポーネントでのみ使用できます。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、Podfile.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
CocoaPodsプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、CocoaPodsプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するために、CocoaPodsプロジェクトを移行するために必要な追加の手順はありません。
Composer
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブとそのcomposer.lockファイルを解析してプロジェクトの依存関係を抽出する機能を使い、Composerプロジェクトをサポートします。サポートされているComposerのバージョンとcomposer.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、composer.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
Composerプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、Composerプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するために、Composerプロジェクトを移行するために必要な追加の手順はありません。
Conan
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブとそのconan.lockファイルを解析してプロジェクトの依存関係を抽出する機能を使い、Conanプロジェクトをサポートします。サポートされているConanのバージョンとconan.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、conan.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
Conanプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、Conanプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するために、Conanプロジェクトを移行するために必要な追加の手順はありません。
Go
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブとそのgo.modファイルとgo.sumファイルを使用することによって、Go言語プロジェクトをサポートします。このアナライザーは、検出された依存関係の精度を高めるためにgo listコマンドを実行しようとします。これには、機能的なGo言語環境が必要です。失敗した場合、go.sumファイルの解析にフォールバックします。サポートされているGo言語のバージョン、go.mod、go.sumファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトでgo listコマンドを実行しようとせず、go.sumファイルの解析にフォールバックしなくなりました。代わりに、プロジェクトは少なくともgo.modファイルと、go mod graphコマンド(Go言語ツールチェーン)で生成されたgo.graphファイルを提供する必要があります。go.graphファイルは、検出されたコンポーネントの精度を高め、依存関係グラフを生成して、依存関係パスの可視化のような機能をイネーブルメントするために必要です。これらのファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアプローチでは、GitLabが特定のGo言語のバージョンをサポートする必要はありません。
Go言語プロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、Go言語プロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
Go言語プロジェクトを移行するには:
- プロジェクトが
go.modファイルとgo.graphファイルを提供していることを確認します。依存関係スキャンジョブを実行する前に、前のCI/CDジョブ(例:build)でGo言語ツールチェーンからgo mod graphコマンドを設定して、dependencies.lockファイルを動的に生成し、アーティファクトとしてエクスポートします。
詳細と例については、Go言語のイネーブルメント手順を参照してください。
Gradle
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用して、build.gradleファイルとbuild.gradle.ktsファイルからアプリケーションをビルドすることによって、プロジェクトの依存関係を抽出するGradleプロジェクトをサポートします。Java、Kotlin、Gradleでサポートされているバージョンの組み合わせは複雑であるため、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、プロジェクトはGradle依存関係ロックプラグインで生成されたdependencies.lockファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアプローチでは、GitLabが特定のバージョンのJava、Kotlin、およびGradleをサポートする必要はありません。
Gradleプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、Gradleプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
Gradleプロジェクトを移行するには:
- プロジェクトが
dependencies.lockファイルを提供していることを確認します。プロジェクトでGradle依存関係ロックプラグインを設定し、以下を実行します:- 開発ワークフローにプラグインを永続的に統合します。これは、
dependencies.lockファイルをリポジトリにコミットし、プロジェクトの依存関係に変更を加えるときに更新することを意味します。 - 依存関係スキャンジョブを実行する前に、前のCI/CDジョブ(例:
build)でコマンドラインを使用し、dependencies.lockファイルを動的に生成してアーティファクトとしてエクスポートします。
- 開発ワークフローにプラグインを永続的に統合します。これは、
詳細と例については、Gradleのイネーブルメント手順を参照してください。
Maven
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用して、pom.xmlファイルからアプリケーションをビルドすることによって、Mavenプロジェクトをサポートします。Java、Kotlin、Mavenでサポートされているバージョンの組み合わせは複雑であるため、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、プロジェクトはmaven依存関係プラグインで生成されたmaven.graph.jsonファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアプローチでは、GitLabが特定のバージョンのJava、Kotlin、およびMavenをサポートする必要はありません。
Mavenプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、Mavenプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
Mavenプロジェクトを移行するには:
- プロジェクトが
maven.graph.jsonファイルを提供していることを確認します。依存関係スキャンジョブを実行する前に、前のCI/CDジョブ(例:build)でmaven依存関係プラグインを設定して、maven.graph.jsonファイルを動的に生成し、アーティファクトとしてエクスポートします。
詳細と例については、Mavenのイネーブルメント手順を参照してください。
npm
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブとそのpackage-lock.jsonファイルまたはnpm-shrinkwrap.json.lockファイルを解析してプロジェクトの依存関係を抽出する機能を使い、npmプロジェクトをサポートします。サポートされているnpmのバージョンとpackage-lock.jsonファイルまたはnpm-shrinkwrap.json.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。このアナライザーは、Retire.JSスキャナーを使用して、npmプロジェクトにベンダーされたJavaScriptファイルをスキャンする場合があります。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、package-lock.jsonファイルまたはnpm-shrinkwrap.json.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアナライザーは、販売されているJavaScriptファイルをスキャンしません。代替機能のサポートは、エピック7186で提案されています。
npmプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、npmプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するために、npmプロジェクトを移行するために必要な追加の手順はありません。
NuGet
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブとそのpackages.lock.jsonファイルを解析してプロジェクトの依存関係を抽出する機能を使い、NuGetプロジェクトをサポートします。サポートされているNuGetのバージョンとpackages.lock.jsonファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、packages.lock.jsonファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
NuGetプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、NuGetプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するために、NuGetプロジェクトを移行するために必要な追加の手順はありません。
pip
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-python-dependency_scanning CI/CDジョブを使用して、requirements.txtファイル(requirements.pipファイルとrequires.txtファイルは代替ファイル名としてもサポートされています)からアプリケーションをビルドすることによって、pipプロジェクトをサポートします。PIP_REQUIREMENTS_FILE環境変数を使用して、カスタムファイル名を指定することもできます。Pythonとpipでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントに詳しく記載されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、プロジェクトはpip-compileコマンドラインツールによって生成されたrequirements.txtロックファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアプローチでは、GitLabが特定のバージョンのPythonとpipをサポートする必要はありません。pipcompile_requirements_file_name_pattern仕様の入力またはDS_PIPCOMPILE_REQUIREMENTS_FILE_NAME_PATTERN変数を使用して、pip-compileロックファイルのカスタムファイル名を指定することもできます。
または、プロジェクトはpipdeptreeコマンドラインユーティリティで生成されたpipdeptree.jsonファイルを提供できます。
pipプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するために、pipプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
pipプロジェクトを移行するには:
- プロジェクトが
requirements.txtロックファイルを提供していることを確認します。プロジェクトでpip-compileコマンドラインツールを設定し、以下を実行します:- コマンドラインツールを開発ワークフローに永続的に統合します。これは、
requirements.txtファイルをリポジトリにコミットし、プロジェクトの依存関係に変更を加えるときに更新することを意味します。 - 依存関係スキャンジョブを実行する前に、前のCI/CDジョブ(例:
build)でコマンドラインツールを使用し、requirements.txtファイルを動的に生成してアーティファクトとしてエクスポートします。
- コマンドラインツールを開発ワークフローに永続的に統合します。これは、
または
- プロジェクトが
pipdeptree.jsonロックファイルを提供していることを確認します。依存関係スキャンジョブを実行する前に、前のCI/CDジョブ(例:build)でpipdeptreeコマンドラインユーティリティを設定して、pipdeptree.jsonファイルを動的に生成し、アーティファクトとしてエクスポートします。
詳細と例については、pipのイネーブルメント手順を参照してください。
Pipenv
Previous behavior(以前の動作): Gemnasiumアナライザーに基づく依存関係スキャンは、gemnasium-python-dependency_scanning CI/CDジョブを使用して、Pipfileファイルまたは存在する場合はPipfile.lockファイルからアプリケーションをビルドすることによって、Pipenvプロジェクトをサポートします。PythonとPipenvでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)のドキュメントで詳しく説明されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにPipenvプロジェクトをビルドしません。代わりに、プロジェクトは少なくともPipfile.lockファイルと、理想的にはpipenv graphコマンドラインで生成されたpipenv.graph.jsonファイルを提供する必要があります。pipenv.graph.jsonファイルは、依存関係グラフを生成し、依存関係パスのような機能をイネーブルメントするために必要です。これらのファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアプローチでは、GitLabが特定のバージョンのPythonとPipenvをサポートする必要はありません。
Pipenvプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにPipenvプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
Pipenvプロジェクトを移行するには:
- プロジェクトが
Pipfile.lockファイルを提供していることを確認します。プロジェクトでpipenv lockコマンドを設定し、次のいずれかの操作を行います:- コマンドを開発ワークフローに永続的に統合します。これは、
Pipfile.lockファイルをリポジトリにコミットし、プロジェクトの依存関係に変更を加えるときに更新することを意味します。 - 依存関係スキャンジョブを実行する前に、前のCI/CDジョブ(例:
build)でコマンドラインを使用し、Pipfile.lockファイルを動的に生成してアーティファクトとしてエクスポートします。
- コマンドを開発ワークフローに永続的に統合します。これは、
または
- プロジェクトが
pipenv.graph.jsonファイルを提供していることを確認します。依存関係スキャンジョブを実行する前に、先行するCI/CDジョブ(例:build)でpipenv graphコマンドを設定し、pipenv.graph.jsonファイルを動的に生成し、アーティファクトとしてエクスポートします。
詳細と例については、Pipenvのイネーブルメント手順を参照してください。
Poetry
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-python-dependency_scanningCI/CDジョブとそのpoetry.lockファイルを解析してプロジェクトの依存関係を抽出する機能を使い、Poetryプロジェクトをサポートします。Poetryとpoetry.lockファイルでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、poetry.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
Poetryプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにPoetryプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するようにPoetryプロジェクトを移行するための追加の手順はありません。
pnpm
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-dependency_scanningCI/CDジョブとそのpnpm-lock.yamlファイルを解析してプロジェクトの依存関係を抽出する機能を使い、pnpmプロジェクトをサポートします。pnpmとpnpm-lock.yamlファイルでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。このアナライザーは、Retire.JSスキャナーを使用して、npmプロジェクトで販売されているJavaScriptファイルをスキャンする場合があります。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、pnpm-lock.yamlファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアナライザーは、販売されているJavaScriptファイルをスキャンしません。代替機能のサポートは、エピック7186で提案されています。
pnpmプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにpnpmプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するようにpnpmプロジェクトを移行するための追加の手順はありません。
sbt
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-maven-dependency_scanningCI/CDジョブとそのbuild.sbtファイルからアプリケーションをビルドしてプロジェクトの依存関係を抽出する機能を使い、sbtプロジェクトをサポートします。Java、Scala、およびsbtでサポートされているバージョンの組み合わせは複雑であり、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、プロジェクトはsbt-依存関係グラフプラグイン (sbt >= 1.4.0に含まれています)で生成されたdependencies-compile.dotファイルを提供する必要があります。このファイルは、dependency-scanningCI/CDジョブによって処理され、CycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアプローチでは、GitLabが特定のバージョンのJava、Scala、およびsbtをサポートする必要はありません。
sbtプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにsbtプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
sbtプロジェクトを移行するには:
- プロジェクトが
dependencies-compile.dotファイルを提供していることを確認します。依存関係スキャンジョブを実行する前に、先行するCI/CDジョブ(例:build)でsbt-依存関係グラフプラグインを設定し、dependencies-compile.dotファイルを動的に生成し、アーティファクトとしてエクスポートします。
詳細と例については、sbtのイネーブルメント手順を参照してください。
setuptools
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-python-dependency_scanningCI/CDジョブとそのsetup.pyファイルからアプリケーションをビルドしてプロジェクトの依存関係を抽出する機能を使い、setuptoolsプロジェクトをサポートします。Pythonとsetuptoolsでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにsetuptoolプロジェクトをビルドすることをサポートしていません。互換性のあるrequirements.txtロックファイルを生成するには、pip-compileコマンドラインツールを設定することをお勧めします。または、独自のCycloneDXソフトウェア部品表ドキュメントを提供することもできます。
setuptoolsプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにsetuptoolsプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
setuptoolsプロジェクトを移行するには:
- プロジェクトが
requirements.txtロックファイルを提供していることを確認します。プロジェクトでpip-compileコマンドラインツールを設定し、以下を実行します:- コマンドラインツールを開発ワークフローに永続的に統合します。これは、
requirements.txtファイルをリポジトリにコミットし、プロジェクトの依存関係に変更を加えるときに更新することを意味します。 - 依存関係スキャンジョブを実行する前に、
buildCI/CDジョブでコマンドラインツールを使用してrequirements.txtファイルを動的に生成し、アーティファクトとしてエクスポートします。
- コマンドラインツールを開発ワークフローに永続的に統合します。これは、
詳細と例については、pipのイネーブルメント手順を参照してください。
Swift
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、CI/CDテンプレートまたはスキャン実行ポリシーを使用する場合、Swiftプロジェクトをサポートしていません。Swiftのサポートは、実験的なSwift CI/CDコンポーネントでのみ利用できます。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、Package.resolvedファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
Swiftプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにSwiftプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するようにSwiftプロジェクトを移行するための追加の手順はありません。
uv
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-dependency_scanningCI/CDジョブとそのuv.lockファイルを解析してプロジェクトの依存関係を抽出する機能を使い、uvプロジェクトをサポートします。uvとuv.lockファイルでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、uv.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。
uvプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにuvプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するようにuvプロジェクトを移行するための追加の手順はありません。
Yarn
Previous behavior(以前の動作): Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-dependency_scanningCI/CDジョブとそのyarn.lockファイルを解析してプロジェクトの依存関係を抽出する機能を使い、Yarnプロジェクトをサポートします。Yarnとyarn.lockファイルでサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。このアナライザーは、Yarnの依存関係に対して、マージリクエストを介して脆弱性を解決するための修正データを提供する場合があります。このアナライザーは、Retire.JSスキャナーを使用して、Yarnプロジェクトで販売されているJavaScriptファイルをスキャンする場合があります。
New behavior(新しい動作): 新しい依存関係スキャンアナライザーは、yarn.lockファイルを解析してプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDXソフトウェア部品表レポートアーティファクトを生成します。このアナライザーは、Yarnの依存関係に対する修正データを提供しません。代替機能のサポートは、エピック759で提案されています。このアナライザーは、販売されているJavaScriptファイルをスキャンしません。代替機能のサポートは、エピック7186で提案されています。
Yarnプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにYarnプロジェクトを移行します。
前提要件:
- すべてのプロジェクトに必要な一般的な移行手順を完了します。
新しい依存関係スキャンアナライザーを使用するようにYarnプロジェクトを移行するための追加の手順はありません。マージリクエスト機能を介して脆弱性を解決する機能を使用する場合は、利用可能なアクションについて非推奨のお知らせを確認してください。JavaScriptの販売ファイルスキャン機能を使用する場合は、利用可能なアクションについて非推奨のお知らせを確認してください。
CI/CD変数の変更
既存のほとんどのCI/CD変数は、新しい依存関係スキャンアナライザーとは関係がなくなったため、その値は無視されます。これらが他のセキュリティアナライザーを設定するためにも使用されていない限り(例: ADDITIONAL_CA_CERT_BUNDLE)、CI/CDの設定から削除する必要があります。
CI/CDの設定から次のCI/CD変数を削除します:
ADDITIONAL_CA_CERT_BUNDLEDS_GRADLE_RESOLUTION_POLICYDS_IMAGE_SUFFIXDS_JAVA_VERSIONDS_PIP_DEPENDENCY_PATHDS_PIP_VERSIONDS_REMEDIATE_TIMEOUTDS_REMEDIATEGEMNASIUM_DB_LOCAL_PATHGEMNASIUM_DB_REF_NAMEGEMNASIUM_DB_REMOTE_URLGEMNASIUM_DB_UPDATE_DISABLEDGEMNASIUM_LIBRARY_SCAN_ENABLEDGOARCHGOFLAGSGOOSGOPRIVATEGRADLE_CLI_OPTSGRADLE_PLUGIN_INIT_PATHMAVEN_CLI_OPTSPIP_EXTRA_INDEX_URLPIP_INDEX_URLPIP_REQUIREMENTS_FILEPIPENV_PYPI_MIRRORSBT_CLI_OPTS
次のCI/CD変数は、新しい依存関係スキャンアナライザーに適用できるため、そのままにしておきます:
DS_EXCLUDED_PATHSDS_INCLUDE_DEV_DEPENDENCIESDS_MAX_DEPTHSECURE_ANALYZERS_PREFIX
PIP_REQUIREMENTS_FILEは、新しい依存関係スキャンアナライザーのDS_PIPCOMPILE_REQUIREMENTS_FILE_NAME_PATTERNまたはpipcompile_requirements_file_name_pattern仕様入力に置き換えられました。
ユーザー設定(特にスキャン実行ポリシー)とのスムーズな移行を実現するために、v2テンプレートには、次の設定変数との下位互換性があります(これらの変数は、対応するspec:inputsよりも優先されます)。これらの変数は次のとおりです:
DS_PIPCOMPILE_REQUIREMENTS_FILE_NAME_PATTERNDS_MAX_DEPTHDS_EXCLUDED_PATHSDS_INCLUDE_DEV_DEPENDENCIESDS_STATIC_REACHABILITY_ENABLEDSECURE_LOG_LEVEL
さらに、3つの変数が追加されました。これらはlatestテンプレートにはなく、脆弱性スキャンAPIの機能を制御します。
DS_API_TIMEOUTDS_API_SCAN_DOWNLOAD_DELAYDS_ENABLE_VULNERABILITY_SCAN