Bloquear uma imagem de contêiner no registro de contêiner do Azure

Em um registro de contêiner do Azure, é possível bloquear uma versão ou um repositório da imagem para que ela não possa ser excluída nem atualizada. Para bloquear uma imagem ou um repositório, atualize os respectivos atributos usando o comando da CLI do Azure az acr repository update.

Neste artigo, será necessário executar a CLI do Azure no Azure Cloud Shell ou localmente (recomendamos usar a versão 2.0.55 ou posterior). Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Importante

Este artigo não se aplica ao bloqueio de um registro inteiro, por exemplo, usando a opção Configurações > Bloqueios no portal do Azure ou comandos az lock na CLI do Azure. Bloquear um recurso de registro não impede você de criar, atualizar nem excluir dados em repositórios. Bloquear um registro afetará somente as operações de gerenciamento, como adicionar/excluir replicações ou excluir o registro. Mais informações estão disponíveis no artigo Bloquear recursos para impedir alterações inesperadas.

Cenários

Por padrão, imagens marcadas no Registro de Contêiner do Azure são mutáveis. Portanto, com as permissões apropriadas, é possível atualizar e enviar por push uma imagem a um registro usando a mesma marca várias vezes. As imagens de contêiner também podem ser excluídas conforme necessário. Esse comportamento será útil quando você criar imagens e precisar manter um tamanho para o registro.

No entanto, ao implantar uma imagem de contêiner na produção, talvez você precise usar uma imagem de contêiner imutável. Não é possível excluir nem substituir uma imagem imutável de modo acidental.

Confira as Recomendações para a marcação e o controle de versão de imagens de contêiner a fim de obter estratégias de marcação e controle de versão de imagens em seu registro.

Use o comando az acr repository update para definir atributos do repositório de modo que você possa:

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

  • Proteger uma versão da imagem ou um repositório contra exclusão, porém permitir atualizações

  • Impedir operações de leitura (pull) em uma versão da imagem ou um repositório inteiro

Confira as seções a seguir para obter mais detalhes.

Bloquear uma imagem ou um repositório

Mostrar os atributos atuais do repositório

Para conferir 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 atuais da imagem

Para conferir os atributos atuais da marca, execute o seguinte comando az acr repository show:

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

Bloquear uma imagem por marca

Para bloquear a imagem myrepo:tag em 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 da mensagem do manifesto

Para bloquear uma imagem myrepo identificada pelo resumo da mensagem do manifesto (hash SHA-256, representado como sha256:...), execute o comando a seguir. (Para localizar o resumo da mensagem do manifesto associado a uma ou mais marcas 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, execute o seguinte comando:

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

Mostrar os atributos atuais do repositório

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 de imagem no bloqueio de imagem

Para consultar as marcas em um bloqueio de imagem com --list-enabled false habilitado 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 da imagem para a marca e seu manifesto correspondente.

Observação

  • Os atributos alteráveis das marcas e do manifesto são gerenciados separadamente. Ou seja, a configuração do atributo deleteEnabled=false para a marca não definirá o mesmo para o manifesto correspondente.
  • Consulte os atributos usando 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"

Observação

Se os atributos de imagem forem definidos com writeEnabled=false ou deleteEnabled=false, ele bloqueará a exclusão de imagem.

Proteger uma imagem ou um repositório contra exclusão

Proteger uma imagem contra exclusão

Para permitir que a imagem myrepo:tag seja atualizada, porém não excluída, execute o seguinte comando:

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

Proteger um repositório contra exclusão

O comando a seguir definirá o repositório myrepo para que ele não possa ser excluído. As imagens individuais ainda poderão ser atualizadas ou excluídas.

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

Impedir operações de leitura em uma imagem ou um 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 do repositório myrepo, execute o seguinte comando:

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

Desbloquear uma imagem ou um repositório

Para restaurar o comportamento padrão da imagem myrepo:tag para que ela possa ser excluída 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 padrão do repositório myrepo e de todas as imagens para que eles possam ser excluídos e atualizados, execute o seguinte comando:

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

Próximas etapas

Neste artigo, você aprendeu a usar o comando az acr repository update para impedir a exclusão ou uma atualização de versões da imagem em um repositório. Para definir atributos adicionais, confira a referência do comando az acr repository update.

Para conferir o conjunto de atributos definidos de uma versão ou um repositório da imagem, use o comando az acr repository show.

Para obter detalhes sobre as operações de exclusão, confira como Excluir imagens de contêiner no Registro de Contêiner do Azure.