SBOMを使用した依存関係スキャンに移行する
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
依存関係スキャン機能は、GitLab SBOM脆弱性スキャナーにアップグレードしています。この変更の一環として、依存関係スキャン(SBOMを使用)機能と新しい依存関係スキャンアナライザーが、Gemnasiumアナライザーに基づく従来の依存関係スキャン機能に置き換わります。ただし、この移行によって大きな変更が導入されるため、自動的に実装されるわけではなく、このドキュメントは移行ガイドとして機能します。
GitLab依存関係スキャンを使用しており、以下のいずれかの条件が当てはまる場合は、この移行ガイドに従ってください:
The依存関係スキャンCI/CDジョブare configured by including a依存関係スキャンCI/CD templates.
include: - template: Jobs/Dependency-Scanning.gitlab-ci.yml - template: Jobs/Dependency-Scanning.latest.gitlab-ci.ymlThe依存関係スキャンCI/CDジョブare configured by using スキャン実行ポリシー.
The依存関係スキャンCI/CDジョブare configured by using パイプライン実行ポリシー.
変更点を理解する
SBOMを使用した依存関係スキャンにプロジェクトを移行する前に、導入される根本的な変更点を理解しておく必要があります。この移行は、技術的な進化、GitLabでの依存関係スキャンの新しいアプローチ、そしてUXに対する様々な改善を表しており、これには以下が含まれますが、これらに限定されません:
- 言語サポートの強化。非推奨のGemnasiumアナライザーは、PythonとJavaのごく一部のバージョンに限定されています。新しいアナライザーは、組織が古いツールチェーンの古いプロジェクトで以前のバージョンを使用する柔軟性を提供し、アナライザーのイメージに対する大規模なアップデートを待つことなく、新しいバージョンを試すオプションも提供します。さらに、新しいアナライザーは、ファイルのカバレッジが向上しています。
- パフォーマンスの向上。アプリケーションによっては、Gemnasiumアナライザーによってビルドされたビルドは1時間近くかかり、重複した作業になる可能性があります。新しいアナライザーは、ビルドシステムを直接実行することはありません。代わりに、以前に定義されたビルドジョブを再利用して、全体的なスキャンパフォーマンスを向上させます。
- より小さいアタックサーフェス。そのビルド機能をサポートするために、Gemnasiumアナライザーには様々な依存関係があらかじめロードされています。新しいアナライザーは、これらの依存関係の多くを削除し、結果としてより小さなアタックサーフェスを実現します。
- よりシンプルな設定。非推奨のGemnasiumアナライザーは、正しく機能するために、プロキシの設定、認証局(CA)CA証明書のバンドル、およびその他の様々なユーティリティを頻繁に必要とします。この新しいソリューションは、これらの要件の多くを削除し、結果としてより簡単に設定できる堅牢なツールをもたらします。
セキュリティスキャンへの新しいアプローチ
従来の依存関係スキャン機能を使用する場合、すべてのスキャン作業はCI/CDパイプラインで実行されます。スキャンを実行する際、Gemnasiumアナライザーは2つの重要なタスクを同時に処理します。それは、プロジェクトの依存関係を特定し、GitLabアドバイザリデータベースのローカルコピーとその特定のセキュリティスキャンエンジンを使用して、それらの依存関係のセキュリティ分析を直ちに実行することです。その後、様々なレポート(CycloneDX SBOMおよび依存関係スキャンセキュリティレポート)に結果を出力します。
一方、SBOMを使用した依存関係スキャン機能は、静的到達可能性や脆弱性スキャンなどの他の分析から依存関係の検出を分離する、分解された依存関係分析アプローチに依存しています。これらのタスクは依然として同じCI/CDジョブで実行されますが、切り離された再利用可能なコンポーネントとして機能します。例えば、脆弱性スキャン分析は、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)として表示できます。
ベータ版の動作
依存関係スキャンレポートアーティファクトは、GA(一般提供)リリースに含まれています。ベータ版の動作は、履歴的な参照のために以下にドキュメント化されていますが、もはや公式にはサポートされておらず、製品から削除される可能性があります。
脆弱性スキャン結果へのアクセス方法の変更点に関する詳細については、このセクションを展開してください。
SBOMを使用した依存関係スキャンに移行すると、セキュリティスキャン結果の処理方法に根本的な変更があることに気付くでしょう。新しいアプローチでは、セキュリティ分析がCI/CDパイプラインからGitLabプラットフォームへ移動するため、結果へのアクセス方法と操作方法が変わります。従来の依存関係スキャン機能では、Gemnasiumアナライザーを使用するCI/CDジョブがスキャン結果を含む依存関係スキャンレポートアーティファクトを生成し、プラットフォームにアップロードします。これらの結果には、ジョブアーティファクトが提供するあらゆる方法でアクセスできます。これは、GitLabプラットフォームに到達する前に、CI/CDパイプライン内で結果を処理または変更できることを意味します。SBOMを使用した依存関係スキャンのアプローチは異なります。セキュリティ分析は、組み込みのGitLab SBOM脆弱性スキャナーを使用してGitLabプラットフォーム内で実行されるため、スキャン結果をジョブアーティファクトで確認することはもうありません。代わりに、GitLabはCI/CDパイプラインが生成するCycloneDX SBOMレポートアーティファクトを分析し、セキュリティ所見を直接GitLabプラットフォームに作成します。移行をスムーズにするために、GitLabはいくつかの後方互換性を維持しています。Gemnasiumアナライザーを使用している間は、スキャン結果を含む標準のアーティファクト(artifacts:pathsを使用)を依然として取得できます。これは、これらの結果を必要とする後続のCI/CDジョブがある場合でも、それらにアクセスできることを意味します。ただし、GitLab SBOM脆弱性スキャナーが進化改善するにつれて、これらのアーティファクトベースの結果には最新の機能強化が反映されないことに留意してください。新しい依存関係スキャンアナライザーに完全に移行する準備ができたら、スキャン結果へのプログラムによるアクセス方法を調整する必要があります。ジョブアーティファクトを読み取る代わりに、GitLab GraphQL API、特に(Pipeline.securityReportFindingsリソース)を使用します。
コンプライアンスフレームワークに関する考慮事項
SBOMベースの依存関係スキャンに移行する際は、コンプライアンスフレームワークへの潜在的な影響に注意してください:
- SBOMベースのスキャンを使用する場合、“Dependency scanning running” コンプライアンスコントロールは、従来の
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を使用した依存関係スキャンへの移行
前提条件:
.gitlab-ci.ymlファイルを編集するか、CI/CDコンポーネントを使用するには: プロジェクトのデベロッパー、メンテナー、またはオーナーロール。- スキャン実行ポリシーまたはパイプライン実行ポリシーを編集するには: グループのオーナーロール、または
manage_security_policy_link権限を持つカスタムロール。
SBOMを使用した依存関係スキャンメソッドに移行するには、プロジェクトごとに以下の手順を実行します:
- Gemnasiumアナライザーに基づいた依存関係スキャンの既存のカスタマイズを削除します。
- プロジェクトの
.gitlab-ci.ymlまたはパイプライン実行ポリシーのCI/CD設定で、gemnasium-dependency_scanning、gemnasium-maven-dependency_scanning、またはgemnasium-python-dependency_scanningの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コンポーネントを使用します:
- プロジェクトの
.gitlab-ci.ymlCI/CD設定にある依存関係スキャンCI/CDテンプレートのincludeステートメントを依存関係スキャンCI/CDコンポーネントに置き換えます。 - 必要に応じて、以下の言語固有の手順に従って、プロジェクトとCI/CD設定を調整してください。
- プロジェクトの
- おすすめ:
複数の言語を使用するプロジェクトの場合、関連するすべての言語固有の移行ステップを完了してください。
CI/CDテンプレートからCI/CDコンポーネントへ移行することを決定した場合は、GitLab Self-Managedの現在の制限を確認してください。
言語固有の手順
新しい依存関係スキャンアナライザーに移行する際、プロジェクトのプログラミング言語やパッケージマネージャーに基づいて具体的な調整を行う必要があります。これらの手順は、CI/CDテンプレート、スキャン実行ポリシー、または依存関係スキャンCI/CDコンポーネントのいずれを通じて実行するように設定したかにかかわらず、新しい依存関係スキャンアナライザーを使用するたびに適用されます。以下のセクションでは、サポートされている各言語およびパッケージマネージャーに関する詳細な手順を記載しています。各手順には以下の説明が含まれます:
- 依存関係検出の変更点
- 提供する必要がある特定のファイル
- これらのファイルがまだワークフローの一部ではない場合に、それらを生成する方法
このフィードバックイシューで、新しい依存関係スキャンアナライザーに関するご意見をお聞かせください。
Bundler
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブを使用してBundlerプロジェクトをサポートし、Gemfile.lockファイル(gems.lockedも代替ファイル名としてサポートされています)を解析することでプロジェクトの依存関係を抽出できます。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 SBOMレポートアーティファクトを生成します。
CocoaPodsプロジェクトの移行
CocoaPodsプロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
CocoaPodsプロジェクトを依存関係スキャンアナライザーを使用するように移行するために必要な追加手順はありません。
Composer
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブを使用してComposerプロジェクトをサポートし、composer.lockファイルを解析することでプロジェクトの依存関係を抽出できます。Composerのサポートされているバージョンとcomposer.lockファイルの組み合わせは、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、composer.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。
Composerプロジェクトの移行
Composerプロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Composerプロジェクトを依存関係スキャンアナライザーを使用するように移行するために必要な追加手順はありません。
Conan
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブを使用してConanプロジェクトをサポートし、conan.lockファイルを解析することでプロジェクトの依存関係を抽出できます。Conanのサポートされているバージョンとconan.lockファイルの組み合わせは、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、conan.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。
Conanプロジェクトの移行
Conanプロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Conanプロジェクトを依存関係スキャンアナライザーを使用するように移行するために必要な追加手順はありません。
Go
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブを使用してGo言語プロジェクトをサポートし、go.modとgo.sumファイルを使用することでプロジェクトの依存関係を抽出できます。このアナライザーは、検出された依存関係の精度を高めるためにgo listコマンドを実行するしようとしますが、これには機能するGo環境が必要です。失敗した場合、go.sumファイルの解析にフォールバックします。Go言語のサポートされているバージョン、go.mod、およびgo.sumファイルの組み合わせは、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、プロジェクト内のgo listコマンドを実行することで依存関係を抽出しようとはせず、go.sumファイルの解析にフォールバックすることもありません。代わりに、プロジェクトは少なくともgo.modファイルと、理想的にはGoツールチェーンのgo mod graphコマンドで生成されたgo.graphファイルを提供する必要があります。検出されたコンポーネントの精度を高め、依存関係パスなどの機能を有効にするための依存関係グラフを生成するには、go.graphファイルが必要です。これらのファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDX SBOMレポートアーティファクトを生成します。このアプローチでは、GitLabが特定のGo言語のバージョンをサポートする必要はありません。
Go言語プロジェクトの移行
Go言語プロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Go言語プロジェクトを移行するには:
- プロジェクトが
go.modとgo.graphファイルを提供していることを確認します。Go言語ツールチェーンからのgo mod graphコマンドを先行するCI/CDジョブ(例:build)で設定し、依存関係スキャンジョブを実行する前にdependencies.lockファイルを動的に生成し、アーティファクトとしてエクスポートします。
詳細と例については、Go言語の有効化手順を参照してください。
Gradle
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用してGradleプロジェクトをサポートし、build.gradleおよびbuild.gradle.ktsファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出できます。Java、Kotlin、およびGradleのサポートされているバージョンの組み合わせは複雑であり、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドすることはありません。代わりに、プロジェクトはGradle Dependency Lockプラグインで生成されたdependencies.lockファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDX SBOMレポートアーティファクトを生成します。このアプローチでは、GitLabがJava、Kotlin、およびGradleの特定のバージョンをサポートする必要はありません。
Gradleプロジェクトの移行
Gradleプロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Gradleプロジェクトを移行するには:
- プロジェクトが
dependencies.lockファイルを提供していることを確認します。プロジェクトにGradle Dependency Lockプラグインを設定し、以下のいずれかの方法で実行します:- プラグインを開発ワークフローに永続的に統合する。これは、
dependencies.lockファイルをリポジトリにコミットし、プロジェクトの依存関係に変更を加える際にそれを更新することを意味します。 - 先行するCI/CDジョブ(例:
build)でコマンドを使用し、依存関係スキャンジョブを実行する前にdependencies.lockファイルを動的に生成し、アーティファクトとしてエクスポートします。
- プラグインを開発ワークフローに永続的に統合する。これは、
詳細と例については、Gradleの有効化手順を参照してください。
Maven
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用してMavenプロジェクトをサポートし、pom.xmlファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出できます。Java、Kotlin、およびMavenのサポートされているバージョンの組み合わせは複雑であり、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドすることはありません。代わりに、プロジェクトはmaven依存プラグインで生成されたmaven.graph.jsonファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDX SBOMレポートアーティファクトを生成します。このアプローチでは、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ジョブを使用してnpmプロジェクトをサポートし、package-lock.jsonまたはnpm-shrinkwrap.json.lockファイルを解析することでプロジェクトの依存関係を抽出できます。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 SBOMレポートアーティファクトを生成します。このアナライザーは、ベンダー提供されたJavaScriptファイルをスキャンしません。代替機能のサポートは、エピック7186で提案されています。
npmプロジェクトの移行
npmプロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
npmプロジェクトを依存関係スキャンアナライザーを使用するように移行するために必要な追加手順はありません。
NuGet
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブを使用してNuGetプロジェクトをサポートし、packages.lock.jsonファイルを解析することでプロジェクトの依存関係を抽出できます。NuGetのサポートされているバージョンとpackages.lock.jsonファイルの組み合わせは、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、packages.lock.jsonファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。
NuGetプロジェクトの移行
NuGetプロジェクトを、新しい依存関係スキャンアナライザーを使用するように移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
NuGetプロジェクトを依存関係スキャンアナライザーを使用するように移行するために必要な追加手順はありません。
pip
Previous behavior: Gemnasiumアナライザーをベースとした依存関係スキャンは、gemnasium-python-dependency_scanning CI/CDジョブを使用してpipプロジェクトをサポートし、requirements.txtファイル(requirements.pipおよびrequires.txtも代替ファイル名としてサポートされています)からアプリケーションをビルドすることでプロジェクトの依存関係を抽出できます。The PIP_REQUIREMENTS_FILE環境変数can also be used to specify a custom filename.Pythonとpipのサポートされているバージョンの組み合わせは、依存関係スキャン(Gemnasiumベース)のドキュメントに詳細が記載されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドすることはありません。代わりに、プロジェクトはpip-compileコマンドラインツールによって生成されたrequirements.txtロックファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDX SBOMレポートアーティファクトを生成します。このアプローチでは、GitLabがPythonとpipの特定のバージョンをサポートする必要はありません。pipcompile_requirements_file_name_pattern spec入力または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アナライザーに基づく依存関係スキャンは、Pipfileファイル、またはPipfile.lockファイルが存在する場合はそれらのファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出するために、gemnasium-python-dependency_scanning CI/CDジョブを使用するPipenvプロジェクトをサポートします。PythonとPipenvでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにPipenvプロジェクトをビルドすることはありません。代わりに、プロジェクトは少なくともPipfile.lockファイル、および理想的にはpipenv graphコマンドによって生成されるpipenv.graph.jsonファイルを提供する必要があります。pipenv.graph.jsonファイルは依存関係グラフを生成し、依存関係パスの可視化のような機能を有効にするために必要です。これらのファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDX SBOMレポートアーティファクトを生成します。このアプローチでは、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アナライザーに基づく依存関係スキャンは、poetry.lockファイルを解析することによってプロジェクトの依存関係を抽出するために、gemnasium-python-dependency_scanning CI/CDジョブを使用するPoetryプロジェクトをサポートします。Poetryとpoetry.lockファイルでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。
New behavior: 新しい依存関係スキャンアナライザーは、poetry.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。
Poetryプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにPoetryプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Poetryプロジェクトを新しい依存関係スキャンアナライザーを使用するように移行するために、追加のステップはありません。
pnpm
Previous behavior: Gemnasiumアナライザーに基づく依存関係スキャンは、pnpm-lock.yamlファイルを解析することによってプロジェクトの依存関係を抽出するために、gemnasium-dependency_scanning CI/CDジョブを使用するpnpmプロジェクトをサポートします。pnpmとpnpm-lock.yamlファイルでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。このアナライザーは、Retire.JSスキャナーを使用してnpmプロジェクトにベンダー提供されたJavaScriptファイルをスキャンする場合があります。
New behavior: 新しい依存関係スキャンアナライザーは、pnpm-lock.yamlファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。このアナライザーは、ベンダー提供されたJavaScriptファイルをスキャンしません。代替機能のサポートは、エピック7186で提案されています。
pnpmプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにpnpmプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
pnpmプロジェクトを新しい依存関係スキャンアナライザーを使用するように移行するために、追加のステップはありません。
sbt
Previous behavior: Gemnasiumアナライザーに基づく依存関係スキャンは、build.sbtファイルからアプリケーションをビルドすることによってプロジェクトの依存関係を抽出するために、gemnasium-maven-dependency_scanning CI/CDジョブを使用するsbtプロジェクトをサポートします。Java、Scala、およびsbtでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドすることはありません。代わりに、プロジェクトはsbt-dependency-graphプラグイン (sbt >= 1.4.0に含まれる)で生成されたdependencies-compile.dotファイルを提供する必要があります。このファイルは、dependency-scanning CI/CDジョブによって処理され、CycloneDX SBOMレポートアーティファクトを生成します。このアプローチでは、GitLabがJava、Scala、およびsbtの特定のバージョンをサポートする必要はありません。
sbtプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにsbtプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
sbtプロジェクトを移行するには:
- プロジェクトが
dependencies-compile.dotファイルを提供していることを確認します。以前のCI/CDジョブ(例:build)でsbt-dependency-graphプラグインを設定し、dependencies-compile.dotファイルを動的に生成して、依存関係スキャンジョブを実行する前にアーティファクトとしてエクスポートします。
詳細と使用例については、sbtのイネーブルメント手順を参照してください。
setuptools
Previous behavior: Gemnasiumアナライザーに基づく依存関係スキャンは、setup.pyファイルからアプリケーションをビルドすることによってプロジェクトの依存関係を抽出するために、gemnasium-python-dependency_scanning CI/CDジョブを使用するsetuptoolsプロジェクトをサポートします。Pythonとsetuptoolsでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためのsetuptoolsプロジェクトのビルドをサポートしていません。互換性のあるrequirements.txtロックファイルを生成するようにpip-compileコマンドラインツールを設定します。あるいは、独自のCycloneDX SBOMドキュメントを提供することもできます。
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 SBOMレポートアーティファクトを生成します。
Swiftプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにSwiftプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Swiftプロジェクトを新しい依存関係スキャンアナライザーを使用するように移行するために、追加のステップはありません。
uv
Previous behavior: Gemnasiumアナライザーに基づく依存関係スキャンは、uv.lockファイルを解析することによってプロジェクトの依存関係を抽出するために、gemnasium-dependency_scanning CI/CDジョブを使用するuvプロジェクトをサポートします。uvとuv.lockファイルでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。
New behavior: 新しい依存関係スキャンアナライザーは、uv.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。
uvプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにuvプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
uvプロジェクトを新しい依存関係スキャンアナライザーを使用するように移行するために、追加のステップはありません。
Yarn
Previous behavior: Gemnasiumアナライザーに基づく依存関係スキャンは、yarn.lockファイルを解析することによってプロジェクトの依存関係を抽出するために、gemnasium-dependency_scanning CI/CDジョブを使用するYarnプロジェクトをサポートします。Yarnとyarn.lockファイルでサポートされているバージョンの組み合わせは、Gemnasiumベースの依存関係スキャンドキュメントに詳述されています。このアナライザーは、Yarn依存関係の脆弱性をマージリクエストを介して解決するための修正データを提供する場合があります。このアナライザーは、Retire.JSスキャナーを使用してYarnプロジェクトにバンドルされたJavaScriptファイルをスキャンする場合があります。
New behavior: 新しい依存関係スキャンアナライザーは、yarn.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブでCycloneDX SBOMレポートアーティファクトを生成します。このアナライザーは、Yarn依存関係の修正データを提供しません。代替機能のサポートは、エピック 759で提案されています。このアナライザーは、ベンダー提供されたJavaScriptファイルをスキャンしません。代替機能のサポートは、エピック7186で提案されています。
Yarnプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにYarnプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行ステップを完了します。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Yarnプロジェクトを新しい依存関係スキャンアナライザーを使用するように移行するために、追加のステップはありません。マージリクエストを介して脆弱性を解決する機能を使用している場合は、利用可能なアクションについて非推奨のお知らせを確認してください。JavaScriptのバンドルされたファイルスキャン機能を使用している場合は、利用可能なアクションについて非推奨のお知らせを確認してください。
CI/CD変数の変更
既存のCI/CD変数のほとんどは、新しい依存関係スキャンアナライザーでは関連性がなくなり、それらの値は無視されます。これらが他のセキュリティアナライザーの設定にも使用されている場合を除き、CI/CD設定から削除する必要があります。
以下のCI/CD変数をCI/CD 設定から削除します:
DS_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_IGNORED_SCOPESGEMNASIUM_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 spec入力に置き換えられます。
ユーザー設定(特にスキャン実行ポリシー)とのよりスムーズな移行を実現するため、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