対応パッケージ機能
GitLabパッケージレジストリでは、パッケージの種類ごとに異なる機能をサポートしています。このサポートには、パッケージの公開とプル、リクエストの転送、重複の管理、認証が含まれます。
パッケージの公開
パッケージはプロジェクト、グループ、インスタンスに公開できます。
| パッケージタイプ | プロジェクト | グループ | インスタンス |
|---|---|---|---|
Maven (mvnを使用) | Y | N | N |
Maven (gradleを使用) | Y | N | N |
Maven (sbtを使用) | N | N | N |
| npm | Y | N | N |
| NuGet | Y | N | N |
| PyPI | Y | N | N |
| 汎用パッケージ | Y | N | N |
| Terraform | Y | N | N |
| Composer | N | Y | N |
| Conan | Y | N | Y |
| Helm | Y | N | N |
| Debian | Y | N | N |
| Go | Y | N | N |
| Ruby gems | Y | N | N |
荷物の引き上げ
パッケージはプロジェクト、グループ、インスタンスからプルできます。
| パッケージタイプ | プロジェクト | グループ | インスタンス |
|---|---|---|---|
Maven (mvnを使用) | Y | Y | Y |
Maven (gradleを使用) | Y | Y | Y |
Maven (sbtを使用) | Y | Y | Y |
| npm | Y | N | Y |
| NuGet | Y | Y | N |
| PyPI | Y | Y | N |
| 汎用パッケージ | Y | N | N |
| Terraform | N | Y | N |
| Composer | Y | Y | N |
| Conan | Y | N | Y |
| Helm | Y | N | N |
| Debian | Y | N | N |
| Go | Y | N | Y |
| Ruby gems | Y | N | N |
転送要求
GitLab プロジェクトで見つからないパッケージへのリクエストは、公開レジストリに転送されます。例えば、Maven Centralやnpmjs、PyPiなどです。
| パッケージタイプ | リクエスト転送に対応 |
|---|---|
Maven (mvnを使用) | はい (デフォルトでは無効) |
Maven (gradleを使用) | はい (デフォルトでは無効) |
Maven (sbtを使用) | はい (デフォルトでは無効) |
| npm | はい |
| NuGet | N |
| PyPI | はい |
| 汎用パッケージ | N |
| Terraform | N |
| Composer | N |
| Conan | N |
| Helm | N |
| Debian | N |
| Go | N |
| Ruby gems | N |
パッケージの削除
パッケージのリクエストが公開レジストリに転送される場合、 パッケージの削除は依存関係の混乱の脆弱性になりえます。
システムが削除されたパッケージを取り出そうとすると、 リクエストは公開レジストリに転送されます。同じ名前とバージョンのパッケージが公開レジストリに見つかると、 代わりにそのパッケージが取り出されます。レジストリから引き出されたパッケージは期待されたものではなく、 悪意のあるものである可能性もあります。
関連するセキュリティリスクを減らすには、パッケージを削除する前に次のことを行ってください:
- パッケージがアクティブに使用されていないことを確認してください。
- リクエスト転送を無効にします:
- インスタンス管理者は、管理エリアの継続的インテグレーションセクションで転送を無効にできます。
- グループのオーナーは、グループ設定の [パッケージとレジストリ] セクションで転送を無効にできます。
重複の許可または防止
デフォルトでは、GitLabのパッケージレジストリでは、特定のパッケージマネージャのフォーマットのデフォルトに基づき、重複を許可または防止します。
| パッケージタイプ | 重複を許可しますか? |
|---|---|
Maven (mvnを使用) | Y (設定可能) |
Maven (gradleを使用) | Y (設定可能) |
Maven (sbtを使用) | Y (設定可能) |
| npm | N |
| NuGet | Y |
| PyPI | N |
| 汎用パッケージ | Y (設定可能) |
| Terraform | N |
| Composer | N |
| Conan | N |
| Helm | Y |
| Debian | Y |
| Go | N |
| Ruby gems | Y |
認証トークン
GitLab トークンは GitLab パッケージレジストリとの認証に使用します。
以下のトークンがサポートされています:
| パッケージタイプ | サポートされるトークン |
|---|---|
Maven (mvnを使用) | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
Maven (gradleを使用) | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
Maven (sbtを使用) | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| npm | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| NuGet | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| PyPI | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| 汎用パッケージ | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| Terraform | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| Composer | 個人アクセス、ジョブトークン、デプロイ (プロジェクトまたはグループ)、プロジェクトアクセス |
| Conan | 個人アクセス、ジョブトークン、プロジェクトアクセス |
| Helm | 個人アクセス、ジョブトークン、デプロイ(プロジェクトまたはグループ) |
| Debian | 個人アクセス、ジョブトークン、デプロイ(プロジェクトまたはグループ) |
| Go | 個人アクセス、ジョブトークン、プロジェクトアクセス |
| Ruby gems | 個人アクセス、ジョブトークン、デプロイ(プロジェクトまたはグループ) |
認証プロトコル
以下の認証プロトコルに対応しています:
| パッケージタイプ | 対応認証プロトコル |
|---|---|
Maven (mvnを使用) | ヘッダー、基本認証(プルのみ) (1) |
Maven (gradleを使用) | ヘッダー、基本認証(プルのみ) (1) |
Maven (sbtを使用) | 基本認証 (1) |
| npm | OAuth |
| NuGet | 基本的な認証 |
| PyPI | 基本的な認証 |
| 汎用パッケージ | 基本的な認証 |
| Terraform | トークン |
| Composer | OAuth |
| Conan | OAuth、ベーシック認証 |
| Helm | 基本的な認証 |
| Debian | 基本的な認証 |
| Go | 基本的な認証 |
| Ruby gems | トークン |
- GitLab 16.0 で導入されたMaven パッケージの基本認証。
サポートされているハッシュタイプ
ハッシュ値は、正しいパッケージを使用していることを確認するために使用されます。これらの値はユーザーインターフェイスまたはAPIで確認できます。
パッケージレジストリでは以下のハッシュ型をサポートしています:
| パッケージタイプ | 対応ハッシュ |
|---|---|
Maven (mvnを使用) | MD5、SHA1 |
Maven (gradleを使用) | MD5、SHA1 |
Maven (sbtを使用) | MD5、SHA1 |
| npm | SHA1 |
| NuGet | 該当なし |
| PyPI | MD5、SHA256 |
| 汎用パッケージ | SHA256 |
| Composer | 該当なし |
| Conan | MD5、SHA1 |
| Helm | 該当なし |
| Debian | md5、sha1、sha256 |
| Go | md5、sha1、sha256 |
| Ruby gems | MD5, SHA1, SHA256 (gemspec のみ) |