保護パッケージ
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
デフォルトでは、デベロッパー、メンテナー、またはオーナーロールを持つすべてのユーザーが、パッケージを作成、編集、削除できます。どのユーザーがパッケージを変更できるかを制限するには、パッケージ保護ルールを追加します。
GitLabは、npm、PyPI、Maven、およびConanのパッケージの保護をサポートしていますが、エピック5574では追加の機能とパッケージ形式の追加が提案されています。
パッケージが保護されている場合、デフォルトの動作では、次の制限がパッケージに適用されます:
| アクション | 最小ロールまたはトークン |
|---|---|
| パッケージを保護する | メンテナーまたはオーナーのロール。 |
| 新しいパッケージをプッシュする | プッシュに必要な最小アクセスレベルで設定されたロール以上。 |
| デプロイトークンで新しいパッケージをプッシュする | プッシュされたパッケージが保護ルールと一致しない場合に限り、有効なデプロイトークン。保護されたパッケージは、デプロイトークンでプッシュすることはできません。 |
| パッケージを削除する | 削除に必要な最小アクセスレベルで設定されたロール以上。 |
パッケージを保護する
前提条件:
- メンテナーまたはオーナーのロールを持っている必要があります。
パッケージを保護するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > パッケージとレジストリを選択します。
- パッケージレジストリを展開します。
- 保護されたパッケージで、保護ルールを追加するを選択します。
- フィールドに入力します:
- 名前パターンは、保護したいパッケージの名前パターンです。パターンにはワイルドカード (
*) を含めることができます。 - パッケージタイプは、保護するパッケージのタイプです。
- プッシュに必要な最小アクセスレベルは、名前パターンに一致するパッケージをプッシュするために必要な最小限のロールです。
- 削除に必要な最小アクセスレベルは、名前パターンに一致するパッケージを削除するために必要な最小限のロールです。
- 名前パターンは、保護したいパッケージの名前パターンです。パターンにはワイルドカード (
- 保護を選択します。
パッケージ保護ルールが作成され、設定に表示されます。
複数のパッケージを保護する
ワイルドカードを使用して、同じパッケージ保護ルールで複数のパッケージを保護できます。たとえば、CI/CDパイプライン中にビルドされたすべての一時的なパッケージを保護できます。
次の表に、複数のパッケージに一致するパッケージ保護ルールの例を示します:
| ワイルドカードを含むパッケージ名パターン | 一致するパッケージ |
|---|---|
@group/package-* | @group/package-prod、@group/package-prod-sha123456789 |
@group/*package | @group/package、@group/prod-package、@group/prod-sha123456789-package |
@group/*package* | @group/package、@group/prod-sha123456789-package-v1 |
同じパッケージに複数の保護ルールを適用することができます。少なくとも1つの保護ルールがパッケージに適用される場合、そのパッケージは保護されます。
パッケージ保護ルールを削除し、パッケージの保護を解除する
前提条件:
- メンテナーまたはオーナーのロールを持っている必要があります。
パッケージの保護を解除するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > パッケージとレジストリを選択します。
- パッケージレジストリを展開します。
- 保護されたパッケージの下で、削除したい保護ルールの横にある削除 ( ) を選択します。
- 確認ダイアログで、削除を選択します。
パッケージ保護ルールは削除され、設定には表示されません。