Erstellen eines Dienstprinzipals und eines Schlüssels

Abgeschlossen

Nachdem Sie sich nun über das Konzept eines Dienstprinzipals informiert haben, fragen Sie sich vielleicht, wie dessen Identität gegenüber Microsoft Entra ID nachgewiesen wird. In dieser Lerneinheit erfahren Sie mehr über den Authentifizierungsprozess und die Anmeldeinformationen für Dienstprinzipale. Darüber hinaus wird beschrieben, wie Sie einen Dienstprinzipal erstellen und ihm einen Schlüssel zuordnen.

Grundlegendes zur Authentifizierung für Dienstprinzipale

Wenn ein Dienstprinzipal mit Azure kommunizieren muss, führt er die Anmeldung bei Microsoft Entra ID durch. Nachdem die Identität des Dienstprinzipals von Microsoft Entra ID überprüft wurde, wird ein Token ausgestellt, das von der Clientanwendung gespeichert und beim Senden von Anforderungen an Azure verwendet wird.

Dieser Prozess ähnelt grob dem Ablauf des Vorgangs, den Sie als Benutzer durchführen, wenn Sie sich selbst bei Azure anmelden. Im Vergleich mit Benutzern verfügen Dienstprinzipale über eine etwas andere Art von Anmeldeinformationen, um ihre Identität nachzuweisen. Für Dienstprinzipale werden zwei Hauptanmeldeinformationen verwendet: Schlüssel und Zertifikate.

Hinweis

Beachten Sie hierbei, dass es sich bei verwalteten Identitäten um spezielle Dienstprinzipale handelt, die in Azure genutzt werden. Hierfür wird eine andere Art von Authentifizierungsprozess verwendet, bei dem es nicht erforderlich ist, dass Sie Anmeldeinformationen angeben bzw. nutzen.

Schlüssel

Schlüssel ähneln Kennwörtern. Der Unterschied ist aber, dass Schlüssel deutlich länger und komplexer sind. In den meisten Fällen werden die Schlüssel von Microsoft Entra ID selbst generiert, um Folgendes sicherzustellen:

  • Die Schlüssel sind kryptografischer Art und werden nach dem Zufallsprinzip erstellt. Dies bedeutet, dass sie sehr schwer zu erraten sind.
  • Menschen verwenden nicht versehentlich unsichere Kennwörter als Schlüssel.

Da Dienstprinzipale häufig über einen hohen Berechtigungsgrad verfügen, ist es von entscheidender Bedeutung, dass sie sicher sind. Normalerweise müssen Sie den Schlüssel nur kurz nutzen, wenn Sie den Dienstprinzipal und Ihre Pipeline zum ersten Mal konfigurieren. Aus diesem Grund muss der Schlüssel nicht unbedingt einprägsam oder einfach einzugeben sein.

Ein Dienstprinzipal kann mehrere Schlüssel gleichzeitig aufweisen, aber Benutzer nicht mehrere Kennwörter. Schlüssel verfügen – wie Kennwörter auch – über ein Ablaufdatum. Weitere Informationen hierzu erhalten Sie weiter unten.

Hinweis

Sie können sich Schlüssel wie sehr wichtige Kennwörter vorstellen, ähnlich wie Schlüssel für Speicherkonten. Sie sollten hierfür in Bezug auf die Sicherheit und die Nutzung die gleiche Sorgfalt walten lassen.

Zertifikate

Zertifikate sind eine weitere Möglichkeit für die Authentifizierung von Dienstprinzipalen. Sie sind sehr sicher, aber die Verwaltung kann ggf. schwierig sein. In einigen Organisationen ist die Verwendung von Zertifikaten für bestimmte Arten von Dienstprinzipalen obligatorisch.

In diesem Modul werden Zertifikate aber nicht beschrieben. Bei Verwendung eines Dienstprinzipals mit Zertifikatauthentifizierung läuft der Vorgang im Grunde genommen wie bei anderen Dienstprinzipalen ab, was die Verwaltung und die Gewährung einer Berechtigung für Ihre Pipeline betrifft.

Hinweis

Zertifikate sind eine gute Option, wenn bei Ihnen die Möglichkeit zur Nutzung besteht. Für Angreifer ist es schwieriger, sie zu stehlen. Es ist auch schwieriger, Anforderungen abzufangen und zu ändern, für die Zertifikate verwendet werden. Andererseits benötigen Sie für Zertifikate mehr Infrastruktur, und es fällt ein fortlaufender Wartungsaufwand an.

Verwenden von Schlüsseln für Dienstprinzipale

Bei der Erstellung eines Dienstprinzipals fordern Sie Azure in der Regel auf, gleichzeitig einen Schlüssel zu erstellen. Normalerweise wird von Azure ein zufälliger Schlüssel für Sie generiert.

Hinweis

Erinnern Sie sich an die obige Beschreibung der Funktionsweise von Dienstprinzipalen? Schlüssel werden als Teil des Anwendungsregistrierungsobjekts gespeichert. Wenn Sie das Azure-Portal öffnen, in der Microsoft Entra-Konfiguration nachsehen und dann zu den Anwendungsregistrierungen navigieren, sehen Sie, dass Sie dort auch Schlüssel erstellen und löschen können.

In Azure wird der Schlüssel angezeigt, wenn Sie den Dienstprinzipal erstellen. Dies ist das einzige Mal, dass der Schlüssel in Azure für Sie angezeigt wird. Danach können Sie sie nicht mehr abrufen. Es ist wichtig, dass Sie den Schlüssel auf sichere Weise kopieren, damit Sie ihn beim Konfigurieren Ihrer Pipeline verwenden können. Geben Sie den Schlüssel nicht per E-Mail oder auf andere unsichere Weise weiter. Falls Sie einen Schlüssel verlieren, müssen Sie ihn löschen und einen neuen erstellen.

Verwalten von Dienstprinzipalen für Azure Pipelines

Wenn Sie einen Schlüssel für den Dienstprinzipal einer Pipeline erstellen, ist es ratsam, den Schlüssel sofort in die Konfiguration der Pipeline zu kopieren. Auf diese Weise vermeiden Sie das unnötige Speichern oder Übertragen des Schlüssels.

Pipelinetools verfügen über sichere Optionen zum Angeben der Anwendungs-ID und des Schlüssels Ihres Dienstprinzipals. Speichern Sie Anmeldeinformationen jeglicher Art niemals in der Quellcodeverwaltung. Verwenden Sie stattdessen Dienstverbindungen für Azure Pipelines. In diesem Modul wird nur beschrieben, wie Sie einen Dienstprinzipal und einen Schlüssel erstellen. In einem späteren Modul erfahren Sie, wie Sie Ihre Pipeline mit dem Schlüssel konfigurieren.

Tipp

Azure Pipelines kann automatisch Dienstprinzipale für Sie erstellen. In diesem Modul erstellen und verwalten Sie Ihre Dienstprinzipale manuell, um ein besseres Verständnis der Abläufe zu erhalten. In anderen Modulen wird der Einfachheit halber die automatische Erstellungsmethode verwendet.

Erstellen eines Dienstprinzipals und eines Schlüssels

Sie können die Azure CLI verwenden, um Dienstprinzipale zu erstellen und zu verwalten.

Hinweis

Zum Erstellen und Ändern von Dienstprinzipalen müssen Sie über die zugehörigen Berechtigungen in Microsoft Entra ID verfügen. In einigen Organisationen benötigen Sie möglicherweise einen Administrator, der diese Schritte für Sie ausführt.

Verwenden Sie den Befehl az ad sp create-for-rbac, um einen Dienstprinzipal und einen Schlüssel zu erstellen. Für diesen Befehl können mehrere Argumente verwendet werden, und optional können dem Dienstprinzipal Rollen zugewiesen werden. Weitere Informationen hierzu erhalten Sie später in diesem Modul. Hier ist vorerst nur ein Beispiel dazu angegeben, wie Sie einen Dienstprinzipal ohne Azure-Rollenzuweisungen erstellen:

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

Wenn Sie diesen Befehl ausführen, gibt die Azure CLI eine JSON-Antwort mit der Eigenschaft password zurück. Diese Eigenschaft ist der Schlüssel des Dienstprinzipals. Da Sie diesen Schlüssel später nicht mehr abrufen können, sollten Sie ihn sofort verwenden oder an einem sicheren Ort speichern.

Hinweis

Mit dem Befehl az ad sp create-for-rbac wird eine Anwendungsregistrierung in Microsoft Entra ID erstellt, Ihrem Microsoft Entra-Mandanten ein Dienstprinzipal hinzugefügt und ein Schlüssel für die Anwendungsregistrierung erstellt. Mit einen anderen Befehl (az ad sp create) wird nur der Dienstprinzipal auf Ihrem Mandanten erstellt (nicht die Anwendungsregistrierung). Beim Erstellen von Dienstprinzipalen für Pipelines eignet sich der folgende Befehl normalerweise am besten: az ad sp create-for-rbac.

Sie können die Azure PowerShell-Cmdlets verwenden, um Dienstprinzipale zu erstellen und zu verwalten.

Hinweis

Zum Erstellen und Ändern von Dienstprinzipalen müssen Sie über die zugehörigen Berechtigungen in Microsoft Entra ID verfügen. In einigen Organisationen benötigen Sie möglicherweise einen Administrator, der diese Schritte für Sie ausführt.

Verwenden Sie das Cmdlet New-AzADServicePrincipal, um einen Dienstprinzipal und einen Schlüssel zu erstellen. Für diesen Befehl können mehrere Argumente verwendet werden, und optional können dem Dienstprinzipal Rollen zugewiesen werden. Weitere Informationen hierzu erhalten Sie später in diesem Modul. Hier ist vorerst nur ein Beispiel dazu angegeben, wie Sie einen Dienstprinzipal ohne Azure-Rollenzuweisungen erstellen:

$servicePrincipal = New-AzADServicePrincipal -DisplayName MyPipeline

Wenn Sie diesen Befehl ausführen, füllt Azure PowerShell die Variable servicePrincipal mit Informationen zum Dienstprinzipal, einschließlich des Schlüssels, auf:

$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText

Da Sie diesen Schlüssel später nicht mehr abrufen können, sollten Sie ihn sofort verwenden oder an einem sicheren Ort speichern.

Hinweis

Mit dem New-AzADServicePrincipal-Cmdlet wird eine Anwendungsregistrierung in Microsoft Entra ID erstellt, Ihrem Microsoft Entra-Mandanten ein Dienstprinzipal hinzugefügt und ein Schlüssel für die Anwendungsregistrierung erstellt.

Identifizieren eines Dienstprinzipals

Dienstprinzipale verfügen über mehrere Bezeichner und Namen, die Sie für die Identifizierung und Nutzung verwenden. Am häufigsten verwendete Bezeichner:

  • Anwendungs-ID: Die Anwendungsregistrierung verfügt über einen eindeutigen Bezeichner, der häufig als Anwendungs-ID oder auch als Client-ID bezeichnet wird. Normalerweise verwenden Sie ihn als Benutzernamen, wenn der Dienstprinzipal die Anmeldung bei Azure durchführt.
  • Objekt-ID: Die Anwendungsregistrierung und der Dienstprinzipal verfügen über eigene separate Objekt-IDs. Hierbei handelt es sich um eindeutige Bezeichner, die von Microsoft Entra ID zugewiesen werden. Gelegentlich müssen Sie diese Objekt-IDs verwenden, wenn Sie einen Dienstprinzipal verwalten.
  • Anzeigename: Dies ist ein für Menschen lesbarer Name, der den Dienstprinzipal beschreibt.

Tipp

Verwenden Sie für Ihren Dienstprinzipal einen eindeutigen, beschreibenden Anzeigenamen. Es ist wichtig, dass Sie Ihrem Team verdeutlichen, welchen Zweck der Dienstprinzipal hat, damit er nicht versehentlich gelöscht wird oder seine Berechtigungen geändert werden.

Achtung

Ein Anzeigename ist nicht eindeutig. Es kann sein, dass für mehrere Dienstprinzipale der gleiche Anzeigename verwendet wird. Gehen Sie mit Bedacht vor, wenn Sie einem Dienstprinzipal Berechtigungen gewähren, indem Sie seinen Anzeigenamen für die Identifizierung verwenden. Hierbei kann es passieren, dass Sie versehentlich dem falschen Dienstprinzipal Berechtigungen gewähren. Eine bewährte Methode besteht darin, stattdessen die Anwendungs-ID zu verwenden.

Wenn Sie einen Dienstprinzipal erstellen, legen Sie in der Regel nur den Anzeigenamen fest. Die anderen Namen und Bezeichner werden automatisch von Azure zugewiesen.

Abgelaufene Schlüssel

Dienstprinzipale laufen nicht ab, sondern nur die zugehörigen Schlüssel. Wenn Sie einen Schlüssel erstellen, können Sie dessen Ablaufzeit konfigurieren. Standardmäßig beträgt die Gültigkeitsdauer bis zum Ablauf ein Jahr. Nach dem Ablauf funktioniert der Schlüssel nicht mehr, und die Pipeline kann sich nicht mehr bei Microsoft Entra ID anmelden. Sie müssen Schlüssel regelmäßig verlängern oder rotieren.

Achtung

Es kann verlockend sein, lange Ablaufzeiten für Ihre Schlüssel festzulegen, aber dies ist nicht ratsam. Dienstprinzipale werden nur durch ihre Anmeldeinformationen geschützt. Wenn ein Angreifer Zugriff auf den Schlüssel eines Dienstprinzipals erhält, kann er damit großen Schaden anrichten. Der beste Ansatz zur Reduzierung des Zeitraums, in dem ein Angriff durchgeführt werden kann, ist die regelmäßige Änderung Ihrer Schlüssel. Darüber hinaus sollten Sie Schlüssel auch löschen und dann neu erstellen, falls der Verdacht besteht, dass sie offengelegt wurden.

Verwenden Sie zum Zurücksetzen eines Schlüssels für einen Dienstprinzipal den Befehl az ad sp mit der Anwendungs-ID wie im folgenden Beispiel:

az ad sp credential reset --id "b585b740-942d-44e9-9126-f1181c95d497"

Sie können das Entfernen und Neuerstellen des Dienstprinzipalschlüssels auch in zwei separaten Schritten durchführen, indem Sie die az ad sp credential delete und dann die Befehle az ad sp credential reset --append verwenden.

Verwenden Sie zunächst das Cmdlet Remove-AzADServicePrincipalCredential, um die vorhandenen Anmeldeinformationen zu entfernen, wenn Sie einen Schlüssel für einen Dienstprinzipal zurücksetzen möchten. Verwenden Sie anschließend das Cmdlet New-AzADServicePrincipalCredential, um neue Anmeldeinformationen hinzuzufügen. Für beide Cmdlets wird für die Identifizierung jeweils die Objekt-ID des Dienstprinzipals genutzt. Bevor Sie die Cmdlets verwenden, müssen Sie diese ID über die Anwendungs-ID abrufen:

$applicationId = APPLICATION_ID
$servicePrincipalObjectId = (Get-AzADServicePrincipal -ApplicationId $applicationId).Id

Remove-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId

$newCredential = New-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newKey = $newCredential.SecretText

Tipp

Ein Dienstprinzipal kann mehrere Schlüssel haben. Es ist problemlos möglich, Ihre Anwendung für die Verwendung eines neuen Schlüssels zu konfigurieren, während der alte Schlüssel noch gültig ist. Den alten Schlüssel können Sie dann löschen, wenn er nicht mehr verwendet wird. Mit diesem Verfahren kann vermieden werden, dass es zu Downtime aufgrund des Schlüsselablaufs kommt.

Verwalten des Lebenszyklus Ihres Dienstprinzipals

Es ist wichtig, den gesamten Lebenszyklus der einzelnen Dienstprinzipale zu berücksichtigen, die Sie erstellen. Was passiert beim Erstellen eines Dienstprinzipals für eine Pipeline, wenn die Pipeline später gelöscht oder nicht mehr verwendet wird?

Da Dienstprinzipale nicht automatisch entfernt werden, müssen Sie alte Dienstprinzipale überprüfen und entfernen. Das Entfernen alter Dienstprinzipale ist aus dem gleichen Grund wichtig, aus dem Sie auch alte Benutzerkonten löschen: Angreifer können sich ggf. Zugriff auf die Schlüssel verschaffen. Es sollten keine Anmeldeinformationen vorhanden sein, die nicht aktiv verwendet werden.

Eine bewährte Methode besteht darin, Ihre Dienstprinzipale an einem Ort zu dokumentieren, auf den Sie und Ihr Team leicht zugreifen können. Sie sollten für jeden Dienstprinzipal die folgenden Informationen einfügen:

  • Wichtige Identifizierungsinformationen, einschließlich Name und Anwendungs-ID.
  • Zweck des Dienstprinzipals.
  • Person, die die Erstellung durchgeführt hat, die für die Verwaltung verantwortlich ist (einschließlich Schlüssel) und die bei einem Problem ggf. helfen kann.
  • Die erforderlichen Berechtigungen und eine eindeutige Begründung, warum sie benötigt werden.
  • Erwartete Lebensdauer.

Sie sollten Ihre Dienstprinzipale regelmäßig überprüfen, um sicherzustellen, dass sie weiterhin verwendet werden und dass die zugewiesenen Berechtigungen noch stimmen.