Übung: Erstellen eines Dienstprinzipals und eines Schlüssels

Abgeschlossen

Wichtig

Sie benötigen für diese Übung ein eigenes Azure-Abonnement. Außerdem fallen möglicherweise Gebühren für Sie an. Wenn Sie noch kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Bevor Sie die Bereitstellungspipeline für die Website Ihres Spielzeugunternehmens erstellen, müssen Sie einen Dienstprinzipal erstellen und dafür Zugriff auf Ihre Azure-Umgebung gewähren. In dieser Übung erstellen Sie den Dienstprinzipal, den Sie für Ihre Bereitstellungspipeline verwenden.

In dem Prozess gehen Sie wie folgt vor:

  • Erstellen Sie mit nur einem Vorgang eine Anwendung, einen Dienstprinzipal und einen Schlüssel.
  • Stellen Sie sicher, dass Sie den Schlüssel auf sichere Weise verwenden.
  • Überprüfen Sie, ob der Dienstprinzipal funktioniert, indem Sie sich mit den entsprechenden Anmeldeinformationen bei Azure anmelden.

Für diese Übung benötigen Sie die Berechtigungen zum Erstellen von Anwendungen und Dienstprinzipalen in Ihrem Microsoft Entra-Verzeichnis. Falls Sie diese Anforderung mit Ihrem aktuellen Azure-Konto nicht erfüllen können, können Sie eine kostenlose Testversion erhalten und ein neues Azure-Abonnement und einen neuen Mandanten erstellen. Alternativ können Sie diese Übung überspringen.

Anmelden bei Azure

Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um Dienstprinzipale in Azure verwenden zu können.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

    Die Standardshell ist in der Regel pwsh, wie auf der rechten Seite des Terminalfensters dargestellt.

    Screenshot des Visual Studio Code-Terminalfensters, in dem pwsh als Shelloption angezeigt wird.

  2. Wählen Sie die Dropdownliste Startprofil und dann Azure Cloud Shell (Bash) aus.

    Screenshot des Visual Studio Code-Terminalfensters. Die Dropdownliste der Terminalshell und das Menüelement Azure Cloud Shell (Bash) werden angezeigt.

    Eine neue Shell wird geöffnet.

Anmelden bei Azure über die Azure CLI

  1. Melden Sie sich im Visual Studio Code-Terminal bei Azure an, indem Sie den folgenden Befehl ausführen:

    az login
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

Melden Sie sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto an, um diese Vorlage in Azure bereitzustellen.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

    Die Standardshell ist in der Regel pwsh, wie auf der rechten Seite des Terminalfensters dargestellt.

    Screenshot des Visual Studio Code-Terminalfensters, in dem pwsh als Shelloption angezeigt wird.

  2. Wählen Sie die Dropdownliste Startprofil und dann Azure Cloud Shell (PowerShell) aus.

    Screenshot des Visual Studio Code-Terminalfensters. Die Dropdownliste der Terminalshell und das Menüelement Azure Cloud Shell (PowerShell) werden angezeigt.

    Eine neue Shell wird geöffnet.

Anmelden bei Azure mithilfe von Azure PowerShell

  1. Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:

    Connect-AzAccount
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

Erstellen eines Dienstprinzipals und eines Schlüssels

  1. Führen Sie diesen Azure CLI-Befehl im Visual Studio Code-Terminal aus, um einen Dienstprinzipal zu erstellen:

    az ad sp create-for-rbac --name ToyWebsitePipeline
    

    Wenn von der Azure CLI ein Fehler mit dem Hinweis angezeigt wird, dass eine andere Anwendung den gleichen Anzeigenamen hat, bedeutet das, dass ein*e andere*r Benutzer*in Ihres Microsoft Entra-Mandanten einen Dienstprinzipal mit dem gleichen Namen erstellt hat. Ändern Sie den Wert --name in einen eindeutigen Wert. Dies hat keine Auswirkungen auf den weiteren Verlauf dieser Übungen.

  2. Sehen Sie sich die JSON-Ausgabe des obigen Befehls an. Sie enthält die folgenden Eigenschaften:

    • appId: Die Anwendungs-ID des Dienstprinzipals.
    • password: Den Schlüssel des Dienstprinzipals.
    • tenant: Ihre Microsoft Entra-Mandanten-ID.

    Kopieren Sie diese Werte an einen sicheren Ort. Sie benötigen sie in Kürze.

  1. Führen Sie diese Azure PowerShell-Befehle im Visual Studio Code-Terminal aus, um einen Dienstprinzipal zu erstellen:

    $servicePrincipal = New-AzADServicePrincipal `
      -DisplayName ToyWebsitePipeline
    
  2. Führen Sie den folgenden Befehl aus, um den Schlüssel des Dienstprinzipals abzurufen:

    $servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
    
  3. Führen Sie den folgenden Befehl aus, um die Anwendungs-ID und den Schlüssel des Dienstprinzipals und die ID Ihres Microsoft Entra-Mandanten anzuzeigen:

    Write-Output "Service principal application ID: $($servicePrincipal.AppId)"
    Write-Output "Service principal key: $servicePrincipalKey"
    Write-Output "Your Azure AD tenant ID: $((Get-AzContext).Tenant.Id)"
    

    Kopieren Sie die Werte an einen sicheren Ort. Sie benötigen sie in Kürze.

Warnung

Die Ausgaben der obigen Befehle enthalten den Schlüssel für Ihren Dienstprinzipal. Achten Sie darauf, wo Sie diese Befehle ausführen. Führen Sie sie beispielsweise nicht in einer Umgebung aus, in der sie ggf. von anderen Personen angezeigt werden können.

Testen des Dienstprinzipals

Nachdem der Dienstprinzipal erstellt wurde, können Sie sich mit den zugehörigen Anmeldeinformationen anmelden, um zu überprüfen, ob die Erstellung erfolgreich war.

  1. Führen Sie diesen Azure CLI-Befehl im Visual Studio Code-Terminal aus, um sich mit den Anmeldeinformationen des Dienstprinzipals anzumelden. Ersetzen Sie die Platzhalter durch die Werte, die Sie im vorherigen Schritt kopiert haben.

    az login --service-principal \
      --username APPLICATION_ID \
      --password PASSWORD \
      --tenant TENANT_ID \
      --allow-no-subscriptions
    

    Achten Sie darauf, dass Sie das Argument --allow-no-subscriptions einfügen. Wenn Sie den Befehl az login ausführen, sucht die Azure CLI normalerweise nach den Azure-Abonnements, auf die Sie zugreifen können. Dem Dienstprinzipal wurde noch kein Zugriff auf Elemente gewährt. Verwenden Sie daher das Argument --allow-no-subscriptions, um zu verhindern, dass die Azure CLI die Abonnementliste überprüft und ein Fehler angezeigt wird.

  2. Überprüfen Sie, ob die Ausgabe des vorherigen Befehls eine JSON-Objekt ist, das eine user-Eigenschaft mit der Anwendungs-ID des Dienstprinzipals enthält. Mit diesen Informationen wird angegeben, dass die Anmeldung des Dienstprinzipals erfolgreich war.

  3. Melden Sie sich mit dem folgenden Befehl vom Konto des Dienstprinzipals ab:

    az logout
    
  1. Führen Sie diesen Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, damit Sie auf sichere Weise zum Eingeben der Anmeldeinformationen des Dienstprinzipals aufgefordert werden. Verwenden Sie die Anwendungs-ID und den Schlüssel des Dienstprinzipals aus dem vorherigen Schritt als Benutzername bzw. Kennwort.

    $credential = Get-Credential
    
  2. Führen Sie diesen Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, um sich mit den Anmeldeinformationen des Dienstprinzipals anzumelden.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Überprüfen Sie, ob die Ausgabe des vorherigen Befehls eine Account-Eigenschaft mit der Anwendungs-ID des Dienstprinzipals und einen leeren SubscriptionName-Wert enthält. Mit diesen Informationen wird angegeben, dass die Anmeldung des Dienstprinzipals erfolgreich war.

  4. Melden Sie sich mit dem folgenden Befehl vom Konto des Dienstprinzipals ab:

    Logout-AzAccount
    

Nachdem Sie nun über einen funktionierenden Dienstprinzipal verfügen, können Sie zur nächsten Phase übergehen: Autorisierung des Dienstprinzipals für den Zugriff auf Ihre Azure-Umgebung.