Anmelden mit einem Dienstprinzipal mit Azure CLI
Dienstprinzipale sind Konten, die nicht an einen bestimmten Benutzer gebunden sind und über Berechtigungen verfügen können, die ihnen über vordefinierte Rollen zugewiesen werden. Die Authentifizierung mit einem Dienstprinzipal ist die beste Methode zum Schreiben sicherer Skripts oder Programme und ermöglicht das Anwenden von Berechtigungseinschränkungen und lokal gespeicherten statischen Anmeldeinformationen. Weitere Informationen finden Sie unter Arbeiten mit Azure-Dienstprinzipalen über die Azure CLI.
Für die Anmeldung mit einem Dienstprinzipal benötigen Sie Folgendes:
- Die dem Dienstprinzipal zugeordnete URL bzw. den zugeordneten Namen
- Das Dienstprinzipalkennwort oder das X509-Zertifikat (im PEM-Format), das zum Erstellen des Dienstprinzipals verwendet wurde
- Den dem Dienstprinzipal zugeordneten Mandanten, als
.onmicrosoft.com
-Domäne oder Azure-Objekt-ID
Beachten Sie zwei wichtige Punkte beim Arbeiten mit Dienstprinzipalen und der Azure CLI:
In einer PEM-Datei muss ein Zertifikat (CERTIFICATE) an den privaten Schlüssel (PRIVATE KEY) angefügt werden. Ein Beispiel für ein PEM-Dateiformat finden Sie unter Zertifikatbasierte Authentifizierung.
Falls Ihr Dienstprinzipal ein in Key Vault gespeichertes Zertifikat nutzt, muss der private Schlüssel des Zertifikats verfügbar sein, ohne dass eine Anmeldung bei Azure erforderlich ist. Informationen zum Abrufen des Zertifikats für
az login
finden Sie unter Abrufen des Zertifikats aus Key Vault.
az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>
Wichtig
Wenn Sie die Anzeige Ihres Kennworts in der Konsole vermeiden möchten und az login
interaktiv verwenden, können Sie den Befehl read -s
unter bash
nutzen.
read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>
Verwenden Sie in PowerShell das Cmdlet Get-Credential
.
$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>