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
タグでイメージをロックする
myregistry の myrepo: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"
Note
イメージ属性が 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 \
--name myregistry --image $repo@$digest \
--delete-enabled true --write-enabled true
次のステップ
この記事では、az acr repository update コマンドを使用して、リポジトリ内のイメージ バージョンの削除や更新ができないようにする方法を学習しました。 追加の属性を設定する場合は、az acr repository update コマンドのリファレンスを参照してください。
イメージ バージョンまたはリポジトリに対して設定された属性を確認するには、az acr repository show コマンドを使用します。
削除操作の詳細については、「Azure Container Registry のコンテナー イメージを削除する」を参照してください。