対応パッケージ機能
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 のみ) |