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 CLIConnect-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 CLIConnect-AzContainerRegistry in Azure PowerShellRegistrierungsanmeldungseinstellungen 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 CLIConnect-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 CLIConnect-AzContainerRegistry in Azure PowerShellPullSecret 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.
Melden Sie sich mit einem alternativen Containertool anstelle von Docker an
In einigen Szenarien müssen Sie alternative Containertools wie podman
anstelle des allgemeinen Containertools docker
verwenden. Beispiel: Docker ist in RHEL 8 und 9 nicht mehr verfügbar, sodass Sie Ihr Containertool wechseln müssen.
Das Standardcontainertool ist für az acr login
-Befehle auf docker
festgelegt. Wenn Sie das Standardcontainertool nicht festlegen und der Befehl docker
in Ihrer Umgebung fehlt, wird der folgende Fehler angezeigt:
az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.
Um das Standardcontainertool zu ändern, das vom az acr login
-Befehl verwendet wird, können Sie die Umgebungsvariable DOCKER_COMMAND
festlegen. Zum Beispiel:
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Hinweis
Die Azure CLI-Version 2.59.0 oder höher muss installiert und konfiguriert sein, um dieses Feature zu verwenden. Führen Sie az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.