依存関係リスト
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
依存関係リストを使用して、プロジェクトまたはグループの依存関係と、既知の脆弱性を含む、それらの依存関係に関する主要な詳細を確認します。このリストは、既存のスキャン結果と新しいスキャン結果を含む、プロジェクト内の依存関係のコレクションです。この情報は、ソフトウェア部品表(SBOM)またはBOMと呼ばれることがあります。
概要については、Project依存 - Advanced Security Testingを参照してください。
依存関係リストを設定する
プロジェクトの依存関係をリストするには、プロジェクトのデフォルトブランチでdependency scanningまたはcontainer scanningを実行します。
依存関係リストには、最新のデフォルトブランチパイプラインからアップロードされた、すべてのCycloneDX reportsの依存関係も表示されます。CycloneDXレポートは、CycloneDX specificationバージョン1.4、1.5、または1.6に準拠している必要があります。CycloneDX Web Toolを使用して、CycloneDXレポートを検証できます。
依存関係リストを入力された状態にするためにこれは必須ではありませんが、一部のプロパティを提供し、一部のセキュリティ機能を有効にするには、SBOMドキュメントにGitLab CycloneDXプロパティタクソノミーを含めて準拠させる必要があります。
プロジェクトの依存関係を表示する
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
プロジェクトまたはグループ内のすべてのプロジェクトの依存関係を表示するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- 左側のサイドバーで、セキュリティ > 依存関係リストを選択します。
- オプション。推移的依存関係がある場合は、すべての依存関係パスを表示することもできます:
- プロジェクトの場合は、ロケーション列で依存関係パスを表示を選択します。
- グループの場合は、ロケーション列でロケーションを選択し、依存関係パスを表示を選択します。
各依存関係の詳細は、脆弱性の重大度が高い順にリスト表示されます(存在する場合)。代わりに、リストをコンポーネント名、パッケージャー、またはライセンスでソートできます。
| フィールド | 説明 |
|---|---|
| コンポーネント | 依存関係の名前とバージョン。 |
| パッケージャー | 依存関係のインストールに使用されるパッケージマネージャー。サポートされていないパッケージマネージャーの場合は、「不明」と表示されます。 |
| 場所 | システムの依存関係の場合、このフィールドにはスキャンされたイメージがリストされます。アプリケーションの依存関係の場合、このフィールドには、依存関係を宣言したプロジェクト内のパッケージャー固有のロックファイルへのリンクが表示されます。また、直接のdependents(存在する場合)も表示されます。推移的依存関係がある場合は、依存関係パスを表示を選択すると、すべての依存関係のフルパスが表示されます。推移的依存関係は、祖先として直接の依存関係を持つ間接的な依存関係です。 |
| ライセンス (プロジェクトのみ) | 依存関係のソフトウェアライセンスへのリンク。依存関係で検出された脆弱性の数を示す警告バッジ。 |
| プロジェクト (グループのみ) | 依存関係のあるプロジェクトへのリンク。複数のプロジェクトに同じ依存関係がある場合、これらのプロジェクトの合計数が表示されます。この依存関係を持つプロジェクトに移動するには、プロジェクト番号を選択し、その名前を検索して選択します。 |
フィルター依存関係リスト
依存関係のサブセットのみに焦点を当てるように、依存関係リストをフィルター処理できます。依存関係リストは、グループとプロジェクトで使用できます。
グループの場合、以下でフィルター処理できます:
- プロジェクト
- ライセンス
- コンポーネント
- コンポーネントのバージョン
プロジェクトの場合、以下でフィルター処理できます:
- コンポーネント
- コンポーネントのバージョン
コンポーネントバージョンでフィルター処理するには、最初に正確に1つのコンポーネントでフィルター処理する必要があります。
依存関係リストをフィルター処理するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- 左側のサイドバーで、セキュリティ > 依存関係リストを選択します。
- フィルターバーを選択します。
- フィルターを選択し、ドロップダウンリストから1つ以上の条件を選択します。ドロップダウンリストを閉じるには、その外側を選択します。さらにフィルターを追加するには、この手順を繰り返します。
- 選択したフィルターを適用するには、Enterを押します。
依存関係リストには、フィルターに一致する依存関係のみが表示されます。
脆弱性
SBOMベースの依存関係スキャンに関連付けられた脆弱性のサポートの可用性は、機能フラグによって制御されます。詳細については、履歴を参照してください。
依存関係に既知の脆弱性がある場合は、依存関係の名前の横にある矢印、または既知の脆弱性の数がいくつ存在するかを示すバッジを選択して表示します。脆弱性ごとに、その重大度と説明がその下に表示されます。脆弱性の詳細を表示するには、脆弱性の説明を選択します。脆弱性の詳細ページが開きます。依存関係リストには、detected状態とconfirmed状態の脆弱性のみが表示されます。脆弱性の状態が変更されても、SBOMを含むデフォルトブランチで新しいパイプラインが実行されるまで、その変更は依存関係リストに反映されません。
依存関係パス
依存関係パスには、リストされたコンポーネントが一時的なコンポーネントであり、サポートされているパッケージマネージャーに属している場合、リストされたコンポーネントの直接の依存関係が表示されます。依存関係パスは、脆弱性がある依存関係に対してのみ表示されます。
依存関係パスは、次のパッケージマネージャーでサポートされています:
依存関係パスは、dependency-scanningコンポーネントを使用する場合にのみ、次のパッケージマネージャーでサポートされます:
ライセンス
dependency scanning CI/CDジョブが構成されている場合、検出されたライセンスがこのページに表示されます。
エクスポート
次の形式で依存関係リストをエクスポートできます:
- JSON
- CSV
- CycloneDX形式 (プロジェクトのみ)
依存関係リストをエクスポートするには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- 左側のサイドバーで、セキュリティ > 依存関係リストを選択します。
- エクスポートを選択し、ファイル形式を選択します。
依存関係リストは、メールアドレスに送信されます。依存関係リストをダウンロードするには、メール内のリンクを選択します。
トラブルシューティング
依存関係リストを操作する場合、次の問題が発生する可能性があります。
ライセンスが「不明」と表示される
特定の依存関係のライセンスが、いくつかの考えられる理由により、unknownとして表示される場合があります。このセクションでは、特定の依存関係のライセンスが既知の理由でunknownとして表示されるかどうかを判断する方法について説明します。
ライセンスがアップロードストリームに「不明」
依存関係アップロードストリームに指定されたライセンスを確認します:
- C/C++ パッケージの場合は、Conancenterを確認してください。
- npmパッケージの場合は、npmjs.comを確認してください。
- Pythonパッケージの場合は、PyPiを確認してください。
- NuGetパッケージの場合は、Nugetを確認してください。
- Goパッケージの場合は、pkg.go.devを確認してください。
ライセンスがアップロードストリームにunknownとして表示される場合、GitLabはその依存関係のライセンスもunknownとして表示することが予想されます。
ライセンスにSPDXライセンス式が含まれています
SPDX license expressionsはサポートされていません。SPDXライセンス式を含む依存関係は、unknownであるライセンスとともに表示されます。SPDXライセンス式の例は、(MIT OR CC0-1.0)です。詳細については、イシュー336878を参照してください。
パッケージバージョンがパッケージメタデータDBにありません
特定の依存関係パッケージのバージョンは、Package Metadata Databaseに存在する必要があります。存在しない場合、その依存関係のライセンスはunknownとして表示されます。Goモジュールの詳細については、イシュー440218を参照してください。
パッケージ名に特殊文字が含まれています
依存関係パッケージの名前にハイフン (-) が含まれている場合、ライセンスがunknownとして表示されることがあります。これは、パッケージが手動でrequirements.txtに追加された場合、またはpip-compileが使用された場合に発生する可能性があります。これは、依存関係に関する情報をインジェストする際に、GitLabがPEP 503の正規化された名前に関するガイダンスに従ってPythonパッケージ名を正規化しないために発生します。詳細については、イシュー440391を参照してください。