保護されたコンテナリポジトリ
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
デフォルトでは、少なくともデベロッパーロールを持つすべてのユーザーが、コンテナイメージをコンテナリポジトリとの間でプッシュおよび削除できます。コンテナリポジトリを保護して、コンテナリポジトリ内のコンテナイメージを変更できるユーザーを制限します。
コンテナリポジトリが保護されている場合、デフォルトの動作では、コンテナリポジトリとそのイメージに対して次の制限が適用されます:
| アクション | 最低限必要なロール |
|---|---|
| コンテナリポジトリとそのコンテナイメージを保護します。 | メンテナーロール。 |
| コンテナリポジトリに新しいイメージをプッシュまたは作成します。 | プッシュに必要な最小アクセスレベル設定で設定されたロール。 |
| コンテナリポジトリ内の既存のイメージをプッシュまたは更新します。 | プッシュに必要な最小アクセスレベル設定で設定されたロール。 |
| デプロイトークンを使用して、コンテナリポジトリ内の既存のイメージをプッシュ、作成、または更新します。 | 該当なし。デプロイトークンは、保護されていないリポジトリで使用できますが、スコープに関係なく、コンテナイメージを保護されたコンテナリポジトリにプッシュするために使用することはできません。 |
ワイルドカード(*)を使用して、同じコンテナ保護ルールで複数のコンテナリポジトリを保護できます。たとえば、CI/CDパイプライン中にビルドされた一時的なコンテナイメージを含む、さまざまなコンテナリポジトリを保護できます。
次の表に、複数のコンテナリポジトリに一致するコンテナ保護ルールの例を示します:
| ワイルドカードを含むパスパターン | 一致するコンテナリポジトリの例 |
|---|---|
group/container-* | group/container-prod、group/container-prod-sha123456789 |
group/*container | group/container、group/prod-container、group/prod-sha123456789-container |
group/*container* | group/container、group/prod-sha123456789-container-v1 |
同じコンテナリポジトリに複数の保護ルールを適用できます。少なくとも1つの保護ルールが一致する場合、コンテナリポジトリは保護されます。
コンテナリポジトリ保護ルールの作成
前提要件:
- メンテナーロール以上が必要です。
保護ルールを作成するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > パッケージとレジストリを選択します。
- コンテナレジストリを展開します。
- 保護されたコンテナリポジトリで、保護ルールを追加するを選択します。
- フィールドに入力します:
- リポジトリパスパターンは、保護するコンテナリポジトリのパスです。このパターンには、ワイルドカード(
*)を含めることができます。 - プッシュに必要な最小アクセスレベルは、保護されたコンテナリポジトリのパスへのプッシュ(作成または更新)に必要な最小アクセスレベルについて説明します。
- リポジトリパスパターンは、保護するコンテナリポジトリのパスです。このパターンには、ワイルドカード(
- 保護を選択します。
保護ルールが作成され、コンテナリポジトリが保護されました。
コンテナリポジトリ保護ルールの削除
前提要件:
- メンテナーロール以上が必要です。
保護ルールを削除するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > パッケージとレジストリを選択します。
- コンテナレジストリを展開します。
- 保護されたコンテナリポジトリで、削除する保護ルールの横にある削除( )を選択します。
- 確認ダイアログで、削除を選択します。
保護ルールが削除され、コンテナリポジトリは保護されなくなりました。