Erstellen eines Azure-Dienstprinzipals mit der Azure CLI
Automatisierte Tools, die Azure-Dienste verwenden, sollten immer über eingeschränkte Berechtigungen verfügen, um Ihre Azure-Ressourcen zu schützen. Aus diesem Grund bietet Azure Dienstprinzipale, damit Anwendungen sich nicht als Benutzer mit uneingeschränkten Berechtigungen anmelden. Ein Azure-Dienstprinzipal ist eine Identität, die zur Verwendung mit Anwendungen, gehosteten Diensten und automatisierten Tools erstellt wird. Diese Identität wird für den Zugriff auf Ressourcen verwendet.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines Dienstprinzipals
- Anmelden mit einem Dienstprinzipal und einem Kennwort
- Anmelden mit einem Dienstprinzipal und einem Zertifikat
- Verwalten von Dienstprinzipalrollen
- Erstellen einer Azure-Ressource mithilfe eines Dienstprinzipals
- Zurücksetzen von Anmeldeinformationen für Dienstprinzipal
Voraussetzungen
- In einem Abonnement müssen Sie über
User Access Administrator
- oderRole Based Access Control Administrator
- Berechtigungen verfügen, um einen Dienstprinzipal zu erstellen. Eine Liste der Rollen, die für die rollenbasierte Azure-Zugriffssteuerung (Azure RBAC) verfügbar sind, finden Sie unter Integrierte Azure-Rollen.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Erstellen eines Dienstprinzipals
Verwenden Sie den Azure CLI-Verweisbefehl az ad sp create-for-rbac, um einen Dienstprinzipal zu erstellen. In diesem Beispiel wird kein --name
-Parameter angegeben, sodass automatisch ein Name erstellt wird, der einen Zeitstempel enthält.
az ad sp create-for-rbac
Ausgabekonsole:
{
"appId": "myAppId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myTentantId"
}
Wenn Sie die Konventionen für die Ressourcenbenennung nicht befolgen und planen, später eine Rolle und einen Bereich für den neuen Dienstprinzipal zu erstellen, können Sie den Befehl az ad sp create-for-rbac
ohne Parameter verwenden. Ohne Rolle und Bereich hat der neue Dienstprinzipal jedoch keinen Zugriff auf Ressourcen. Er ist einfach vorhanden.
Wenn Sie einen Dienstprinzipal ohne Parameter erstellen, führen Sie auch die folgenden Schritte aus:
- Notieren Sie Ihr systemseitig zugewiesenes Kennwort, da Sie es nicht erneut abrufen können. Wenn Sie das Kennwort verlieren, setzen Sie es mit az ad sp credential reset zurück. Dieser Vorgang wird unter Zurücksetzen von Anmeldeinformationen für Dienstprinzipale erläutert.
- Legen Sie die Rollenzuweisung für Ihren neuen Dienstprinzipal fest, indem Sie az role assignment create verwenden. Dieser Vorgang wird unter Verwalten von Dienstprinzipalrollen erläutert.
Hinweis
Wenn Ihr Konto nicht über die Berechtigung zum Erstellen eines Dienstprinzipals verfügt, gibt az ad sp create-for-rbac
eine Fehlermeldung mit dem Hinweis „Nicht genügend Berechtigungen zum Abschließen des Vorgangs“ zurück. Wenden Sie sich an Ihre*n Microsoft Entra-Administrator*in, um einen Dienstprinzipal zu erstellen.
In einem Microsoft Entra-ID-Verzeichnis, in dem die Benutzereinstellung Benutzer können Anwendungen registriere auf Nein festgelegt wurde, müssen Sie Mitglied einer der folgenden integrierten Microsoft Entra-ID-Rollen sein (die folgende Aktion haben: microsoft.directory/applications/createAsOwner
oder microsoft.directory/applications/create
):
- Anwendungsentwickler
- Anwendungsadministrator
- Cloudanwendungsadministrator
- Globaler Administrator
- Hybrididentitätsadministrator
Weitere Informationen zu Benutzereinstellungen in Microsoft Entra ID finden Sie unter Einschränken, welche Benutzer Anwendungen erstellen können.
Erstellen eines Dienstprinzipals mit Rolle und Bereich
Die bewährte Methode besteht darin, beim Erstellen eines Dienstprinzipals immer bestimmte --role
- und --scopes
-Werte zuzuweisen. Führen Sie folgende Schritte aus:
Bestimmen Sie die richtige Rolle.
Verwenden Sie beim Bestimmen der Rolle immer das Prinzip der geringsten Rechte. Geben Sie Ihrem Dienstprinzipal beispielsweise nicht die Berechtigungen von
contributor
für ein Abonnement, wenn der Dienstprinzipal nur auf Azure Storage innerhalb einer Ressourcengruppe zugreifen muss. Ziehen Sie eine spezielle Rolle wie Mitwirkender an Storage-Blobdaten in Erwägung. Eine vollständige Liste der Rollen, die in Azure RBAC verfügbar sind, finden Sie unter Integrierten Azure-Rollen.Ruft einen Wert für den scopes-Parameter ab.
Suchen und kopieren Sie die Ressourcen-ID der Azure-Ressource, auf die der neue Dienstprinzipal Zugriff benötigt. Diese Informationen finden Sie in der Regel im Azure-Portal auf der Seite Eigenschaften oder Endpunkte der Ressource. Nachfolgend finden Sie allgemeine Beispiele mit
--scopes
, für das tatsächliche Format und den tatsächlichen Wert nutzen Sie aber unbedingt Ihre Ressourcen-ID.`Scope` Beispiel Subscription /subscriptions/mySubscriptionID
Resource group /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
Virtueller Computer /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
Speicherkonto-Dateidienst /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
Data Factory /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName
Weitere Beispiele mit Gültigkeitsbereichen finden Sie unter Verstehen des Gültigkeitsbereichs für Azure RBAC.
Erstellen Sie den Dienstprinzipal.
In diesem Beispiel wird ein neuer Dienstprinzipal mit dem Namen myServicePrincipalName1 mit der Berechtigung Leser für alle Ressourcen in der Ressourcengruppe RG1 erstellt.
# Bash script az ad sp create-for-rbac --name myServicePrincipalName1 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
Der Parameter
--scopes
akzeptiert eine durch Leerzeichen getrennte Liste der Bereiche. In diesem Beispiel wird ein neuer Dienstprinzipal mit dem Namen myServicePrincipalName2 mit der Berechtigung Leser für alle Ressourcen in der Ressourcengruppe myRG1 erstellt. Dieser Dienstprinzipal erhält auch die Berechtigung Leser für myVM in myRG2.# Bash script az ad sp create-for-rbac --name myServicePrincipalName2 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
Wenn Sie dem neuen Dienstprinzipal zu wenige oder zu viele Berechtigungen erteilt haben, ändern Sie die Berechtigungen durch die Verwaltung von Dienstprinzipalrollen.
Erstellen eines Dienstprinzipals mithilfe von Variablen
Sie können einen Dienstprinzipal auch mithilfe von Variablen erstellen:
# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"
echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
--role $roleName \
--scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup
Eine vollständige Liste der Dienstprinzipaleigenschaften können Sie mit az ad sp list abrufen. Lesen Sie auch Abrufen eines vorhandenen Dienstprinzipals.
Warnung
Wenn Sie mithilfe des Befehls az ad sp create-for-rbac
einen Azure-Dienstprinzipal erstellen, enthält die Ausgabe Anmeldeinformationen, die geschützt werden müssen. Schließen Sie diese Anmeldeinformationen nicht in Ihren Code ein, und checken Sie sie nicht in Ihre Quellcodeverwaltung ein. Verwenden Sie als Alternative ggf. verwaltete Identitäten (sofern verfügbar), um zu vermeiden, dass die Verwendung von Anmeldeinformationen erforderlich ist.
Nächste Schritte
Sie wissen jetzt, wie Sie einen Azure-Dienstprinzipal erstellen. Fahren Sie mit dem nächsten Schritt fort, um zu erfahren, wie Sie Dienstprinzipale mit kennwortbasierter Authentifizierung verwenden.