正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

サポートされているパッケージパッケージマネージャーと機能

GitLabパッケージレジストリは、パッケージの種類ごとに異なる機能をサポートしています。このサポートには、パッケージの公開とプル、リクエストの転送、重複の管理、認証が含まれます。

サポートされているパッケージマネージャー

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

すべてのパッケージマネージャー形式が本番環境での使用に対応しているわけではありません。

パッケージレジストリは、次のパッケージマネージャーの種類をサポートしています:

パッケージの種類ステータス
Composerベータ
Conan 1実験的機能
Conan 2実験的機能
Debian実験的機能
汎用パッケージ一般提供
Go実験的機能
Helmベータ
Maven一般提供
npm一般提供
NuGet一般提供
PyPI一般提供
Ruby gem実験的機能

各ステータスの意味を表示

APIを使用してパッケージレジストリを管理することもできます。

パッケージの公開

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

パッケージは、プロジェクト、グループ、またはインスタンスに公開できます。

パッケージの種類プロジェクトグループインスタンス
Maven (mvnを使用)不可不可
Maven (gradleを使用)不可不可
Maven (sbtを使用)不可不可不可
npm不可不可
NuGet不可不可
PyPI不可不可
汎用パッケージ不可不可
Terraform不可不可
Composer不可不可
Conan 1不可
Conan 2不可不可
Helm不可不可
Debian不可不可
Go不可不可
Ruby gem不可不可

パッケージのプル

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

パッケージは、プロジェクト、グループ、またはインスタンスからプルできます。

パッケージの種類プロジェクトグループインスタンス
Maven (mvnを使用)
Maven (gradleを使用)
Maven (sbtを使用)
npm
NuGet不可
PyPI不可
汎用パッケージ不可不可
Terraform不可不可
Composer不可
Conan 1不可
Conan 2不可不可
Helm不可不可
Debian不可不可
Go不可
Ruby gem不可不可

リクエストの転送

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

プロジェクトのパッケージレジストリにパッケージが見つからない場合、GitLabはリクエストを対応するパブリックレジストリに転送できます。たとえば、Maven Central、npmjs、またはPyPiなどです。

デフォルトの転送動作はパッケージの種類によって異なり、依存関係の混乱が発生する脆弱性を引き起こす可能性があります。

関連するセキュリティリスクを軽減するには、次の手順に従います:

  • パッケージがアクティブに使用されていないことを確認します。
  • リクエストの転送を無効にします:
  • Gitのようなバージョン管理されたツールを実装して、パッケージへの変更を追跡します。
パッケージの種類リクエストの転送をサポートセキュリティに関する考慮事項
Maven (mvnを使用)はい(デフォルトで無効)セキュリティのために明示的なオプトインが必要です。
Maven (gradleを使用)はい(デフォルトで無効)セキュリティのために明示的なオプトインが必要です。
Maven (sbtを使用)はい(デフォルトで無効)セキュリティのために明示的なオプトインが必要です。
npmはいプライベートパッケージの場合は無効にすることを検討してください。
NuGet不可不可
PyPIはいプライベートパッケージの場合は無効にすることを検討してください。
汎用パッケージ不可不可
Terraform不可不可
Composer不可不可
Conan 1不可不可
Conan 2不可不可
Helm不可不可
Debian不可不可
Go不可不可
Ruby gem不可不可

パッケージの削除

パッケージのリクエストがパブリックレジストリに転送される場合、パッケージを削除すると、依存関係の混乱の脆弱性になる可能性があります。

システムが削除されたパッケージをプルしようとすると、リクエストがパブリックレジストリに転送されます。パブリックレジストリに同じ名前とバージョンのパッケージが見つかった場合、代わりにそのパッケージがプルされます。レジストリからプルされたパッケージが予想されるものではない可能性があり、悪意のあるものである可能性さえあります。

関連するセキュリティリスクを軽減するために、パッケージを削除する前に、次のことを行います:

  • パッケージがアクティブに使用されていないことを確認します。
  • リクエストの転送を無効にします:

他のリポジトリからのパッケージのインポート

GitLabパイプラインを使用して、Maven CentralやArtifactoryなどの他のリポジトリから、package importer toolでパッケージをインポートできます。

パッケージの種類インポーターは利用可能ですか?
Maven (mvnを使用)
Maven (gradleを使用)
Maven (sbtを使用)
npm
NuGet
PyPI
汎用パッケージ不可
Terraform不可
Composer不可
Conan 1不可
Conan 2不可
Helm不可
Debian不可
Go不可
Ruby gem不可

重複の許可または防止

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

デフォルトでは、GitLabのパッケージレジストリは、特定のパッケージマネージャー形式のデフォルトに基づいて、重複を許可または防止します。

パッケージの種類重複は許可されますか?
Maven (mvnを使用)Y(構成可能)
Maven (gradleを使用)Y(構成可能)
Maven (sbtを使用)Y(構成可能)
npm不可
NuGet
PyPI不可
汎用パッケージY(構成可能)
Terraform不可
Composer不可
Conan 1不可
Conan 2不可
Helm
Debian
Go不可
Ruby gem

レジストリで認証

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

認証は、使用しているパッケージマネージャーによって異なります。特定のパッケージタイプでサポートされている認証プロトコルについては、「認証プロトコル」を参照してください。

ほとんどのパッケージの種類では、次の認証トークンが有効です:

次の表に、特定のパッケージマネージャーでサポートされている認証トークンを示します:

パッケージの種類サポートされているトークン
Maven (mvnを使用)個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
Maven (gradleを使用)個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
Maven (sbtを使用)個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
npm個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
NuGet個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
PyPI個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
汎用パッケージ個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
Terraform個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
Composer個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)、プロジェクトアクセス
Conan 1個人アクセスのトークン、ジョブトークン、プロジェクトアクセス
Conan 2個人アクセスのトークン、ジョブトークン、プロジェクトアクセス
Helm個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)
Debian個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)
Go個人アクセスのトークン、ジョブトークン、プロジェクトアクセス
Ruby gem個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ)

パッケージレジストリへの認証を構成する場合:

  • パッケージレジストリプロジェクトの設定がオフに指定されている場合、オーナーロールが付与されていても、パッケージレジストリを操作すると403 Forbiddenエラーが発生します。
  • 外部認証がオンになっている場合、デプロイトークンではパッケージレジストリにアクセスできません。
  • 組織が2要素認証(2FA)を使用している場合、スコープがapiに設定されたパーソナルアクセストークンを使用する必要があります。
  • CI/CDパイプラインを使用してパッケージを公開する場合は、CI/CDジョブトークンを使用する必要があります。

認証プロトコル

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

次の認証プロトコルがサポートされています:

パッケージの種類サポートされているAuthNプロトコル
Maven (mvnを使用)ヘッダー、基本認証
Maven (gradleを使用)ヘッダー、基本認証
Maven (sbtを使用)基本認証(プルのみ)
npmOAuth
NuGet基本認証
PyPI基本認証
汎用パッケージ基本認証
Terraformトークン
ComposerOAuth
Conan 1OAuth、基本認証
Conan 2OAuth、基本認証
Helm基本認証
Debian基本認証
Go基本認証
Ruby gemトークン

サポートされているハッシュの種類

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

ハッシュ値は、正しいパッケージを使用していることを確認するために使用されます。これらの値は、ユーザーインターフェースまたはAPIで表示できます。

パッケージレジストリは、次のハッシュの種類をサポートしています:

パッケージの種類サポートされているハッシュ
Maven (mvnを使用)MD5、SHA1
Maven (gradleを使用)MD5、SHA1
Maven (sbtを使用)MD5、SHA1
npmSHA1
NuGet該当なし
PyPIMD5、SHA256
汎用パッケージSHA256
Composer該当なし
Conan 1MD5、SHA1
Conan 2MD5、SHA1
Helm該当なし
DebianMD5、SHA1、SHA256
GoMD5、SHA1、SHA256
Ruby gemMD5、SHA1、SHA256(gemspecのみ)