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, permitindo que imagens individuais sejam excluídas e atualizadas, execute o seguinte comando:
az acr repository update \
--name myregistry --repository myrepo \
--delete-enabled true --write-enabled true
No entanto, se houver um bloqueio no manifesto, você precisará executar um comando adicional para desbloquear o manifesto.
az acr repository update \
--name myregistry --image $repo@$digest \
--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.