Azure コンテナー レジストリのコンテナー イメージをロックする

Azure コンテナー レジストリでは、イメージ バージョンまたはリポジトリをロックして、削除や更新ができないようにすることができます。 イメージまたはリポジトリをロックするには、Azure CLI コマンド az acr repository update を使用して、その属性を更新します。

この記事では、Azure CLI を Azure Cloud Shell またはローカルで実行する必要があります (バージョン 2.0.55 以降を推奨)。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

重要

この記事は、Azure portal で [設定] > [ロック]、または Azure CLI で az lock コマンドを使用するレジストリ全体のロックには適用されません。 レジストリ リソースをロックしても、レポジトリ内のデータの作成、更新、または削除は実行できます。 レジストリのロックは、レプリケーションの追加や削除、あるいはレジストリ自体の削除などの管理操作にのみ影響します。 詳細については、「リソースのロックによる予期せぬ変更の防止」を参照してください。

シナリオ

既定では、Azure Container Registry のタグ付けされたイメージは変更可能であるため、適切なアクセス許可で、同じタグのイメージを定期的に更新し、レジストリにプッシュすることができます。 必要に応じて、コンテナー イメージを削除することもできます。 この動作は、イメージを開発し、レジストリのサイズを維持する必要がある場合に役立ちます。

しかし、コンテナー イメージを運用環境にデプロイするときに、不変のコンテナー イメージが必要になる場合があります。 不変のイメージとは、誤って削除や上書きできないものです。

レジストリでのタグ付けとイメージ作成の方法については、「コンテナー イメージのタグ付けとバージョン管理に関する推奨事項」を参照してください。

az acr repository update コマンドを使用してリポジトリ属性を設定することで、以下のことが可能になります。

  • イメージ バージョン、またはリポジトリ全体をロックする

  • イメージ バージョンまたはリポジトリを削除されないようにするが、更新は許可する

  • イメージ バージョン、またはリポジトリ全体で読み取り (プル) 操作ができないようにする

例については、次のセクションを参照してください。

イメージまたはリポジトリをロックする

リポジトリの現在の属性を表示する

リポジトリの現在の属性を表示するには、次の az acr repository show コマンドを実行します。

az acr repository show \
    --name myregistry --repository myrepo \
    --output jsonc

現在のイメージの属性を表示する

タグの現在の属性を表示するには、次の az acr repository show コマンドを実行します。

az acr repository show \
    --name myregistry --image myrepo:tag \
    --output jsonc

タグでイメージをロックする

myregistrymyrepo:tag イメージをロックするには、次の az acr repository update コマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo:tag \
    --write-enabled false

マニフェスト ダイジェストでイメージをロックする

マニフェスト ダイジェスト (sha256:... として表される、SHA-256 ハッシュ) で識別された myrepo イメージをロックするには、次のコマンドを実行します。 (1 つ以上のイメージ タグに関連付けられているマニフェスト ダイジェストを見つけるには、az acr manifest list-metadata コマンドを実行します)。

az acr repository update \
    --name myregistry --image myrepo@sha256:123456abcdefg \
    --write-enabled false

リポジトリをロックする

myrepo リポジトリと、それに含まれるすべてのイメージをロックするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo \
    --write-enabled false

リポジトリの現在の属性を一覧表示する

イメージ ロックの一覧を示すようにリポジトリ属性を更新するには、az acr repository update コマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo \ 
    --list-enabled false

イメージ ロックでイメージ属性を表示する

属性で --list-enabled false が有効になっているイメージ ロックのタグについてクエリを実行するには、az acr repository show コマンドを実行します。

az acr repository show-manifests \
    --name myregistry --repository myrepo \
    --query "[?listEnabled==null].tags" 
    --output table

タグとそれに対応するマニフェストのイメージ属性を確認します。

Note

  • タグとマニフェストの変更可能な属性は、別々に管理されます。 つまり、タグに属性 deleteEnabled=false を設定しても、対応するマニフェストで同じ設定になりません。
  • 以下のスクリプトを使用して属性のクエリを実行します。
registry="myregistry"
repo="myrepo"
tag="mytag"

az login
az acr repository show -n $registry --repository $repo
az acr manifest show-metadata -r $registry -n "$repo:$tag"
digest=$(az acr manifest show-metadata -r $registry -n "$repo:$tag" --query digest -o tsv)
az acr manifest show-metadata -r $registry -n "$repo@$digest"

注意

イメージ属性が writeEnabled=false または deleteEnabled=false で設定されている場合、イメージの削除はブロックされます。

イメージやリポジトリが削除されないようにする

イメージが削除されないようにする

myrepo:tag イメージの更新は許可するが、削除は許可しない場合は、次のコマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled false --write-enabled true

リポジトリが削除されないようにする

次のコマンドで myrepo リポジトリを設定し、削除できないようにします。 個々のイメージは引き続き、更新したり、削除したりすることができます。

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled false --write-enabled true

イメージまたはリポジトリに対する読み取り操作ができないようにする

myrepo:tag イメージに対する読み取り (プル) 操作ができないようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo:tag \
    --read-enabled false

myrepo リポジトリ内のすべてのイメージに対する読み取り操作ができないようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo \
    --read-enabled false

イメージまたはリポジトリのロックを解除する

myrepo:tag イメージの既定の動作を復元し、削除と更新ができるようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled true --write-enabled true

myrepo リポジトリとすべてのイメージの既定の動作を復元し、削除と更新ができるようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled true --write-enabled true

次のステップ

この記事では、az acr repository update コマンドを使用して、リポジトリ内のイメージ バージョンの削除や更新ができないようにする方法を学習しました。 追加の属性を設定する場合は、az acr repository update コマンドのリファレンスを参照してください。

イメージ バージョンまたはリポジトリに対して設定された属性を確認するには、az acr repository show コマンドを使用します。

削除操作の詳細については、「Azure Container Registry のコンテナー イメージを削除する」を参照してください。