Authentifizieren mit einer Azure-Containerregistrierung

Es gibt mehrere Möglichkeiten, sich mit einer Azure-Containerregistrierung zu authentifizieren, von denen jede für eine oder mehrere Registrierungsverwendungsszenarien gilt.

Empfohlene Methoden:

  • Direkte Authentifizierung bei einer Registrierung über die individuelle Anmeldung
  • Anwendungen und Containerorchestratoren können eine unbeaufsichtigte (oder „monitorlose“) Authentifizierung mithilfe eines Microsoft Entra Dienstprinzipals durchführen

Wenn Sie eine Containerregistrierung mit Azure Kubernetes Service (AKS) oder einem anderen Kubernetes-Cluster verwenden, finden Sie weitere Informationen unter Szenarien zum Authentifizieren per Azure Container Registry über Kubernetes.

Authentifizierungsoptionen

In der folgenden Tabelle werden die verfügbaren Authentifizierungsmethoden und typische Szenarien aufgeführt. Weitere Informationen finden Sie in den verlinkten Inhalten.

Methode Authentifizierung Szenarien Rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) Einschränkungen
Individuelle AD-Identität  az acr login in der Azure CLI

Connect-AzContainerRegistry in Azure PowerShell
Interaktiver Push/Pull von Entwicklern oder Testern Ja. Das AD-Token muss alle 3 Stunden erneuert werden.
AD-Dienstprinzipal  docker login

az acr login in der Azure CLI

Connect-AzContainerRegistry in Azure PowerShell

Registrierungsanmeldungseinstellungen in APIs oder Tools

PullSecret in Kubernetes   
Unbeaufsichtigter Push aus der CI/CD-Pipeline

Unbeaufsichtigter Pull in Azure oder externe Dienste
Ja. Standardablaufzeit für Dienstprinzipalkennwörter beträgt 1 Jahr
Verwaltete Identität für Azure-Ressourcen  docker login

az acr login in der Azure CLI

Connect-AzContainerRegistry in Azure PowerShell
Unbeaufsichtigter Push aus der Azure CI/CD-Pipeline

Unbeaufsichtigter Pull in Azure-Dienste

Ja. Kann nur über Azure-Dienste verwendet werden, die verwaltete Identitäten für Azure-Ressourcen unterstützen
Verwaltete Identität des AKS-Clusters  Registrierung anfügen, wenn AKS-Cluster erstellt oder aktualisiert werden Unbeaufsichtigter Pull des AKS-Clusters im selben oder in einem anderen Abonnement Nein, Zugriff ist nur per Pull möglich Nur mit AKS-Cluster verfügbar

Kann nicht für die mandantenübergreifende Authentifizierung verwendet werden
Dienstprinzipal des AKS-Clusters  Aktivieren, wenn AKS-Cluster erstellt oder aktualisiert werden Unbeaufsichtigter Pull des AKS-Clusters aus der Registrierung in einem anderen AD-Mandanten Nein, Zugriff ist nur per Pull möglich Nur mit AKS-Cluster verfügbar
Administratorbenutzer  docker login  Interaktiver Push/Pull durch einen einzelnen Entwickler oder Tester

Portalbereitstellung eines Images aus der Registrierung in Azure App Service oder Azure Container Instances
Nein, der Zugriff erfolgt immer per Pull/Push. Nur ein Konto pro Registrierung, wird nicht für mehrere Benutzer empfohlen
Repositorybezogene Zugriffstoken  docker login

az acr login in der Azure CLI

Connect-AzContainerRegistry in Azure PowerShell

PullSecret in Kubernetes 
Interaktiver Push/Pull zum Repository durch einen einzelnen Entwickler oder Tester

Unbeaufsichtigter Pull aus dem Repository durch ein einzelnes System oder ein externes Gerät
Ja. Derzeit nicht mit AD-Identität integriert

Individuelle Anmeldung mit Microsoft Entra ID

Wenn Sie direkt mit Ihrer Registrierung arbeiten, z. B. beim Pullen von Images auf eine bzw. beim Pushen von Images von einer Entwicklungsarbeitsstation in eine von Ihnen erstellte Registrierung, authentifizieren Sie sich mithilfe Ihrer individuellen Azure-Identität. Melden Sie sich mit az login bei der Azure CLI an, und führen Sie dann den Befehl az acr login aus:

az login
az acr login --name <acrName>

Bei der Anmeldung mit az acr login verwendet die CLI das Token, das erstellt wurde, als Sie az login ausgeführt haben, zur nahtlosen Authentifizierung Ihrer Sitzung mit Ihrer Registrierung. Die Docker CLI und der Docker Daemon müssen in Ihrer Umgebung installiert sein und ausgeführt werden, damit der Authentifizierungsfluss abgeschlossen werden kann. az acr login verwendet den Docker-Client, um ein Microsoft Entra-Token in der docker.config Datei festzulegen. Sobald Sie sich auf diese Weise angemeldet haben, werden Ihre Anmeldeinformationen zwischengespeichert, und nachfolgende docker-Befehle in Ihrer Sitzung benötigen weder einen Benutzernamen noch das Kennwort.

Tipp

Verwenden Sie außerdem az acr login zum Authentifizieren einer einzelnen Identität, wenn Sie Artefakte an Ihre Registrierung pushen/pullen möchten, die keine Docker-Images sind (z. B. OCI-Artefakte).

Für den Zugriff auf die Registrierung ist das von az acr login verwendete Token 3 Stunden lang gültig. Daher empfehlen wir Ihnen, sich immer bei der Registrierung anzumelden, bevor Sie einen docker-Befehl ausführen. Wenn das Token abgelaufen ist, können Sie es aktualisieren, indem Sie den az acr login-Befehl erneut zur Authentifizierung verwenden.

Die Verwendung von az acr login mit Azure-Identitäten ermöglicht rollenbasierte Zugriffssteuerung in Azure (Azure RBAC). In einigen Szenarien können Sie sich bei einer Registrierung mit Ihrer eigenen individuellen Identität in Microsoft Entra ID anmelden, oder Sie konfigurieren andere Azure-Benutzer mit spezifischen Azure-Rollen und Berechtigungen. Bei dienstübergreifenden Szenarios oder zum Erfüllen der Anforderungen einer Arbeitsgruppe oder eines Entwicklungsworkflows, für die Sie den Zugriff nicht individuell verwalten möchten, können Sie sich auch mit einer verwalteten Identität für Azure-Ressourcen anmelden.

„az acr login“ mit „--expose-token“

In einigen Fällen müssen Sie sich mit az acr login authentifizieren, wenn der Docker-Daemon nicht in Ihrer Umgebung ausgeführt wird. Beispielsweise kann es erforderlich sein, az acr login in einem Skript in Azure Cloud Shell auszuführen, das die Docker CLI bereitstellt, den Docker-Daemon aber nicht ausführt.

Führen Sie für dieses Szenario az acr login zuerst mit dem Parameter --expose-token aus. Diese Option macht ein Zugriffstoken verfügbar, anstatt sich über die Docker CLI anzumelden.

az acr login --name <acrName> --expose-token

Die Ausgabe zeigt das hier abgekürzte Zugriffstoken an:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

Für die Registrierungs-Authentifizierung wird empfohlen, die Token-Anmeldeinformationen an einem sicheren Ort zu speichern und die empfohlenen Verfahren zur Verwaltung von Docker-Anmeldeinformationen zu befolgen. Speichern Sie z. b. den Tokenwert in einer Umgebungsvariablen:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

Führen Sie dann docker login aus, wobei Sie 00000000-0000-0000-0000-000000000000 als Benutzernamen über und das Zugriffstoken als Kennwort verwenden:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

Ebenso können Sie das von az acr login zurückgegebene Token mit dem helm registry login-Befehl verwenden, um sich bei der Registrierung zu authentifizieren:

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

Dienstprinzipal

Wenn Sie Ihrer Registrierung einen Dienstprinzipal zuweisen, kann Ihre Anwendung oder Ihr Dienst diesen für die monitorlose Authentifizierung verwenden. Dienstprinzipale ermöglichen rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) für eine Registrierung, und Sie können einer Registrierung mehrere Dienstprinzipale zuweisen. Mit mehreren Dienstprinzipalen können Sie unterschiedliche Zugriffsberechtigungen für verschiedene Anwendungen definieren.

Ein ACR-Authentifizierungstoken wird beim Anmelden bei ACR erstellt und bei nachfolgenden Vorgängen aktualisiert. Die Gültigkeitsdauer dieses Tokens beträgt drei Stunden.

Die folgenden Rollen für eine Containerregistrierung sind verfügbar:

  • AcrPull: Pull

  • AcrPush: Pull und Push

  • Besitzer: Pull, Push und Zuweisen von Rollen an andere Benutzer

Eine vollständige Liste der Rollen finden Sie unter Azure Container Registry – Rollen und Berechtigungen.

Informationen über CLI-Skripts zum Erstellen eines Dienstprinzipals für die Authentifizierung mit einer Azure-Containerregistrierung und weitere Anweisungen finden Sie unter Azure Container Registry-Authentifizierung mit Dienstprinzipalen.

Administratorkonto

Jede Containerregistrierung enthält ein Administratorbenutzerkonto, das standardmäßig deaktiviert ist. Sie können den Administratorbenutzer aktivieren und seine Anmeldeinformationen im Azure-Portal oder über die Azure CLI, Azure PowerShell oder andere Azure-Tools verwalten. Das Administratorkonto besitzt vollständige Berechtigungen für die Registrierung.

Das Administratorkonto ist zurzeit für einige Szenarien erforderlich, um ein Image aus einer Containerregistrierung in bestimmten Azure-Diensten bereitzustellen. Beispielsweise ist das Administratorkonto erforderlich, wenn Sie ein Containerimage im Portal aus einer Registrierung direkt in Azure Container Instances oder in Azure-Web-Apps for Containers bereitstellen.

Wichtig

Das Administratorkonto ist dafür ausgelegt, dass ein einzelner Benutzer auf die Registrierung zugreift (hauptsächlich für Testzwecke). Sie sollten die Administratorkonto-Anmeldeinformationen nicht für mehrere Benutzer freigeben. Alle Benutzer, die sich mit dem Administratorkonto authentifizieren, werden als ein einzelner Benutzer mit Push- und Pullzugriff auf die Registrierung angezeigt. Wenn dieses Konto geändert oder deaktiviert wird, wird der Zugriff auf die Registrierung für alle Benutzer deaktiviert, die dessen Anmeldeinformationen verwenden. Für Benutzer und Dienstprinzipale wird für monitorlose Szenarien einzelne Identität empfohlen.

Das Administratorkonto erhält zwei Kennwörter, die beide erneut generiert werden können. Neue Kennwörter, die für Administratorkonten erstellt wurden, sind sofort verfügbar. Beim erneuten Generieren von Kennwörtern für Administratorkonten dauert die Replikation 60 Sekunden, wonach sie verfügbar sind. Die beiden Kennwörter ermöglichen Ihnen, Verbindungen mit der Registrierung aufrechtzuerhalten, indem Sie ein Kennwort verwenden, während Sie das andere Kennwort neu generieren. Wenn das Administratorkonto aktiviert ist, können Sie den Benutzernamen und eines der Kennwörter bei Aufforderung an den Befehl docker login übergeben, um die Standardauthentifizierung für die Registrierung zu erhalten. Beispiel:

docker login myregistry.azurecr.io

Bewährte Methoden zur Verwaltung von Docker-Anmeldeinformationen finden Sie in der Befehlsreferenz zu Docker-Login.

Um den Administratorbenutzer für eine vorhandene Registrierung zu aktivieren, können Sie den --admin-enabled-Parameter des az acr update-Befehls in der Azure CLI verwenden:

az acr update -n <acrName> --admin-enabled true

Sie können den Administratorbenutzer im Azure-Portal aktivieren, indem Sie zu Ihrer Registrierung navigieren, Zugriffsschlüssel unter EINSTELLUNGEN und dann Aktivieren unter Administratorbenutzer auswählen.

Enable admin user UI in the Azure portal

Nächste Schritte