Bloquear uma imagem de contentor num registo de contentor do Azure

Num registo de contentor do Azure, pode bloquear uma versão de imagem ou um repositório para que não possa ser eliminado ou atualizado. Para bloquear uma imagem ou um repositório, atualize os atributos com o comando da CLI do Azure az acr repository update.

Este artigo requer que execute a CLI do Azure no Azure Cloud Shell ou localmente (versão 2.0.55 ou posterior recomendada). Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Importante

Este artigo não se aplica ao bloqueio de um registo inteiro, por exemplo, ao utilizar Bloqueios de Definições > no portal do Azure ou az lock comandos na CLI do Azure. Bloquear um recurso de registo não o impede de criar, atualizar ou eliminar dados em repositórios. Bloquear um registo só afeta operações de gestão, como adicionar ou eliminar replicaçãos ou eliminar o próprio registo. Mais informações em Bloquear recursos para evitar alterações inesperadas.

Cenários

Por predefinição, uma imagem etiquetada no Azure Container Registry é mutável, pelo que, com as permissões adequadas, pode atualizar e enviar repetidamente uma imagem com a mesma etiqueta para um registo. As imagens de contentor também podem ser eliminadas conforme necessário. Este comportamento é útil quando desenvolve imagens e precisa de manter um tamanho para o seu registo.

No entanto, quando implementa uma imagem de contentor na produção, poderá precisar de uma imagem de contentor imutável . Uma imagem imutável é aquela que não pode eliminar ou substituir acidentalmente.

Veja Recomendações para etiquetar e controlo de versões de imagens de contentor para obter estratégias para etiquetar e copiar imagens no seu registo.

Utilize o comando az acr repository update para definir atributos de repositório para que possa:

  • Bloquear uma versão de imagem ou um repositório inteiro

  • Proteger uma versão de imagem ou repositório contra eliminação, mas permitir atualizações

  • Impedir operações de leitura (pull) numa versão de imagem ou num repositório inteiro

Veja as secções seguintes, por exemplo.

Bloquear uma imagem ou repositório

Mostrar os atributos do repositório atual

Para ver os atributos atuais de um repositório, execute o seguinte comando az acr repository show :

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

Mostrar os atributos de imagem atuais

Para ver os atributos atuais de uma etiqueta, execute o seguinte comando az acr repository show :

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

Bloquear uma imagem por etiqueta

Para bloquear a imagem myrepo:tag na myregistry, execute o seguinte comando az acr repository update :

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

Bloquear uma imagem por resumo do manifesto

Para bloquear uma imagem myrepo identificada pelo resumo do manifesto (hash SHA-256, representado como sha256:...), execute o seguinte comando. (Para localizar o resumo do manifesto associado a uma ou mais etiquetas de imagem, execute o comando az acr manifest list-metadata .)

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

Bloquear um repositório

Para bloquear o repositório myrepo e todas as imagens nele contidas, execute o seguinte comando:

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

Listar os atributos do repositório atual

Para atualizar os atributos do repositório para indicar a listagem de bloqueio de imagem, execute o comando az acr repository update .

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

Mostrar os atributos da imagem no bloqueio de imagem

Para consultar as etiquetas num bloqueio de imagem com --list-enabled false ativado no atributo, execute o comando az acr repository show .

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

Verifique os atributos de imagem da etiqueta e o respetivo manifesto correspondente.

Nota

  • Os atributos alteráveis das etiquetas e do manifesto são geridos separadamente. Ou seja, definir atributo deleteEnabled=false para a etiqueta não definirá o mesmo para o manifesto correspondente.
  • Consulte os atributos com o script abaixo:
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"

Nota

Se os atributos da imagem estiverem definidos com writeEnabled=false ou deleteEnabled=false, bloqueará a eliminação de imagens.

Proteger uma imagem ou repositório contra a eliminação

Proteger uma imagem contra eliminação

Para permitir que a imagem myrepo:tag seja atualizada, mas não eliminada, execute o seguinte comando:

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

Proteger um repositório contra eliminação

O comando seguinte define o repositório myrepo para que não possa ser eliminado. As imagens individuais ainda podem ser atualizadas ou eliminadas.

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

Impedir operações de leitura numa imagem ou repositório

Para impedir operações de leitura (pull) na imagem myrepo:tag , execute o seguinte comando:

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

Para impedir operações de leitura em todas as imagens no repositório myrepo , execute o seguinte comando:

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

Desbloquear uma imagem ou repositório

Para restaurar o comportamento predefinido da imagem myrepo:tag para que possa ser eliminada e atualizada, execute o seguinte comando:

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

Para restaurar o comportamento predefinido do repositório myrepo e de todas as imagens para que possam ser eliminados e atualizados, execute o seguinte comando:

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

Passos seguintes

Neste artigo, aprendeu a utilizar o comando az acr repository update para impedir a eliminação ou atualização de versões de imagens num repositório. Para definir atributos adicionais, veja az acr repository update command reference (Referência do comando az acr repository update ).

Para ver os atributos definidos para uma versão de imagem ou repositório, utilize o comando az acr repository show .

Para obter detalhes sobre as operações de eliminação, veja Eliminar imagens de contentor no Azure Container Registry.