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

保護されたコンテナタグ

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

プロジェクト内のコンテナタグをプッシュおよび削除できるユーザーを制御します。

デフォルトでは、少なくともデベロッパーロールを持つユーザーは、すべてのプロジェクトコンテナリポジトリ内のイメージタグをプッシュおよび削除できます。タグ保護ルールを使用すると、次のことができます:

  • 特定のユーザーロールへのタグのプッシュと削除を制限します。
  • プロジェクトごとに最大5つの保護ルールを作成します。
  • これらのルールをプロジェクト内のすべてのコンテナリポジトリに適用します。

タグは、少なくとも1つの保護ルールがその名前に一致する場合に保護されます。複数のルールが一致する場合、最も制限の厳しいルールが適用されます。

保護タグは、クリーンアップポリシーで削除できません。

前提要件

保護されたコンテナタグを使用する前に:

保護ルールを作成する

前提要件:

  • 少なくともメンテナーのロールが必要です。

保護ルールを作成するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > パッケージとレジストリを選択します。
  3. コンテナレジストリを展開します。
  4. 保護されたコンテナタグで、保護ルールを追加するを選択します。
  5. フィールドに入力します:
    • 一致するコンテナタグを保護する: RE2構文を使用して正規表現パターンを入力します。パターンは100文字を超えてはなりません。正規表現パターンの例を参照してください。正規表現パターンの例を参照してください。
    • プッシュに必要な最小ロール: メンテナー、オーナー、または管理者を選択します。
    • 削除に必要な最小ロール: メンテナー、オーナー、または管理者を選択します。
  6. ルールを追加するを選択します。

保護ルールが作成され、一致するタグが保護されます。

正規表現パターンの例

コンテナタグの保護に使用できるパターンの例:

パターン説明
.*すべてのタグを保護します
^v.*「v」で始まるタグを保護します(v1.0.0v2.1.0-rc1など)。
\d+\.\d+\.\d+セマンティックバージョンタグを保護します(1.0.02.1.0など)
^latest$latestタグを保護します
.*-stable$「-stable」で終わるタグを保護します(1.0-stablemain-stableなど)。
stable|release「stable」または「リリース」を含むタグを保護します(1.0-stableなど)。

保護ルールを削除する

前提要件:

  • 少なくともメンテナーのロールが必要です。

保護ルールを削除するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > パッケージとレジストリを選択します。
  3. コンテナレジストリを展開します。
  4. 保護されたコンテナタグで、削除する保護ルールの横にある削除 remove )を選択します。
  5. 確認プロンプトが表示されたら、削除を選択します。

保護ルールが削除され、一致するタグは保護されなくなります。

伝播遅延

ルール変更は、サービス間で伝播するためにJSON Webトークントークンに依存します。その結果、保護ルールとユーザーアクセスレベルの変更は、現在のJSON Webトークントークンの有効期限が切れた後にのみ有効になる場合があります。遅延は、構成されたトークンの期間に相当します:

ほとんどのコンテナレジストリクライアント(Docker、GitLab UI、およびAPIを含む)は、操作ごとに新しいトークンをリクエストしますが、カスタムクライアントはトークンをその完全な有効期間保持する場合があります。

イメージマニフェストの削除

GitLab UIとAPIは、直接的なイメージマニフェストの削除をサポートしていません。コンテナレジストリAPIを直接呼び出すと、マニフェストの削除は関連するすべてのタグに影響します。

タグの保護を確実にするために、マニフェストの直接削除リクエストは、以下の場合にのみ許可されます:

  • タグ保護が無効になっている
  • ユーザーが保護されたタグを削除する権限を持っている

コンテナイメージを削除しています

次の条件がすべて当てはまる場合は、コンテナイメージを削除することはできません:

  • コンテナイメージにタグがある。
  • プロジェクトにコンテナレジストリタグ保護ルールがある。
  • あなたのアクセスレベルが、ルールで定義されているminimum_access_delete_levelよりも低い。

この制限は、ルールパターンがコンテナイメージタグと一致するかどうかに関係なく適用されます。