Verrouiller une image dans un registre de conteneurs Azure

Dans un registre de conteneurs Azure, vous pouvez verrouiller une version d’image ou un référentiel afin qu’il ne puisse pas être supprimé ou mis à jour. Pour verrouiller une image ou un référentiel, mettez à jour ses attributs à l’aide de la commande Azure CLI az acr repository update.

Cet article nécessite que vous exécutiez Azure CLI dans Azure Cloud Shell ou localement (version 2.0.55 ou ultérieure recommandée). Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Important

Cet article ne s’applique pas au verrouillage d’un registre entier, par exemple à l’aide de Paramètres > Verrous dans le portail Azure, ou des commandes az lock dans l’interface de ligne de commande Azure. Le verrouillage d’une ressource du registre ne vous empêche pas de créer, de mettre à jour ou de supprimer des données dans des référentiels. Le verrouillage d’un registre affecte uniquement les opérations de gestion telles que l’ajout ou la suppression de réplications, ou la suppression du registre lui-même. Vous trouverez plus d’informations dans Verrouiller les ressources pour empêcher les modifications inattendues.

Scénarios

Par défaut, une image avec balise dans Azure Container Registry est mutable. Ainsi, avec les autorisations appropriées vous pouvez mettre à jour et envoyer de manière répétée une image avec la même balise vers un registre. Les images conteneur peuvent également être supprimées en fonction des besoins. Ce comportement est utile quand vous développez des images et que vous devez conserver une certaine taille de registre.

En revanche, quand vous déployez une image conteneur en production vous aurez peut-être besoin d’une image conteneur immuable. Une image immuable est une image qui ne peut pas être supprimée ou remplacée accidentellement.

Consultez les Suggestions pour la création de balises et de versions pour les images de conteneurs pour des stratégies de création de balises et de versions pour les images dans votre registre.

Utilisez la commande az acr repository update pour définir les attributs du référentiel afin de pouvoir :

  • Verrouiller une version d’image ou un référentiel entier.

  • Protéger une version d’image ou un référentiel contre la suppression, mais autoriser les mises à jour.

  • Empêcher les opérations de lecture (pull) sur une version d’image ou un référentiel entier.

Pour obtenir des exemples, consultez les sections suivantes.

Verrouiller une image ou un référentiel

Afficher les attributs actuels d’un référentiel

Pour afficher les attributs actuels d’un référentiel, exécutez la commande az acr repository show suivante :

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

Afficher les attributs actuels d’une image

Pour afficher les attributs actuels d’une balise, exécutez la commande az acr repository show suivante :

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

Verrouiller une image par balise

Pour verrouiller l’image myrepo:tag dans myregistry, exécutez la commande az acr repository update suivante :

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

Verrouiller une image par code de hachage du manifeste

Pour verrouiller une image myrepo identifiée par le code de hachage du manifeste (hachage SHA-256, représenté sous la forme sha256:...), exécutez la commande suivante. (Pour connaître le code de hachage du manifeste associé à une ou plusieurs balises d’image, exécutez la commande az acr manifest list-metadata.)

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

Verrouiller un référentiel

Pour verrouiller le référentiel myimage et toutes les images qu’il contient, exécutez la commande suivante :

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

Lister les attributs de dépôt actuels

Pour mettre à jour les attributs de dépôt afin d’indiquer la liste des verrous d’image, exécutez la commande az acr repository update.

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

Afficher les attributs d’image en cas de verrou d’image

Pour interroger les étiquettes d’un verrou d’image avec --list-enabled false activé sur l’attribut, exécutez la commande az acr repository show.

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

Vérifiez les attributs d’image pour l’étiquette et son manifeste correspondant.

Notes

  • Les attributs modifiables des étiquettes et du manifeste sont gérés séparément. Autrement dit, le paramétrage de l’attribut deleteEnabled=false pour l’étiquette n’est pas le même pour le manifeste correspondant.
  • Interrogez les attributs au moyen du script ci-dessous :
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"

Remarque

Si les attributs d’image sont définis avec writeEnabled=false ou deleteEnabled=false, la suppression d’image est bloquée.

Protéger une image ou un référentiel contre la suppression

Protéger une image contre la suppression

Pour autoriser la mise à jour de l’image myrepo:tag tout en empêchant sa suppression, exécutez la commande suivante :

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

Protéger un référentiel contre la suppression

La commande suivante configure le référentiel myimage afin qu’il ne puisse pas être supprimé. Les différentes images peuvent toujours être mises à jour ou supprimées.

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

Empêcher les opérations de lecture sur une image ou un référentiel

Pour empêcher les opérations de lecture (pull) sur l’image myrepo:tag, exécutez la commande suivante :

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

Pour empêcher les opérations de lecture sur toutes les images dans le référentiel myrepo/myimage, exécutez la commande suivante :

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

Déverrouiller une image ou un référentiel

Pour restaurer le comportement par défaut de l’image myrepo:tag afin qu’elle puisse être supprimée et mise à jour, exécutez la commande suivante :

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

Pour restaurer le comportement par défaut du référentiel myrepo, en activant les images individuelles à supprimer ou mettre à jour, exécutez la commande suivante :

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

Toutefois, s’il existe un verrou sur le manifeste, vous devez exécuter une commande supplémentaire pour le déverrouiller.

az acr repository update \
   --name myregistry --image $repo@$digest \
   --delete-enabled true --write-enabled true

Étapes suivantes

Dans cet article, vous avez appris à utiliser la commande az acr repository update pour empêcher la suppression ou la mise à jour des versions d’images dans un référentiel. Pour définir des attributs supplémentaires, consultez la référence de la commande az acr repository update.

Pour afficher les attributs définis pour une version d’image ou un référentiel, utilisez la commande az acr repository show.

Pour plus d’informations sur les opérations de suppression, consultez Supprimer des images conteneur dans Azure Container Registry.