Freigeben über


Sperren von Containerimages in einer Azure-Containerregistrierung

Sie können eine Imageversion oder ein Repository in einer Azure-Containerregistrierung sperren, damit es nicht gelöscht oder aktualisiert werden kann. Aktualisieren Sie die Attribute mithilfe des Azure CLI-Befehls az acr repository update, um ein Image oder ein Repository zu sperren.

Für die Vorgehensweisen in diesem Artikel ist erforderlich, dass Sie die Azure CLI in Azure Cloud Shell oder lokal ausführen (Version 2.0.55 oder höher werden empfohlen). Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.

Wichtig

Dieser Artikel gilt nicht für das Sperren einer ganzen Registrierung, z. B. durch die Verwendung von Einstellungen > Sperren im Azure-Portal oder von az lock-Befehlen in der Azure CLI. Das Sperren einer Registrierungsressource hindert Sie nicht am Erstellen, Aktualisieren oder Löschen von Daten in Repositorys. Das Sperren einer Registrierung wirkt sich nur auf Verwaltungsvorgänge wie das Hinzufügen oder Löschen von Replizierungen oder das Löschen der Registrierung selbst aus. Weitere Informationen finden Sie unter Sperren von Ressourcen, um unerwartete Änderungen zu verhindern.

Szenarien

Markierte Images sind in Azure Container Registry standardmäßig änderbar. Mit den entsprechenden Berechtigungen können Sie ein Image also wiederholt mit dem gleichen Tag aktualisieren und an eine Registrierung pushen. Containerimages können bei Bedarf auf gelöscht werden. Dieses Verhalten ist nützlich, wenn Sie Images entwickeln und eine Größe für Ihre Registrierung einhalten müssen.

Wenn Sie jedoch ein Containerimage für die Produktionsumgebung bereitstellen, benötigen Sie möglicherweise ein unveränderliches Containerimage. Ein unveränderliches Containerimage kann nicht versehentlich gelöscht oder überschrieben werden.

Informationen zu Strategien zum Taggen und für die Versionsverwaltung von Images in Ihrer Registrierung finden Sie unter Empfehlungen für das Taggen und die Versionsverwaltung von Containerimages.

Verwenden Sie den Befehl az acr repository update, um Repositoryattribute für Folgendes festzulegen:

  • Sperren einer Imageversion oder eines gesamten Repositorys

  • Schützen einer Imageversion oder eines Repositorys mit zugelassenen Updates

  • Verhindern von Lesevorgängen (Pull) für eine Imageversion oder ein gesamtes Repository

Beispiele hierzu finden Sie in den nachfolgenden Abschnitten.

Sperren von Images oder Repositorys

Anzeigen der aktuellen Repository-Attribute

Führen Sie den folgenden Befehl vom Typ az acr repository show aus, um die aktuellen Attribute eines Repositorys anzuzeigen:

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

Anzeigen der aktuellen Imageattribute

Führen Sie den folgenden Befehl vom Typ az acr repository show aus, um die aktuellen Attribute eines Tags anzuzeigen:

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

Sperren von Images mithilfe von Tags

Um das Image myrepo:tag in myregistry zu sperren, führen Sie den folgenden Befehl az acr repository update aus:

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

Sperren von Images anhand von Manifest-Digests

Um das Image myrepo zu sperren, das durch den Manifest-Digest (SHA-256-Hash, dargestellt als sha256:...) identifiziert wird, führen Sie den folgenden Befehl aus. (Führen Sie den Befehl az acr manifest list-metadata aus, um den Manifest-Digest zu ermitteln, der mindestens einem Imagetag zugeordnet ist.)

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

Sperren eines Repositorys

Um das Repository myrepo und alle darin enthaltenen Images zu sperren, führen Sie den folgenden Befehl aus:

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

Auflisten der aktuellen Repositoryattribute

Führen Sie den Befehl az acr repository update aus, um die Repositoryattribute zur Angabe der Imagesperrliste zu aktualisieren.

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

Anzeigen der Imageattribute einer Imagesperre

Führen Sie den Befehl az acr repository show aus, um die Tags für eine Imagesperre mit aktivierter Option --list-enabled false im Attribut abzufragen.

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

Überprüfen Sie Imageattribute für das Tag und das entsprechende Manifest.

Hinweis

  • Die veränderlichen Attribute von Tags und Manifesten werden separat verwaltet. Das heißt, das Festlegen des Attributs deleteEnabled=false für das Tag nicht dasselbe für das entsprechende Manifest bewirkt.
  • Fragen Sie die Attribute mithilfe des folgenden Skripts ab:
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"

Hinweis

Wenn die Imageattribute mit writeEnabled=false oder deleteEnabled=false festgelegt wurden, wird das Löschen von Images blockiert.

Schützen von Images und Repositorys vor dem Löschen

Schützen von Images vor dem Löschen

Um zuzulassen, dass das Image myimage:tag aktualisiert, aber nicht gelöscht wird, führen Sie den folgenden Befehl aus:

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

Schützen von Repositorys vor dem Löschen

Der folgende Befehl setzt das Repository myrepo so, dass es nicht gelöscht werden kann. Einzelne Images können weiterhin aktualisiert oder gelöscht werden.

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

Verhindern von Lesevorgängen für Images oder Repositorys

Um Lesevorgänge (Pullvorgänge) für das Image myimage:tag zu verhindern, führen Sie den folgenden Befehl aus:

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

Um Lesevorgänge für alle Images im Repository myrepo zu verhindern, führen Sie den folgenden Befehl aus:

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

Entsperren von Images oder Repositorys

Um das Standardverhalten des Images myimage:tag wiederherzustellen, so dass es gelöscht und aktualisiert werden kann, führen Sie den folgenden Befehl aus:

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

Um das Standardverhalten des Repositorys myrepo wiederherzustellen, sodass einzelne Images gelöscht und aktualisiert werden können, führen Sie den folgenden Befehl aus:

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

Wenn das Manifest jedoch gesperrt ist, müssen Sie einen weiteren Befehl ausführen, um das Manifest zu entsperren.

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

Nächste Schritte

In diesem Artikel haben Sie gelernt, wie Sie den Befehl az acr repository update verwenden, um das Löschen und Aktualisieren von Imageversionen in einem Repository zu verhindern. Informationen zum Festlegen zusätzlicher Attribute finden Sie in der Referenz zum Befehl az acr repository update.

Mit dem Befehl az acr repository show können Sie die für eine Imageversion oder ein Repository festgelegten Attribute anzeigen.

Ausführliche Informationen zu Löschvorgängen finden Sie unter Löschen von Containerimages in Azure Container Registry.