パッケージメタデータデータベース
- プラン: Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
パッケージメタデータデータベース(PMDB)は、GitLabが管理する、オープンソースパッケージのライセンスおよびセキュリティアドバイザリデータの集合です。GitLabはこれをインスタンスのデータベースに同期し、次の機能がそれを読み取ります:
パッケージメタデータデータベースはEEライセンスの下でライセンスされています。
データセット
パッケージメタデータデータベースには4つのデータセットが保持されています:
| データセット | 内容 | 使用元 |
|---|---|---|
| ライセンス | パッケージバージョンのライセンスデータ。 | ライセンススキャン |
| アドバイザリ | パッケージバージョンのセキュリティアドバイザリ。 | 依存関係スキャン、継続的脆弱性スキャン、レジストリ用のコンテナスキャン |
| CVEエンリッチメント | 脆弱性のEPSSスコアおよびKEVステータス。 | 脆弱性リスク評価データ |
| マルウェアアドバイザリ | パッケージレジストリで見つかった既知の悪意のあるパッケージ。 | GitLabマルウェアアドバイザリ |
デフォルトでは、GitLabはすべてのパッケージレジストリタイプのデータを同期します。同期するデータを減らすには、管理設定で使用しないパッケージレジストリタイプをクリアしてください。
データ形式バージョン
各データセットは、v2またはv3のいずれかのデータ形式バージョンで公開されます。これらはデータ形式のバージョンであり、GitLabのバージョンではありません。
| フォーマットバージョン | データセット | 配布元 |
|---|---|---|
| v2 | GitLab 19.3以前のライセンス、アドバイザリ、CVEエンリッチメント。 | 認証情報なしで読み取れる、パブリックなGoogle Cloud Storageバケット。 |
| v3 | GitLab 19.4以降のライセンスおよびマルウェアアドバイザリ。 | パッケージメタデータデータベース配布サービス(認証済みのGitLabサービス)。 |
v3のライセンスデータには、単一のライセンス識別子ではなく、Software Package Data Exchange(SPDX)のライセンス表現が含まれます。例: MIT OR Apache-2.0。
形式バージョンを選択することはできません。お使いのGitLabバージョンによって、読み取られる形式が決まります:
| GitLabのバージョン | ライセンス | アドバイザリ | CVEエンリッチメント | マルウェアアドバイザリ |
|---|---|---|---|---|
| 19.2以前 | v2 | v2 | v2 | 利用不可 |
| 19.3 | v2 | v2 | v2 | v3 |
| 19.4以降 | v3 | v2 | v2 | v3 |
機能フラグはv3のライセンスデータとマルウェアアドバイザリを制御しており、どちらもデフォルトで有効になっています。マルウェアアドバイザリはベータ版です。
同期
Sidekiqのcronジョブが、各データセットをインスタンスのデータベースに同期します。各実行は前回の実行で記録されたチェックポイントから再開するため、インスタンスがすでに保持しているデータよりも新しいデータのみをインポートします。
インターネットアクセスのあるインスタンス
インターネットアクセスのあるインスタンスは、パブリックバケットからv2データを、配布サービスからv3データをダウンロードします。v2データをダウンロードするには、インスタンスがstorage.googleapis.comへの送信ネットワークアクセスを必要とします。
オフラインインスタンス
オフラインインスタンスは、自身でデータをダウンロードできません。代わりに、インターネットアクセスのあるマシン上でダウンロードし、オフラインインスタンスのvendor/package_metadataディレクトリにコピーします。v3データのダウンロードには、オフラインライセンスが必要です。
データセット用のディレクトリがvendor/package_metadata配下に存在する場合、GitLabはデータをダウンロードする代わりにそのディレクトリを読み取ります。ネットワークへのフォールバックはないため、古いデータを保持しているディレクトリは古いデータを提供し、エラーも報告しません。
各データセットのダウンロード手順と機能フラグの詳細については、オフラインインスタンス向けパッケージメタデータデータベースを参照してください。