サポートされているパッケージパッケージマネージャーと機能
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などです。
デフォルトの転送動作はパッケージの種類によって異なり、依存関係の混乱が発生する脆弱性を引き起こす可能性があります。
関連するセキュリティリスクを軽減するには、次の手順に従います:
- パッケージがアクティブに使用されていないことを確認します。
- リクエストの転送を無効にします:
- インスタンス管理者は、管理者エリアのContinuous Integration(継続的インテグレーション)セクションで転送を無効にできます。
- グループオーナーは、グループ設定のPackages and Registries(パッケージとレジストリ)セクションで転送を無効にできます。
- Gitのようなバージョン管理されたツールを実装して、パッケージへの変更を追跡します。
| パッケージの種類 | リクエストの転送をサポート | セキュリティに関する考慮事項 |
|---|---|---|
Maven (mvnを使用) | はい(デフォルトで無効) | セキュリティのために明示的なオプトインが必要です。 |
Maven (gradleを使用) | はい(デフォルトで無効) | セキュリティのために明示的なオプトインが必要です。 |
Maven (sbtを使用) | はい(デフォルトで無効) | セキュリティのために明示的なオプトインが必要です。 |
| npm | はい | プライベートパッケージの場合は無効にすることを検討してください。 |
| NuGet | 不可 | 不可 |
| PyPI | はい | プライベートパッケージの場合は無効にすることを検討してください。 |
| 汎用パッケージ | 不可 | 不可 |
| Terraform | 不可 | 不可 |
| Composer | 不可 | 不可 |
| Conan 1 | 不可 | 不可 |
| Conan 2 | 不可 | 不可 |
| Helm | 不可 | 不可 |
| Debian | 不可 | 不可 |
| Go | 不可 | 不可 |
| Ruby gem | 不可 | 不可 |
パッケージの削除
パッケージのリクエストがパブリックレジストリに転送される場合、パッケージを削除すると、依存関係の混乱の脆弱性になる可能性があります。
システムが削除されたパッケージをプルしようとすると、リクエストがパブリックレジストリに転送されます。パブリックレジストリに同じ名前とバージョンのパッケージが見つかった場合、代わりにそのパッケージがプルされます。レジストリからプルされたパッケージが予想されるものではない可能性があり、悪意のあるものである可能性さえあります。
関連するセキュリティリスクを軽減するために、パッケージを削除する前に、次のことを行います:
- パッケージがアクティブに使用されていないことを確認します。
- リクエストの転送を無効にします:
- インスタンス管理者は、管理者エリアのContinuous Integration(継続的インテグレーション)セクションで転送を無効にできます。
- グループオーナーは、グループ設定のPackages and Registries(パッケージとレジストリ)セクションで転送を無効にできます。
他のリポジトリからのパッケージのインポート
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 | 個人アクセスのトークン、ジョブトークン、デプロイ(プロジェクトまたはグループ) |
認証プロトコル
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
次の認証プロトコルがサポートされています:
| パッケージの種類 | サポートされているAuthNプロトコル |
|---|---|
Maven (mvnを使用) | ヘッダー、基本認証 |
Maven (gradleを使用) | ヘッダー、基本認証 |
Maven (sbtを使用) | 基本認証(プルのみ) |
| npm | OAuth |
| NuGet | 基本認証 |
| PyPI | 基本認証 |
| 汎用パッケージ | 基本認証 |
| Terraform | トークン |
| Composer | OAuth |
| Conan 1 | OAuth、基本認証 |
| Conan 2 | OAuth、基本認証 |
| 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 |
| npm | SHA1 |
| NuGet | 該当なし |
| PyPI | MD5、SHA256 |
| 汎用パッケージ | SHA256 |
| Composer | 該当なし |
| Conan 1 | MD5、SHA1 |
| Conan 2 | MD5、SHA1 |
| Helm | 該当なし |
| Debian | MD5、SHA1、SHA256 |
| Go | MD5、SHA1、SHA256 |
| Ruby gem | MD5、SHA1、SHA256(gemspecのみ) |