Bloqueo de una imagen de contenedor en una instancia de Azure Container Registry

En Azure Container Registry, puede bloquear una versión de la imagen o un repositorio para que no pueda eliminarse o actualizarse. Para bloquear una imagen o un repositorio, actualice sus atributos mediante el comando az acr repository update de la CLI de Azure.

En este artículo se requiere que ejecute la CLI de Azure en Azure Cloud Shell o localmente (se recomienda la versión 2.0.55 o posterior). Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Importante

Este artículo no se aplica al bloqueo de un registro completo, por ejemplo, mediante el uso de Configuración > Bloqueos en Azure Portal o los comandos az lock de la CLI de Azure. El bloqueo de un recurso de registro no impide la creación, actualización o eliminación de datos en los repositorios. El bloqueo de un registro solo afecta a las operaciones de administración, como agregar o eliminar replicaciones o eliminar el propio registro. Para más información, consulte Bloqueo de recursos para impedir cambios inesperados.

Escenarios

De forma predeterminada, una imagen etiquetada en Azure Container Registry es mutable, por lo que con los permisos adecuados puede actualizar e insertar repetidamente una imagen con la misma etiqueta en un registro. Las imágenes de contenedor también se pueden eliminar según sea necesario. Este comportamiento es útil al desarrollar imágenes y es necesario mantener un tamaño para el registro.

Sin embargo, cuando implemente una imagen de contenedor en producción, puede que necesite una inmutable. Una imagen inmutable es aquella que no puede eliminar o sobrescribir por accidente.

Consulte Recomendaciones para el etiquetado y el control de versiones de las imágenes de contenedor para las estrategias de etiquetado y versión de las imágenes en el registro.

Use el comando az acr repository update para establecer los atributos del repositorio de forma que pueda:

  • Bloquear una versión de la imagen o un repositorio entero

  • Proteger una versión de la imagen o un repositorio de la eliminación, pero permitir actualizaciones

  • Evitar operaciones de lectura (extracción) en una versión de la imagen o en la totalidad del repositorio

Consulte las secciones siguientes para ver ejemplos.

Bloquear una imagen o un repositorio

Mostrar los atributos del repositorio actual

Para ver los atributos actuales de un repositorio, ejecute el siguiente comando az acr repository show:

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

Mostrar los atributos actuales de la imagen

Para ver los atributos actuales de una etiqueta, ejecute el siguiente comando az acr repository show:

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

Bloquear una imagen por etiqueta

Para bloquear la imagen myrepo:tag en myregistry, ejecute el siguiente comando az acr repository update:

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

Bloquear una imagen por la síntesis del manifiesto

Para bloquear una imagen myrepo identificada por el resumen del manifiesto (hash SHA-256, representado como sha256:...), ejecute el siguiente comando. (Para encontrar la síntesis del manifiesto asociada con una o varias etiquetas de imagen, ejecute el comando az acr manifest list-metadata).

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

Bloqueo de un repositorio

Para bloquear el repositorio myrepo y todas las imágenes que contiene, ejecute el siguiente comando:

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

Visualización de los atributos del repositorio actual

Para actualizar los atributos del repositorio para indicar la lista de bloqueos de imagen, ejecute el comando az acr repository update.

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

Visualización de los atributos de imagen en el bloqueo de imagen

Para consultar las etiquetas en un bloqueo de imagen con --list-enabled false habilitado en el atributo, ejecute el comando az acr repository show.

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

Compruebe los atributos de imagen de la etiqueta y su manifiesto correspondiente.

Nota

  • Los atributos modificables de las etiquetas y el manifiesto se administran por separado. Es decir, establecer el atributo deleteEnabled=false para la etiqueta no establecerá lo mismo para el manifiesto correspondiente.
  • Consulte los atributos mediante el script siguiente:
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:

Si los atributos de imagen se establecen con writeEnabled=false o deleteEnabled=false, bloqueará la eliminación de imágenes.

Proteger una imagen o un repositorio de la eliminación

Proteger una imagen de la eliminación

Para permitir que la imagen myrepo:tag se actualice pero no se elimine, ejecute el siguiente comando:

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

Proteger un repositorio de la eliminación

El comando siguiente establece el repositorio myrepo para que no se pueda eliminar. Sin embargo, se pueden actualizar o eliminar imágenes individuales.

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

Evitar operaciones de lectura en una imagen o un repositorio

Para evitar operaciones de lectura (pull) en la imagen myrepo:tag, ejecute el siguiente comando:

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

Para evitar operaciones de lectura en todas las imágenes del repositorio myimage, ejecute el siguiente comando:

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

Desbloquear una imagen o un repositorio

Para restaurar el comportamiento por defecto de la imagen myrepo:tag de forma que pueda ser borrada y actualizada, ejecute el siguiente comando:

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

Para restaurar el comportamiento predeterminado del repositorio myrepo y de todas las imágenes para que se puedan eliminar y actualizar, ejecutan el siguiente comando:

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

Pasos siguientes

En este artículo, ha aprendido sobre el uso del comando az acr repository update para evitar la eliminación o la actualización de versiones de imágenes de un repositorio. Para establecer atributos adicionales, consulte la referencia del comando az acr repository update.

Para ver los atributos establecidos para un repositorio o una versión de la imagen, use el comando az acr repository show.

Para más información sobre las operaciones de eliminación, consulte Eliminación de imágenes de contenedor en Azure Container Registry.