Verwenden eines Azure-Dienstprinzipals mit kennwortbasierter Authentifizierung
Beim Erstellen eines Dienstprinzipals wählen Sie den Typ der von ihm verwendeten Anmeldeauthentifizierung aus. Für Azure-Dienstprinzipale sind zwei Arten von Authentifizierung verfügbar: kennwortbasiert und zertifikatbasiert. Die kennwortbasierte Authentifizierung eignet sich gut, wenn Sie mehr über Dienstprinzipale lernen, jedoch wird die zertifikatbasierte Authentifizierung für Anwendungen empfohlen.
In diesem Schritt im Tutorial wird erläutert, wie Sie ein Dienstprinzipalkennwort für den Zugriff auf eine Azure-Ressource verwenden.
Erstellen eines Dienstprinzipals mit einem Kennwort
Das Standardverhalten von az ad sp create-for-rbac besteht darin, einen Dienstprinzipal mit einem zufälligen Kennwort zu erstellen.
az ad sp create-for-rbac --name myServicePrincipalName \
--role reader \
--scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName
Ausgabekonsole:
{
"appId": "myServicePrincipalId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myOrganizationTenantId"
}
Die Ausgabe für einen Dienstprinzipal mit Kennwortauthentifizierung enthält den Schlüssel password
. Denken Sie unbedingt daran, diesen Wert zu kopieren – er kann nicht abgerufen werden. Wenn Sie das Kennwort verlieren, setzen Sie die Anmeldeinformationen des Dienstprinzipals zurück.
Anmelden mit einem Dienstprinzipal und einem Kennwort
Testen Sie die Anmeldeinformationen und Berechtigungen des neuen Dienstprinzipals, indem Sie sich anmelden. Um sich mit einem Dienstprinzipal anzumelden, benötigen Sie die appId
(auch als „Dienstprinzipal-ID“, „Benutzername“ oder „Zugewiesene Person“ bezeichnet), tenant
und password
. Hier sehen Sie ein Beispiel:
az login --service-principal \
--username myServicePrincipalId \
--password myServicePrincipalPassword \
--tenant myOrganizationTenantID
Wenn Sie das appId
- oder --tenant
-Element nicht kennen, rufen Sie es über den az ad sp list
-Befehl ab.
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"
az login --service-principal \
--username $spID \
--password {paste your password here} \
--tenant $tenantID
Wenn Sie in einer Organisation testen, die eine Zwei-Faktor-Authentifizierung erfordert, wird die Fehlermeldung „... Interaktive Authentifizierung erforderlich...“ angezeigt. Alternativ können Sie ein Zertifikat oder verwaltete Identitäten verwenden.
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
in 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>
Nächste Schritte
Sie wissen jetzt, wie Dienstprinzipale mit einem Kennwort funktionieren. Fahren Sie mit dem nächsten Schritt fort, um zu erfahren, wie Sie Dienstprinzipale mit zertifikatbasierter Authentifizierung verwenden.