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>

Siehe auch