Freigeben über


Erstellen eines Azure-Dienstprinzipals mit Azure CLI

Automatisierte Tools, die Azure-Dienste verwenden, sollten immer über eingeschränkte Berechtigungen verfügen, um sicherzustellen, dass Azure-Ressourcen sicher sind. Statt dass sich Anwendungen mit vollständigen Benutzerrechten anmelden, bietet Azure sogenannte Dienstprinzipale. Ein Azure-Dienstprinzipal ist eine Identität, die für die Verwendung mit Anwendungen, gehosteten Diensten und automatisierten Tools erstellt wurde. Diese Identität wird für den Zugriff auf Ressourcen verwendet.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen eines Diensthauptkontos
  • Anmelden mit einem Dienstprinzipal und Kennwort
  • Anmelden mit einem Service-Konto und Zertifikat
  • Service-Prinzipal-Rollen verwalten
  • Erstellen einer Azure-Ressource mithilfe eines Dienstprinzipals
  • Zurücksetzen der Dienstkontozugangsdaten

Voraussetzungen

  • Um in einem Abonnement einen Dienstprinzipal zu erstellen, müssen Sie über User Access Administrator- oder Role Based Access Control Administrator-Berechtigungen oder höhere Berechtigungen verfügen. Eine Liste der Rollen, die für die rollenbasierte Zugriffssteuerung (Azure RBAC) verfügbar sind, finden Sie in den integrierten Azure-Rollen.

Erstellen eines Diensthauptkontos

Verwenden Sie den Azure CLI-Referenzbefehl "az ad sp create-for-rbac", um einen Dienstprinzipal zu erstellen. In diesem Beispiel wird kein Parameter angegeben --name , daher wird automatisch ein Name erstellt, der einen Zeitstempel enthält.

az ad sp create-for-rbac

Ausgabekonsole:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Wenn Sie keine Konventionen für die Ressourcenbenennung einhalten und planen, später eine Rolle und einen Bereich für den neuen Dienstprinzipal zu erstellen, ist der az ad sp create-for-rbac Befehl ohne Parameter eine sinnvolle Lösung. Ohne Rolle und Bereich hat der neue Dienstprinzipal jedoch keinen Zugriff auf Ressourcen. Es ist einfach vorhanden.

Wenn Sie einen Dienstprinzipal ohne Parameter erstellen, führen Sie auch die folgenden Schritte aus:

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 die für die Microsoft Entra-Administration zuständige Person, um einen Dienstprinzipal zu erstellen.

In einem Microsoft Entra-ID-Verzeichnis, in dem Benutzereinstellung Benutzer können Anwendungen registrieren , auf "Nein" festgelegt wurde, müssen Sie Mitglied einer der folgenden integrierten Microsoft Entra-ID-Rollen sein (die über die Aktion verfügen: microsoft.directory/applications/createAsOwner oder microsoft.directory/applications/create):

Weitere Informationen zu Den Benutzereinstellungen in der Microsoft Entra-ID finden Sie unter Einschränken, wer Anwendungen erstellen kann.

Erstellen eines Dienstprinzipals mit Rolle und Geltungsbereich

Weisen Sie als bewährte Methode immer einen bestimmten --role und --scopes zu, wenn Sie einen Dienstprinzipal erstellen. Folgen Sie diesen Schritten:

  1. Bestimmen Sie die richtige Rolle.

    Verwenden Sie beim Bestimmen der Rolle immer das Prinzip der geringsten Rechte. Geben Sie Ihrem Dienstprinzipal contributor beispielsweise keine Berechtigungen für ein Abonnement, wenn der Dienstprinzipal nur auf Azure Storage innerhalb einer Ressourcengruppe zugreifen muss. Berücksichtigen Sie eine spezielle Rolle wie Speicher-Blob-Daten-Mitwirkender. Eine vollständige Liste der Rollen, die in Azure RBAC verfügbar sind, finden Sie unter Integrierten Azure-Rollen.

  2. Erhalte einen Wert für den Bereichsparameter.

    Suchen und kopieren Sie die Ressourcen-ID der Azure-Ressource , auf die der neue Dienstprinzipal zugreifen muss. 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.

    Umfang Beispiel
    Abonnement /subscriptions/mySubscriptionID
    Ressourcengruppe /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Virtuelle Maschine /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Speicherkonto-Dateidienst /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Datenfabrik /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.

  3. Erstellen Sie den Dienstprinzipal.

    In diesem Beispiel wird ein neuer Dienstprinzipal namens myServicePrincipalName1 mit Leseberechtigungen 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 --scopes Parameter akzeptiert eine durch Leerzeichen getrennte Liste von Bereichen. In diesem Beispiel wird ein neuer Dienstprinzipal namens myServicePrincipalName2 mit Leseberechtigungen für alle Ressourcen in der Ressourcengruppe myRG1 erstellt. Dieser Dienstprinzipal erhält auch Leseberechtigungen für myVM, die sich in myRG2 befinden.

    # 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 ihrem 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 auch einen Dienstprinzipal 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 finden Sie in der az ad sp-Liste und unter Abrufen eines vorhandenen Dienstprinzipals.

Warnung

Wenn Sie einen Azure-Dienstprinzipal mithilfe des az ad sp create-for-rbac Befehls erstellen, enthält die Ausgabe Anmeldeinformationen, die Sie schützen müssen. Schließen Sie diese Anmeldeinformationen nicht in Ihren Code ein, und checken Sie sie nicht in Ihre Quellcodeverwaltung ein. Alternativ können Sie verwaltete Identitäten verwenden, um die Notwendigkeit der Verwendung von Anmeldeinformationen zu vermeiden.

Nächste Schritte

Nachdem Sie nun erfahren haben, wie Sie einen Azure-Dienstprinzipal erstellen, fahren Sie mit dem nächsten Schritt fort, um zu erfahren, wie Sie Dienstprinzipale mit kennwortbasierter Authentifizierung verwenden.