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ジョブは、パイプライン実行ポリシーを使用して設定されます。
移行の準備
移行の労力を評価し、移行パスを特定し、前提条件を確認し、影響を受けるプロジェクトを決定します。
移行作業の見積もり
Dependency Scanning migration evaluatorは、プロジェクトでの依存関係スキャンの設定方法に基づいて、カスタマイズされた移行チェックリストを生成します。それは、イネーブルメントパス、言語エコシステム、CI/CDのカスタマイズ、および(Self-Managedインスタンスの場合)パッケージメタデータデータベースの同期ステータスについて尋ねます。評価ツールは以下を生成します:
- 作業の見積もり(最小、中程度、重要、または複雑)。
- お客様のセットアップに適用される移行手順のチェックリストで、このガイドの関連セクションへの直接リンク付きです。
- 特に注意が必要な状況(例えば、スキャン実行ポリシーからパイプライン実行ポリシーへ移行する必要があるプロジェクトなど)を示すフラグ。
評価ツールは完全にブラウザで実行され、データをどこにも送信しません。
移行パスの特定
既存の設定は自動的に移行されません。新しい機能を採用するには、設定を更新する必要があります。
お客様に適用される移行パスを見つけるには、以下のリストを使用してください:
- 安定したテンプレート(
Jobs/Dependency-Scanning.gitlab-ci.yml): 一般的な移行手順に従ってv2テンプレートに切り替え、プロジェクトで使用されているエコシステムに合わせて言語固有の指示を適用します。 - 最新テンプレート(
Jobs/Dependency-Scanning.latest.gitlab-ci.yml): 安定版テンプレートと同じです。一般的な移行手順に従ってv2テンプレートに切り替え、言語固有の指示を適用します。 - CI/CDコンポーネント: main componentはすでに新しいアナライザーを使用していますが、古いバージョン(v0とv1)はアナライザーのバージョンおよびサポートされている入力に関してラグがあります。includeを
v2バージョンに引き上げ、言語固有の指示を適用します。特定のAndroid、Rust、Swift、またはCocoaPodsコンポーネントを使用している場合は、メインコンポーネントに移行してください。 - スキャン実行ポリシー(SEP)またはパイプライン実行ポリシー(PEP): ポリシーを編集して
v2テンプレートを参照し、一般的な移行手順と、スコープ内のプロジェクトに適用される言語固有の指示に従ってください。SEPとPEPはCI/CDテンプレートの上に構築されているため、SEPが更新された後、テンプレートの変更はスコープ内のすべてのプロジェクトに自動的に伝播されます。PEPの場合、ポリシーのCI/CD設定を直接更新して、v2テンプレートを参照します。
前提条件の確認: パッケージメタデータデータベースの同期
新しい依存関係スキャンアナライザーは、プロジェクトで使用されるパッケージタイプ用にPackage Metadata Database(PMDB)が同期されている必要があります。GitLab.comでは、インスタンスはすでにサポートされているすべてのパッケージタイプについてデータを同期しています。GitLab Self-ManagedとGitLab Dedicatedでは、管理者が同期を設定します。
移行する前に、管理者は次のことを行う必要があります:
- PMDB同期が有効になっており、プロジェクトで利用するパッケージタイプが選択されていることを確認してください。詳細については、choose package registry metadata to syncを参照してください。
- オフラインまたはファイアウォールで保護されたインスタンスの場合、enabling the Package Metadata Databaseに従ってください。
プロジェクトで利用するパッケージタイプに対してPMDB同期が完了していない場合、新しいアナライザーは対応するコンポーネントに対する勧告を解決できず、移行後にセキュリティの検出結果が欠落する可能性があります。
影響を受けるプロジェクトを特定する
レガシー依存関係スキャン機能を使用しているプロジェクトを特定します。セキュリティインベントリは、グループおよびプロジェクト全体のスキャナーのカバレッジの表示レベルを提供します。このステップが推奨される開始点です。
また、CI/CD設定でレガシーな使用箇所を見つけることもできます:
- レガシーテンプレートの
Jobs/Dependency-Scanning.gitlab-ci.ymlまたはJobs/Dependency-Scanning.latest.gitlab-ci.ymlを.gitlab-ci.ymlファイルに含める。 - スキャン実行ポリシーおよびパイプライン実行ポリシーにおける同じテンプレートへの参照。
- レガシーアナライザーのジョブ名(
gemnasium-dependency_scanning、gemnasium-maven-dependency_scanning、gemnasium-python-dependency_scanning)が.gitlab-ci.ymlファイル、ポリシーYAML、またはneeds:もしくはdependencies:でそれらを使用するダウンストリームジョブに含まれている場合。
変更点を理解する
Gemnasiumアナライザーから新しい依存関係スキャンアナライザーへの移行は、技術的に大きな進化です。ほとんどのプロジェクトでは、migrate to dependency scanning using SBOMに記載されているCI/CD設定のスイッチ以外に変更は必要ありません。このセクションで説明されている変更は、一部のプロジェクト(特にGradle、Maven、およびロックファイルを持たないPython)で追加のステップが必要な理由を理解するのに役立ちます。
主な変更点:
- 言語サポートとファイルのカバレッジの増加: 新しいアナライザーは、GemnasiumアナライザーがサポートするPythonおよびJavaのバージョンに制約されず、ファイルカバレッジの増加の恩恵を受けます。
- パフォーマンスの向上: 新しいアナライザーは、既存のロックファイルや依存関係グラフのエクスポートを優先し、それらを持たないプロジェクトに対してのみエコシステム固有のresolution jobsを実行します。
- より小さなアタックサーフェスとより柔軟な設定: アナライザーイメージはロックファイルとグラフのエクスポートのみを解析します。エコシステム固有の設定(プライベートレジストリ、カスタムCAバンドル、JVMオプション)は、関連する依存解決ジョブにのみ適用されます。解決イメージをビルド環境に合わせて上書きできます。
セキュリティスキャンの新しいアプローチ
レガシーの依存関係スキャン機能を使用する場合、すべてのスキャン作業はCI/CDパイプラインで実行されます。スキャンを実行すると、Gemnasiumアナライザーは2つの重要なタスクを同時に処理します。それは、プロジェクトの依存を識別し、GitLabアドバイザリデータベースのローカルコピーとその特定のセキュリティスキャンエンジンを使用して、それらの依存のセキュリティ分析を即座に実行します。その後、結果をさまざまなレポート(CycloneDX SBOMおよび依存関係スキャンセキュリティレポート)に出力します。
一方、SBOMを使用する依存関係スキャン機能は、静的到達可能性や脆弱性スキャンなどの他の分析から依存関係の検出を分離する、分解された依存関係分析アプローチに依存しています。これらのタスクは同じCI/CDジョブで実行されますが、分離された再利用可能なコンポーネントとして機能します。例えば、脆弱性スキャン分析は、統合されたエンジンであるGitLabSBOM脆弱性スキャナーを再利用し、GitLab継続的脆弱性スキャン機能もサポートします。これにより、将来のインテグレーションポイントの機会も開かれ、より柔軟な脆弱性スキャンワークフローが可能になります。
SBOMを使用する依存関係スキャンがどのようにscans an applicationするかについて詳しくは、こちらをお読みください。
Gradle、Maven、およびPythonの依存関係検出
新しいアナライザーは、Gradle、Maven、およびPythonプロジェクトの依存関係がどのように検出されるかを変更します。依存関係を特定するためにアプリケーションをビルドする代わりに、アナライザーは「精度はダイヤルである」という原則に従う多層検出モデルを使用します:
- ロックファイルまたは依存関係グラフのエクスポート: サポートされているファイルがリポジトリにコミットされた場合、またはジョブアーティファクトとして渡された場合(
maven.graph.json、dependencies.lock、requirements.txt、Pipfile.lockなど)、アナライザーはそれを直接使用します。これが最も正確なオプションです。 - 依存関係解決: Maven、Gradle、またはPythonプロジェクトでサポートされているファイルが存在しない場合、アナライザーは自動的にファイルを生成しようとします。解決ジョブは、最小限のエコシステムイメージとネイティブコマンド(
mvn dependency:tree、pip-compile、gradle dependenciesなど)を使用して.preステージで実行されます。dependency-scanningジョブは生成されたアーティファクトを使用します。 - マニフェストフォールバック: ロックファイルまたは依存関係グラフファイルが存在しない場合、アナライザーはサポートされているマニフェストファイル(
pom.xml、requirements.txt、build.gradle、build.gradle.ktsなど)を解析して、直接の依存関係のみを抽出します。推移的依存関係は検出されず、正確な解決済みバージョンを特定することはできません。
GitLab 19.0以降では、依存解決とマニフェストフォールバックがデフォルトで有効になっています。
最も正確な結果を得るには、ロックファイルまたは依存関係グラフのエクスポートをリポジトリにコミットするか、プロジェクトの実際のビルド環境を使用して、先行するCI/CDジョブで生成してください。以下のセクションでは、各言語およびパッケージマネージャーで利用可能なオプションについて説明します。
スキャン結果へのアクセス
v2テンプレートは、レガシーテンプレートと同じgl-dependency-scanning-report.jsonジョブアーティファクトを生成します。このアーティファクトを利用するダウンストリームジョブ(needs:またはdependencies:を使用)は、移行後も引き続き機能しますが、生成するジョブ名はgemnasium-dependency_scanning(およびそのMavenおよびPythonバリアント)からdependency-scanningに変更されます。
SBOMを使用した依存関係スキャンへの移行
移行方法は、プロジェクトで依存関係スキャンがどのように有効になっているかによって異なります。各サブセクションでは、削除するカスタマイズ、更新する参照、および最小限の変更前後の例について説明します。
あなたに該当するサブセクションを見つけるには、identify your migration pathを参照してください。多言語プロジェクトの場合は、language-specific instructionsの各言語の手順を完了してください。
安定版CI/CDテンプレートを使用した移行
既存のパイプラインへの影響を避けるため、安定版テンプレート(Jobs/Dependency-Scanning.gitlab-ci.yml)はレガシーGemnasiumアナライザーを実行し、新しいアナライザーを使用するように更新されません。新しいアナライザーを導入するには、includeをv2テンプレート(Jobs/Dependency-Scanning.v2.gitlab-ci.yml)に切り替えてください。
安定版テンプレートと比較して、v2テンプレートは次の通りです:
- レガシーの
gemnasium-dependency_scanning、gemnasium-maven-dependency_scanning、gemnasium-python-dependency_scanningジョブの代わりに、新しいdependency-scanningジョブを実行します。 - レガシージョブ名は事前定義されません。
gemnasium-*ジョブを上書きするカスタマイズ(たとえば、.gitlab-ci.ymlでそれらを拡張することによって)は、もはや適用されず、削除または書き換えが必要です。 gl-dependency-scanning-report.jsonジョブアーティファクトを生成し続けます。needs:またはdependencies:を介してこのアーティファクトを使用するダウンストリームジョブは、移行後も引き続き機能しますが、レガシーのgemnasium-*ジョブ名ではなく、新しいdependency-scanningジョブ名を参照する必要があります。- Changes to CI/CD variablesに記載されているいくつかの変更点を除き、同じCI/CD変数を受け入れます。
前提条件:
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
安定版CI/CDテンプレートを使用して移行するには:
.gitlab-ci.ymlまたは含まれているファイルでレガシーのgemnasium-*ジョブを上書きするカスタマイズを削除します。v2テンプレートはこれらのジョブ名を定義しないため、オーバーライドによって無効なCI/CD設定のためにパイプラインが失敗する可能性があります。includeステートメントを更新して、v2テンプレートを参照します。needs:またはdependencies:でレガシージョブ名を参照するダウンストリームジョブを、代わりにdependency-scanningを使用するように更新します。- プロジェクト内のエコシステムについて、language-specific instructionsにある言語固有の指示を適用します。
変更前:
include:
- template: Jobs/Dependency-Scanning.gitlab-ci.yml
# Customization that targets the legacy job name.
gemnasium-dependency_scanning:
variables:
SECURE_LOG_LEVEL: debug
# Downstream job that consumes the legacy report.
export-security-report:
stage: deploy
needs:
- job: gemnasium-dependency_scanning
artifacts: true
script:
- ./publish.sh gl-dependency-scanning-report.json変更後:
include:
- template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
inputs:
analyzer_log_level: debug
export-security-report:
stage: deploy
needs:
- job: dependency-scanning
artifacts: true
script:
- ./publish.sh gl-dependency-scanning-report.json依存解決の前にカスタムジョブを実行する必要があるパイプラインの場合(たとえば、プライベートレジストリに認証するため、またはビルドキャッシュを準備するため)は、adjust resolution job orderingを参照してください。
最新のCI/CDテンプレートを使用した移行
最新のテンプレート(Jobs/Dependency-Scanning.latest.gitlab-ci.yml)は、デフォルトでレガシーGemnasiumアナライザーを実行します。移行ステップとして、DS_ENFORCE_NEW_ANALYZERCI/CD変数を介して新しいアナライザーへのオプトインをサポートしていますが、新しいアナライザーのバージョンv1のみであり、依存関係解決ジョブはありません。
前提条件:
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Maven、Gradle、およびPythonプロジェクトの場合、次のいずれかを実行する必要があります:
- ロックファイルまたは依存関係グラフエクスポートをリポジトリにコミットするか、先行するCI/CDジョブによって生成します。
- マニフェストフォールバックを有効にします。
v2テンプレート(v2アナライザー、依存解決、マニフェストフォールバック)との完全な同等性のために、stable template stepsに従ってv2テンプレートに切り替えてください。移行作業は同じです。レガシーのgemnasium-*ジョブを対象とするカスタマイズを削除し、includeステートメントを更新し、ダウンストリームジョブを更新します。
すでにDS_ENFORCE_NEW_ANALYZERを介して新しいDSアナライザーを使用することにオプトインしている場合は、移行はより簡単です。移行を最終決定する前に、新しいテンプレートが導入する変更点を確認してください。
依存解決の前にカスタムジョブを実行する必要があるパイプラインの場合(たとえば、プライベートレジストリに認証するため、またはビルドキャッシュを準備するため)は、adjust resolution job orderingを参照してください。
CI/CDコンポーネントを使用した移行
GitLab Self-Managedでは、GitLab.comCI/CDコンポーネントを使用する際のcurrent limitationsを確認してください。
main dependency scanning CI/CD componentのv2リリースは、v2テンプレートと同等性があります。新しいアナライザーをそのv2バージョンで実行し、同じ入力をサポートします。以前のリリース(v0とv1)は、アナライザーのバージョンとサポートされる機能で遅れているため、v0またはv1を含むプロジェクトはインクルードをv2に上げる必要があります。
前提条件:
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
CI/CDコンポーネントを使用して移行するには:
- コンポーネントの
includeステートメントを更新して、メインコンポーネントのバージョン2を参照します。 v2で名前が変更されたか削除された入力をすべて置き換えます。メインコンポーネントのv2リリースは、v2CI/CDテンプレートと同じ入力セットを公開します。完全なリストについては、available spec inputsを参照してください。- プロジェクト内のエコシステムについて、language-specific instructionsにある言語固有の指示を適用します。
Android、Rust、Swift、またはCocoaPods用の専用コンポーネントを使用している場合は、メインコンポーネントに移行してください。メインコンポーネントは、すべてのサポートされている言語とパッケージマネージャーをカバーしています。専用コンポーネントは不要になりました。
変更前:
include:
- component: $CI_SERVER_FQDN/components/dependency-scanning/main@1変更後:
include:
- component: $CI_SERVER_FQDN/components/dependency-scanning/main@2依存解決の前にカスタムジョブを実行する必要があるパイプラインの場合(たとえば、プライベートレジストリに認証するため、またはビルドキャッシュを準備するため)は、adjust resolution job orderingを参照してください。
スキャン実行ポリシーを使用した移行
スキャン実行ポリシーは、ポリシーの対象となるプロジェクト全体にCI/CDテンプレートを適用します。依存関係スキャンの場合、ポリシーのtemplateフィールドは実行されるテンプレートを選択します。新しいアナライザーはv2テンプレートエディションを通じて利用できます。
対象となる各プロジェクトにおけるポリシーの動作は、対応するCI/CDテンプレートを直接含むプロジェクトの動作を反映します。ポリシーがv2を参照するように更新された後、the stable CI/CD templateの手順がスコープ内の各プロジェクトに適用されます。レガシーのgemnasium-*ジョブを対象とするカスタマイズを削除し、それらを消費するダウンストリームジョブを更新してください。
前提条件:
- グループのオーナーロール、または
manage_security_policy_link権限を持つカスタムロール。
スキャン実行ポリシーを使用して移行するには:
- スキャン実行ポリシーを編集し、
dependency_scanningアクションに対してtemplate: v2を設定します。 - ポリシーでカバーされる各プロジェクトで、レガシーの
gemnasium-*ジョブを上書きするカスタマイズを削除し、それらを参照するダウンストリームジョブを更新します。 - ポリシーでカバーされるプロジェクトのエコシステムについて、language-specific instructionsにある言語固有の指示を適用します。
変更前:
scan_execution_policy:
- name: Enforce dependency scanning
enabled: true
rules:
- type: pipeline
branch_type: all
actions:
- scan: dependency_scanning変更後:
scan_execution_policy:
- name: Enforce dependency scanning
enabled: true
rules:
- type: pipeline
branch_type: all
actions:
- scan: dependency_scanning
template: v2依存解決またはマニフェストフォールバックでカバーされないプロジェクト
スキャン実行ポリシーは、レガシーGemnasiumアナライザーのbuild support機能を使用して、デフォルトのビルド環境を提供します。新しいアナライザーは、コミットされたロックファイルまたは依存関係グラフのエクスポートがないプロジェクトの依存関係を検出するために、依存関係解決またはマニフェストフォールバックに依存します。
これらのメカニズムは、以前build supportに依存していたほとんどのプロジェクトをカバーします。いくつかの状況では、パイプライン実行ポリシーの追加の柔軟性が依然として役立ちます:
- プロジェクトのエコシステムが、依存解決とマニフェストフォールバックの現在のカバレッジの範囲外である(例: Scala/sbt)。
- 依存解決には、利用可能なCI/CD変数を超える設定ステップが必要です(たとえば、非標準の認証情報を使用してプライベートレジストリに対して認証する)。
これらのプロジェクトでは、CI/CDジョブをより自由にカスタマイズし、create a lockfile or dependency graph export manuallyできるパイプライン実行ポリシーを使用してください。
パイプライン実行ポリシーを使用した移行
パイプライン実行ポリシーは、通常、依存関係スキャンテンプレートまたはCI/CDコンポーネントと、プロジェクト固有のカスタマイズを含む完全なCI/CD設定を適用します。適用される移行手順は、ポリシーのCI/CD設定が何を含むかによって異なります。
前提条件:
- グループのオーナーロール、または
manage_security_policy_link権限を持つカスタムロール。
パイプライン実行ポリシーを使用して移行するには:
ポリシーが使用するテンプレートまたはコンポーネントを特定します:
- ポリシーに安定版CI/CDテンプレートが含まれている場合は、migrate using the stable CI/CD templateに従ってください。
- ポリシーに最新のCI/CDテンプレートが含まれている場合は、migrate using the latest CI/CD templateに従ってください。
- ポリシーにCI/CDコンポーネントが含まれている場合は、migrate using the CI/CD componentに従ってください。
それらの手順をポリシーのCI/CD設定に適用します。
ポリシーでカバーされるプロジェクトのエコシステムについて、language-specific instructionsにある言語固有の指示を適用します。
プロジェクト、グループ、またはインスタンス用にCI/CD変数(およびポリシー自身のvariables:ブロックで定義された変数)は、新しいdependency-scanningジョブと、その前に実行される解決ジョブに引き続き適用されます。v2で変数のステータスが変更された場合は、CI/CD変数の変更を参照してください。
依存解決の前にカスタムジョブを実行する必要があるパイプラインの場合(たとえば、プライベートレジストリに認証するため、またはビルドキャッシュを準備するため)は、adjust resolution job orderingを参照してください。
その他の考慮事項
以下のカスタマイズは、プロジェクトで依存関係スキャンがどのように有効になっているかに関わらず適用されます。
解決ジョブの順序の調整
デフォルトでは、依存関係解決ジョブは.preステージで実行されます。パイプラインに、依存関係スキャンが実行される前に完了する必要があるカスタムジョブがある場合(たとえば、プライベートレジストリに認証する.preジョブ、またはビルドキャッシュを準備するジョブなど)、解決ジョブはそれらのカスタムジョブと並行して実行され、後に実行されることはありません。解決ジョブは、カスタムジョブが生成するアーティファクトを参照できません。
意図した順序を維持するには、v2テンプレートまたはCI/CDコンポーネントでresolution_jobs_stage入力を使用して、解決ジョブを後のステージに移動します:
stages:
- .pre
- prepare
- test
include:
- template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
inputs:
resolution_jobs_stage: prepare
private-registry-cache-build:
stage: .pre
script:
- ./scripts/login-private-registry.sh
- ./scripts/build-dependency-cache.shその後、解決ジョブは、カスタム.preジョブが完了した後にprepareステージで実行されます。解決ジョブの動作を制御する入力の完全なリストについては、利用可能なCI/CDインプットを参照してください。
言語固有の指示
新しい依存関係スキャンアナライザーに移行する際には、プロジェクトのプログラミング言語やパッケージマネージャーに基づいて、具体的な調整を行う必要があります。これらの指示は、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アナライザーに基づいた依存関係スキャンは、Goプロジェクトをgemnasium-dependency_scanning CI/CDジョブを使用してサポートし、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プロジェクトを移行するには:
- プロジェクトが
go.modファイルとgo.graphファイルを提供していることを確認してください。前のCI/CDジョブ(例:buildビルド)で、Goツールチェーンのgo mod graphコマンドを設定して、依存関係スキャンジョブを実行する前にgo.graphファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。
詳細と例については、Goの有効化手順を参照してください。
Gradle
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用してGradleプロジェクトをサポートし、build.gradleおよびbuild.gradle.ktsファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出します。Java、Kotlin、およびGradleのサポートされているバージョンの組み合わせは複雑であり、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、多層検出モデルを使用します:
- リポジトリまたはジョブのアーティファクトにサポートされているロックファイルまたはグラフエクスポート(例:
gradle.lockfile)が存在する場合、アナライザーはそれを直接使用します。 - サポートされているロックファイルまたはグラフエクスポートが検出されず、サポートされているビルドファイル(例:
build.gradle)が存在する場合、依存関係の解決ジョブが.preステージで実行されます。これは自動的にgradle dependenciesを実行して、dependency-scanningジョブ用の依存関係グラフをエクスポートするように生成します。 - 依存関係の解決が利用できないか失敗した場合、マニフェストフォールバックは
build.gradleとbuild.gradle.ktsを直接解析することで、直接の依存関係のみを抽出します。マニフェストフォールバックの精度は、gradle.propertiesまたはgradle/libs.versions.tomlを介して依存関係を宣言するプロジェクトでは低下します。これは、バージョン変数が常に解決されるわけではないためです。
Gradleプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにGradleプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Gradleプロジェクトを移行するには、以下のいずれかのオプションを選択してください:
- 最も正確な結果を得るには、プロジェクトが依存関係グラフエクスポートファイルを提供していることを確認してください。前のCI/CDジョブ(例:
buildビルド)でGradle dependenciesタスクを設定して、依存関係スキャンジョブを実行する前にgradle.graph.txtファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。あるいは、別のサポートされているロックファイルまたはグラフエクスポートを選択することもできます。ロックファイルまたはグラフエクスポートを動的に生成する場合、DS_DISABLED_RESOLUTION_JOBSCI/CD変数の値にgradleを追加して、自動的な依存関係の解決を無効にします。 - 依存関係の解決に頼って、
gradle.graph.txtファイルを自動的に生成します。解決イメージがグラフエクスポートを正常に生成できることを確認してください。 - マニフェストフォールバックを利用して、
build.gradleまたはbuild.gradle.ktsで宣言された直接の依存関係のベースラインカバレッジを取得します。
詳細と例については、Gradleの有効化手順を参照してください。
Maven
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用してMavenプロジェクトをサポートし、pom.xmlファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出します。Java、Kotlin、およびMavenのサポートされているバージョンの組み合わせは複雑であり、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、多層検出モデルを使用します:
- Maven dependency pluginで生成された
maven.graph.jsonグラフエクスポートファイルがリポジトリまたはジョブのアーティファクトに存在する場合、アナライザーはそれを直接使用します。 - グラフエクスポートが検出されず、サポートされている
pom.xmlファイルが存在する場合、依存関係の解決ジョブが.preステージで実行されます。これは自動的にmvn dependency:treeを実行して、dependency-scanningジョブ用の依存関係グラフをエクスポートするように生成します。 - 依存関係の解決が利用できないか失敗した場合、マニフェストフォールバックは
pom.xmlを直接解析することで、直接の依存関係のみを抽出します。
Mavenプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにMavenプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Mavenプロジェクトを移行するには、以下のいずれかのオプションを選択してください:
- 最も正確な結果を得るには、プロジェクトが
maven.graph.jsonファイルを提供していることを確認してください。前のCI/CDジョブ(例:buildビルド)でMaven dependency pluginを設定して、依存関係スキャンジョブを実行する前にmaven.graph.jsonファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。グラフエクスポートを動的に生成する場合、DS_DISABLED_RESOLUTION_JOBSCI/CD変数の値にmavenを追加して、自動的な依存関係の解決を無効にします。 - 依存関係の解決に頼って、
maven.graph.jsonファイルを自動的に生成します。解決イメージがグラフエクスポートを正常に生成できることを確認してください。 - マニフェストフォールバックを利用して、
pom.xmlで宣言された直接の依存関係のベースラインカバレッジを取得します。
詳細と例については、Mavenの有効化手順を参照してください。
npm
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、npmプロジェクトをgemnasium-dependency_scanning CI/CDジョブを使用してサポートし、package-lock.jsonまたはnpm-shrinkwrap.json.lockファイルを解析することでプロジェクトの依存関係を抽出します。サポートされているnpmのバージョンとpackage-lock.jsonまたはnpm-shrinkwrap.json.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。このアナライザーは、npmプロジェクトに含まれるJavaScriptファイルをRetire.JSスキャナーを使用してスキャンする場合があります。
New behavior: 新しい依存関係スキャンアナライザーは、package-lock.jsonまたはnpm-shrinkwrap.json.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブによってCycloneDX SBOMレポートアーティファクトを生成します。このアナライザーは、ベンダー提供のJavaScriptファイルをスキャンしません。詳細については、コンテキストと利用可能なアクションについて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アナライザーに基づいた依存関係スキャンは、Pipプロジェクトをgemnasium-python-dependency_scanning CI/CDジョブを使用してサポートし、requirements.txtファイル(requirements.pipおよびrequires.txtの代替ファイル名もサポートされています)からアプリケーションをビルドすることでプロジェクトの依存関係を抽出します。PIP_REQUIREMENTS_FILE環境変数を使用して、カスタムファイル名を指定することもできます。PythonとPipのサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior: 新しい依存関係スキャンアナライザーは、依存関係を抽出するためにプロジェクトをビルドしません。代わりに、多層検出モデルを使用します:
- リポジトリまたはジョブのアーティファクトにサポートされているロックファイルまたはグラフエクスポート(例: pip-compileで生成された
requirements.txt)が存在する場合、アナライザーはそれを直接使用します。 - サポートされているロックファイルまたはグラフエクスポートが検出されず、サポートされているビルドファイル(例:
requirements.in)が存在する場合、依存関係の解決ジョブが.preステージで実行されます。これは自動的にpip-compileを実行して、dependency-scanningジョブ用のロックファイルを生成します。 - 依存関係の解決が利用できないか失敗した場合、マニフェストフォールバックは
requirements.txtファイルを直接解析することで、直接の依存関係のみを抽出します。
Pipプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにPipプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Pipプロジェクトを移行するには、以下のいずれかのオプションを選択してください:
- 最も正確な結果を得るには、プロジェクトがロックファイルを提供していることを確認してください。プロジェクトでpip-compileコマンドラインツールを設定し、
requirements.txtロックファイルをリポジトリにコミットするか、または先行するCI/CDジョブ(例:buildビルド)で使用して、依存関係スキャンジョブを実行する前にrequirements.txtファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。あるいは、別のサポートされているロックファイルまたはグラフエクスポートを選択することもできます。ロックファイルまたはグラフエクスポートを動的に生成する場合、DS_DISABLED_RESOLUTION_JOBSCI/CD変数の値にpythonを追加して、自動的な依存関係の解決を無効にします。 - 依存関係の解決に頼って、
pipcompile.lock.txtファイルを自動的に生成します。解決イメージがロックファイルを正常に生成できることを確認してください。 - マニフェストフォールバックを利用して、
requirements.txtで宣言された直接の依存関係のベースラインカバレッジを取得します。
詳細と例については、Pipの有効化手順を参照してください。
Pipenv
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-python-dependency_scanning CI/CDジョブを使用してPipenvプロジェクトをサポートし、Pipfileファイルまたは存在する場合はPipfile.lockファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出します。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の特定のバージョンをサポートすることを必要としません。依存関係の解決は、Pipfileファイルがあり、Pipfile.lockファイルがないプロジェクトではサポートされていません。
Pipenvプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにPipenvプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
Pipenvプロジェクトを移行するには:
- プロジェクトが
Pipfile.lockファイルを提供していることを確認してください。プロジェクトでpipenv lockコマンドを設定し、Pipfile.lockファイルをリポジトリにコミットするか、または先行するCI/CDジョブ(例:buildビルド)で使用して、依存関係スキャンジョブを実行する前にPipfile.lockファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。あるいは、別のサポートされているロックファイルまたはグラフエクスポートを選択することもできます。
Poetry
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-python-dependency_scanning CI/CDジョブを使用してPoetryプロジェクトをサポートし、poetry.lockファイルを解析することでプロジェクトの依存関係を抽出します。サポートされているPoetryのバージョンとpoetry.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior: 新しい依存関係スキャンアナライザーは、poetry.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブによってCycloneDX SBOMレポートアーティファクトを生成します。
Poetryプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにPoetryプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
依存関係スキャンアナライザーを使用するようにPoetryプロジェクトを移行するために、追加の手順は必要ありません。
pnpm
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、pnpmプロジェクトをgemnasium-dependency_scanning CI/CDジョブを使用してサポートし、pnpm-lock.yamlファイルを解析することでプロジェクトの依存関係を抽出します。サポートされているpnpmのバージョンとpnpm-lock.yamlファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。このアナライザーは、npmプロジェクトに含まれるJavaScriptファイルをRetire.JSスキャナーを使用してスキャンする場合があります。
New behavior: 新しい依存関係スキャンアナライザーは、pnpm-lock.yamlファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブによってCycloneDX SBOMレポートアーティファクトを生成します。このアナライザーは、ベンダー提供のJavaScriptファイルをスキャンしません。詳細については、コンテキストと利用可能なアクションについてJavaScriptベンダーライブラリの依存関係スキャン廃止のお知らせを参照してください。代替機能のサポートは、エピック7186で提案されています。
pnpmプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにpnpmプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
依存関係スキャンアナライザーを使用するようにpnpmプロジェクトを移行するために、追加の手順は必要ありません。
sbt
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-maven-dependency_scanning CI/CDジョブを使用してsbtプロジェクトをサポートし、build.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プロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
sbtプロジェクトを移行するには:
- プロジェクトが
dependencies-compile.dotファイルを提供していることを確認してください。前のCI/CDジョブ(例:buildビルド)でsbt-dependency-graphプラグインを設定して、依存関係スキャンジョブを実行する前にdependencies-compile.dotファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。
詳細と例については、sbtの有効化手順を参照してください。
setuptools
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、setuptoolsプロジェクトをgemnasium-python-dependency_scanning CI/CDジョブを使用してサポートし、setup.pyファイルからアプリケーションをビルドすることでプロジェクトの依存関係を抽出します。Pythonとsetuptoolsのサポートされているバージョンの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior: 新しい依存関係スキャンアナライザーは、setuptoolsプロジェクトをビルドして依存関係を抽出することはありません。代わりに、多層検出モデルを使用します:
- リポジトリまたはジョブのアーティファクトにサポートされているロックファイルまたはグラフエクスポート(例: pip-compileで生成された
requirements.txt)が存在する場合、アナライザーはそれを直接使用します。 - サポートされているロックファイルまたはグラフエクスポートが検出されず、サポートされているビルドファイル(例:
setup.py)が存在する場合、依存関係の解決ジョブが.preステージで実行されます。これは自動的にpip-compileを実行して、dependency-scanningジョブ用のロックファイルを生成します。
setuptoolsプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにsetuptoolsプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
setuptoolsプロジェクトを移行するには、以下のいずれかのオプションを選択してください:
- 最も正確な結果を得るには、プロジェクトが
requirements.txtロックファイルを提供していることを確認してください。プロジェクトでpip-compileコマンドラインツールを設定し、以下のいずれかの方法で対応します:- コマンドラインツールを開発ワークフローに永続的に統合します。これは、
requirements.txtファイルをリポジトリにコミットし、プロジェクトの依存関係に変更を加えるたびに更新することを意味します。 - コマンドラインツールを
buildCI/CDジョブで使用して、依存関係スキャンジョブを実行する前にrequirements.txtファイルを動的に生成し、アーティファクトとしてエクスポートするようにしてください。
- コマンドラインツールを開発ワークフローに永続的に統合します。これは、
- 依存関係の解決を有効にして、マニフェストファイルから
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プロジェクトをgemnasium-dependency_scanning CI/CDジョブを使用してサポートし、uv.lockファイルを解析することでプロジェクトの依存関係を抽出します。サポートされているuvのバージョンとuv.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。
New behavior: 新しい依存関係スキャンアナライザーは、uv.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブによってCycloneDX SBOMレポートアーティファクトを生成します。
uvプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにuvプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
依存関係スキャンアナライザーを使用するようにuvプロジェクトを移行するために、追加の手順は必要ありません。
Yarn
Previous behavior: Gemnasiumアナライザーに基づいた依存関係スキャンは、gemnasium-dependency_scanning CI/CDジョブを使用してYarnプロジェクトをサポートし、yarn.lockファイルを解析することでプロジェクトの依存関係を抽出します。サポートされているYarnのバージョンとyarn.lockファイルの組み合わせについては、依存関係スキャン(Gemnasiumベース)ドキュメントで詳しく説明されています。このアナライザーは、Yarnの依存関係に対するマージリクエストによる脆弱性の解決のために修正データを提供する場合があります。このアナライザーは、Yarnプロジェクトに含まれるJavaScriptファイルをRetire.JSスキャナーを使用してスキャンする場合があります。
New behavior: 新しい依存関係スキャンアナライザーは、yarn.lockファイルを解析することでプロジェクトの依存関係を抽出し、dependency-scanning CI/CDジョブによってCycloneDX SBOMレポートアーティファクトを生成します。このアナライザーは、Yarnの依存関係に対する修正データを提供しません。詳細については、Yarnプロジェクトの依存関係スキャンにおける脆弱性の解決廃止のお知らせを参照してください。代替機能のサポートは、エピック759で提案されています。このアナライザーは、ベンダー提供のJavaScriptファイルをスキャンしません。詳細については、コンテキストと利用可能なアクションについてJavaScriptベンダーライブラリの依存関係スキャン廃止のお知らせを参照してください。代替機能のサポートは、エピック7186で提案されています。
Yarnプロジェクトを移行する
新しい依存関係スキャンアナライザーを使用するようにYarnプロジェクトを移行します。
前提条件:
- すべてのプロジェクトに必要な一般的な移行手順を完了してください。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロール。
依存関係スキャンアナライザーを使用するようにYarnプロジェクトを移行するために、追加の手順は必要ありません。以前にマージリクエストを介した脆弱性の解決機能や、ベンダー提供のJavaScriptスキャンに頼っていた場合は、コンテキストと利用可能なアクションについて、上記のNew behaviorにリンクされている廃止のお知らせを参照してください。
CI/CD変数の変更
以下の表は、以前にGemnasiumアナライザーに基づいた従来の依存関係スキャン機能で使用されていたCI/CD変数と、新しい依存関係スキャンアナライザーでのそれらのステータスを示しています:
| 従来の変数 | 新しいアナライザーでのステータス |
|---|---|
ADDITIONAL_CA_CERT_BUNDLE | 維持されます。additional_ca_cert_bundle入力を推奨します。 |
AST_ENABLE_MR_PIPELINES | 維持されます。 |
DEPENDENCY_SCANNING_DISABLED | 維持されます。 |
DS_ANALYZER_IMAGE | 維持されます。 |
DS_EXCLUDED_ANALYZERS | 削除されました。 |
DS_EXCLUDED_PATHS | 維持されます。excluded_paths入力を推奨します。 |
DS_GRADLE_RESOLUTION_POLICY | 削除されました。 |
DS_IMAGE_SUFFIX | 削除されました。 |
DS_INCLUDE_DEV_DEPENDENCIES | 維持されます。include_dev_dependencies入力を推奨します。 |
DS_JAVA_VERSION | 削除されました。 |
DS_MAX_DEPTH | 維持されます。max_scan_depth入力を推奨します。 |
DS_PIP_DEPENDENCY_PATH | 維持されます。Python依存関係解決にのみ適用されます。 |
DS_PIP_VERSION | 削除されました。 |
DS_REMEDIATE | 削除されました。 |
DS_REMEDIATE_TIMEOUT | 削除されました。 |
GEMNASIUM_DB_LOCAL_PATH | 削除されました。 |
GEMNASIUM_DB_REF_NAME | 削除されました。 |
GEMNASIUM_DB_REMOTE_URL | 削除されました。 |
GEMNASIUM_DB_UPDATE_DISABLED | 削除されました。 |
GEMNASIUM_IGNORED_SCOPES | 削除されました。 |
GEMNASIUM_LIBRARY_SCAN_ENABLED | 削除されました。 |
GOARCH | 削除されました。 |
GOFLAGS | 削除されました。 |
GOOS | 削除されました。 |
GOPRIVATE | 削除されました。 |
GRADLE_CLI_OPTS | 維持されます。Gradle依存関係解決にのみ適用されます。 |
GRADLE_PLUGIN_INIT_PATH | 削除されました。 |
MAVEN_CLI_OPTS | MAVEN_ARGSに置き換えられました。 |
PIP_EXTRA_INDEX_URL | 維持されます。Python依存関係解決にのみ適用されます。 |
PIP_INDEX_URL | 維持されます。Python依存関係解決にのみ適用されます。 |
PIP_REQUIREMENTS_FILE | DS_PIP_MANIFEST_FILE_NAME_PATTERNに置き換えられました。 |
PIPENV_PYPI_MIRROR | 削除されました。 |
SBT_CLI_OPTS | 削除されました。 |
SEARCH_IGNORE_HIDDEN_DIRS | 維持されます。 |
SECURE_ANALYZERS_PREFIX | 維持されます。analyzer_image_prefix入力を推奨します。 |
SECURE_LOG_LEVEL | 維持されます。analyzer_log_level入力を推奨します。 |
削除しましたとマークされた変数は、新しいアナライザーによって無視されます。他のジョブでも使用されない限り、CI/CD設定からそれらを削除してください。
Replaced by <new-name> とマークされた変数は引き続き機能しますが、非推奨です。これらはGitLabの次のメジャーバージョンで削除される予定です。新しい変数名を使用するようにCI/CD設定を更新してください。
Keptとマークされた変数は、新しいアナライザーに受け入れられ、利用可能なCI/CD変数の参照に記載されているとおりに動作します。一部の保持された変数は、現在依存関係解決ジョブにのみ適用され、その旨が表に記載されています。
既存ユーザーの設定(スキャン実行ポリシーなど)への移行をスムーズにするため、v2テンプレートはこれらのCI/CD変数と後方互換性があります。これらが設定されている場合、この新しいテンプレートで導入された対応するspec:inputs specインプットよりも優先されます。
v2 CI/CDテンプレートを.gitlab-ci.ymlで直接使用する場合、アナライザーを設定するには、CI/CD変数よりもspecインプットを優先してください。Specインプットは、パイプライン作成時に検証され、より明確なエラーメッセージを提供し、テンプレートインクルードにスコープされます。CI/CD変数は、スキャン実行ポリシーまたはセキュリティ設定プロファイルを通じて依存関係スキャンを設定する場合にspecインプットがまだ利用できない場合に使用してください。
v2テンプレートで導入された新しいCI/CD変数
v2テンプレートは、以下の変数を追加します。詳細については、利用可能なspecインプットの参照と利用可能なCI/CD変数の参照を参照してください。
| 変数 | Specインプットの同等物 | 目的 |
|---|---|---|
ANALYZER_ARTIFACT_DIR | (なし) | CycloneDX SBOMレポートが保存されるディレクトリ。 |
DS_API_SCAN_DOWNLOAD_DELAY | api_scan_download_delay | 脆弱性スキャン結果をダウンロードする前の初期遅延。 |
DS_API_TIMEOUT | api_timeout | 依存関係スキャンSBOMスキャンAPIのタイムアウト。 |
DS_DISABLED_RESOLUTION_JOBS | disabled_resolution_jobs | 無効にする依存関係解決ジョブのコンマ区切りリスト(maven、gradle、python)。 |
DS_ENABLE_MANIFEST_FALLBACK | enable_manifest_fallback | ロックファイルまたは依存関係グラフのエクスポートが利用できない場合に、マニフェストフォールバックを有効にします。 |
DS_ENABLE_VULNERABILITY_SCAN | enable_vulnerability_scan | 生成されたSBOMの脆弱性スキャンを切り替えます。 |
DS_FF_LINK_COMPONENTS_TO_GIT_FILES | (なし) | (ベータ)依存関係リスト内のコンポーネントを、動的に生成されたファイルではなく、リポジトリにコミットされたファイルにリンクします。 |
DS_GRADLE_RESOLUTION_IMAGE | gradle_resolution_image | Gradle依存関係解決ジョブで使用されるイメージ。 |
DS_MAVEN_RESOLUTION_IMAGE | maven_resolution_image | Maven依存関係解決ジョブで使用されるイメージ。 |
DS_MAVEN_DEPENDENCY_PLUGIN_VERSION | maven_dependency_plugin_version | Maven依存関係解決中に使用されるmaven-dependency-pluginのバージョン。 |
DS_PIP_MANIFEST_FILE_NAME_PATTERN | pip_manifest_file_name_pattern | PipマニフェストファイルのGlobパターン。 |
DS_PIPCOMPILE_LOCKFILE_FILE_NAME_PATTERN | pipcompile_lockfile_file_name_pattern | pip-compileロックファイルのGlobパターン。 |
DS_PYTHON_RESOLUTION_IMAGE | python_resolution_image | Python依存関係解決ジョブで使用されるイメージ。 |
DS_STATIC_REACHABILITY_ENABLED | enable_static_reachability | 静的到達可能性を有効にします。 |