Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Automatisierte Tools, die Azure-Dienste verwenden, sollten immer eingeschränkte Berechtigungen besitzen. Anstatt dass sich Anwendungen als voll privilegierter Benutzer anmelden müssen, bietet Azure Dienstprinzipale an.
Ein Azure-Dienstprinzipal ist eine Identität, die für die Verwendung mit Anwendungen, gehosteten Diensten und automatisierten Tools für den Zugriff auf Azure-Ressourcen erstellt wurde. Dieser Zugriff ist durch die Rollen eingeschränkt, die dem Dienstprinzipal zugewiesen sind, sodass Sie steuern können, auf welche Ressourcen zugegriffen werden kann und auf welcher Ebene. Aus Sicherheitsgründen empfiehlt es sich immer, Dienstprinzipale mit automatisierten Tools zu verwenden, anstatt die Anmeldung mit einer Benutzeridentität zu ermöglichen.
In diesem Artikel werden die Schritte zum Erstellen, Abrufen von Informationen und Zurücksetzen eines Dienstprinzipals mit Azure PowerShell beschrieben.
Vorsicht
Wenn Sie einen Dienstprinzipal mithilfe des Befehls "New-AzADServicePrincipal " erstellen, enthält die Ausgabe Anmeldeinformationen, die Sie schützen müssen. Alternativ sollten Sie die Verwendung von verwalteten Identitäten in Betracht ziehen, um die Notwendigkeit der Verwendung von Anmeldeinformationen zu vermeiden.
Voraussetzungen
- Bei lokaler Verwendung von Azure PowerShell:
- Installieren Sie das Az PowerShell-Modul.
- Stellen Sie mithilfe des Cmdlets Connect-AzAccount eine Verbindung mit Ihrem Azure-Konto her.
- Bei Verwendung von Azure Cloud Shell:
- Weitere Informationen finden Sie in der Übersicht über Azure Cloud Shell.
Erstellen eines Diensthauptkontos
Erstellen Sie einen Dienstprinzipal mit dem Cmdlet New-AzADServicePrincipal . Beim Erstellen eines Dienstprinzipals wählen Sie den Typ der von ihr verwendeten Anmeldeauthentifizierung aus.
Von Bedeutung
Ab Az PowerShell-Modul Version 7.x weist New-AzADServicePrincipal die Rolle "Mitwirkender " dem Dienstprinzipal standardmäßig nicht mehr zu. Informationen zum Zuweisen einer bestimmten Rolle zu einem Dienstprinzipal finden Sie unter "Schritte zum Hinzufügen einer Rollenzuweisung".
Hinweis
Wenn Ihr Konto nicht über die Berechtigung zum Erstellen eines Dienstprinzipals verfügt, gibt New-AzADServicePrincipal
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 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
):
- Anwendungsentwickler
- Anwendungsadministrator
- Cloudanwendungsadministrator
- Globaler Administrator
- Administrator für hybride Identität
Weitere Informationen zu Den Benutzereinstellungen in der Microsoft Entra-ID finden Sie unter Einschränken, wer Anwendungen erstellen kann.
Es gibt zwei Arten von Authentifizierung für Dienstprinzipale: kennwortbasierte Authentifizierung und zertifikatbasierte Authentifizierung.
Kennwortbasierte Authentifizierung
Von Bedeutung
Die Standardrolle für einen kennwortbasierten Authentifizierungsdienstprinzipal ist Mitwirkender. Diese Rolle verfügt über vollständige Berechtigungen zum Lesen und Schreiben in ein Azure-Konto. Informationen zum Verwalten von Rollenzuweisungen finden Sie unter Verwalten von Dienstprinzipalrollen.
Ohne andere Authentifizierungsparameter wird die kennwortbasierte Authentifizierung verwendet und ein zufälliges Kennwort für Sie erstellt. Wenn Sie eine kennwortbasierte Authentifizierung wünschen, wird diese Methode empfohlen.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Das zurückgegebene Objekt enthält die PasswordCredentials.SecretText
Eigenschaft, die das generierte Kennwort enthält. Stellen Sie sicher, dass Sie diesen Wert an einer sicheren Stelle speichern, um sich beim Dienstprinzipal zu authentifizieren. Der Wert wird in der Konsolenausgabe nicht angezeigt. Wenn Sie das Kennwort verlieren, setzen Sie die Dienstprinzipalanmeldeinformationen zurück.
Mit dem folgenden Code können Sie den geheimen Schlüssel exportieren:
$sp.PasswordCredentials.SecretText
Das zurückgegebene New-AzADServicePrincipal
Objekt enthält die elemente und Id
die DisplayName
Elemente, die für die Anmeldung mit dem Dienstprinzipal verwendet werden können.
Von Bedeutung
Für die Anmeldung mit einem Dienstprinzipal ist die Mandanten-ID erforderlich, unter der der Dienstprinzipal erstellt wurde. Um den aktiven Mandanten beim Erstellen des Dienstprinzipals abzurufen, führen Sie den folgenden Befehl unmittelbar nach der Erstellung des Dienstprinzipals aus:
(Get-AzContext).Tenant.Id
Zertifikatbasierte Authentifizierung
Von Bedeutung
Beim Erstellen eines zertifikatbasierten Authentifizierungsdienstprinzipals ist keine Standardrolle zugewiesen. Informationen zum Verwalten von Rollenzuweisungen finden Sie unter Verwalten von Dienstprinzipalrollen.
Dienstprinzipale mit zertifikatbasierter Authentifizierung werden mit dem CertValue
Parameter erstellt. Dieser Parameter verwendet eine base64-codierte ASCII-Zeichenfolge des öffentlichen Zertifikats. Dies wird durch eine PEM-Datei oder eine textcodierte CRT- oder CER-Datei dargestellt. Binäre Codierungen des öffentlichen Zertifikats werden nicht unterstützt. Bei diesen Anweisungen wird davon ausgegangen, dass Sie bereits über ein Zertifikat verfügen.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
Das zurückgegebene New-AzADServicePrincipal
Objekt enthält die und Id
die DisplayName
Eigenschaften, von denen eine für die Anmeldung mit dem Dienstprinzipal verwendet werden kann. Clients, die sich mit dem Dienstprinzipal anmelden, benötigen auch Zugriff auf den privaten Schlüssel des Zertifikats.
Von Bedeutung
Für die Anmeldung mit einem Dienstprinzipal ist die Mandanten-ID erforderlich, unter der der Dienstprinzipal erstellt wurde. Um den aktiven Mandanten beim Erstellen des Dienstprinzipals abzurufen, führen Sie den folgenden Befehl unmittelbar nach der Erstellung des Dienstprinzipals aus:
(Get-AzContext).Tenant.Id
Abrufen eines vorhandenen Dienstprinzipals
Eine Liste der Dienstprinzipale für den aktiven Mandanten kann mit Get-AzADServicePrincipal abgerufen werden. Standardmäßig gibt dieser Befehl alle Dienstprinzipale in einem Mandanten zurück. Für große Organisationen kann es sehr lange dauern, ergebnisse zurückzugeben. Stattdessen wird die Verwendung eines der optionalen serverseitigen Filterargumente empfohlen:
-
DisplayNameBeginsWith
fordert Dienstprinzipale an, die über ein Präfix verfügen, das dem bereitgestellten Wert entspricht. Der Anzeigename eines Dienstprinzipals ist der beim Erstellen festgelegteDisplayName
Wert. -
DisplayName
fordert eine genaue Übereinstimmung eines Dienstprinzipalnamens an.
Verwalten von Dienstprinzipalrollen
Azure PowerShell verfügt über die folgenden Cmdlets zum Verwalten von Rollenzuweisungen:
Weitere Informationen zu Role-Based Zugriffssteuerung (Access Control, RBAC) und Rollen finden Sie unter RBAC: Integrierte Rollen.
Im folgenden Beispiel wird die Rolle " Leser" hinzugefügt und die Rolle " Mitwirkender" entfernt:
New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'
Von Bedeutung
Rollenzuweisungs-Cmdlets verwenden nicht die Dienstprinzipalobjekt-ID. Sie übernehmen die zugeordnete Anwendungs-ID, die zur Erstellungszeit generiert wird. Um die Anwendungs-ID für einen Dienstprinzipal abzurufen, verwenden Sie Get-AzADServicePrincipal
.
Hinweis
Wenn Ihr Konto nicht über die Berechtigung zum Zuweisen einer Rolle verfügt, wird eine Fehlermeldung angezeigt, dass Ihr Konto "keine Autorisierung zum Ausführen der Aktion "Microsoft.Authorization/roleAssignments/write" hat" angezeigt wird. Wenden Sie sich an Ihren Microsoft Entra-Administrator, um Rollen zu verwalten.
Durch das Hinzufügen einer Rolle werden zuvor zugewiesene Berechtigungen nicht eingeschränkt. Wenn Sie die Berechtigungen eines Dienstprinzipals einschränken, sollte die Rolle "Mitwirkender " entfernt werden.
Die Änderungen können überprüft werden, indem die zugewiesenen Rollen aufgelistet werden:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Anmelden mit einem Dienstprinzipal
Testen Sie die Anmeldeinformationen und Berechtigungen des neuen Dienstprinzipals, indem Sie sich anmelden. Um sich mit einem Dienstprinzipal anzumelden, benötigen Sie den applicationId
ihr zugeordneten Wert und den Mandanten, unter dem er erstellt wird.
So melden Sie sich mit einem Dienstprinzipal mit einem Kennwort an:
# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>
Für die zertifikatbasierte Authentifizierung muss Azure PowerShell Informationen aus einem lokalen Zertifikatspeicher basierend auf einem Zertifikatfingerabdruck abrufen.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
Anweisungen zum Importieren eines Zertifikats in einen Von PowerShell zugänglichen Anmeldeinformationsspeicher finden Sie unter Zertifikatbasierte Authentifizierung
Zurücksetzen von Anmeldeinformationen
Wenn Sie die Anmeldeinformationen für einen Dienstprinzipal vergessen, verwenden Sie New-AzADSpCredential , um neue Anmeldeinformationen mit einem zufälligen Kennwort hinzuzufügen. Dieses Cmdlet unterstützt beim Zurücksetzen des Kennworts keine benutzerdefinierten Anmeldeinformationen.
Von Bedeutung
Bevor Sie neue Anmeldeinformationen zuweisen, können Sie vorhandene Anmeldeinformationen entfernen, um die Anmeldung mit ihnen zu verhindern. Verwenden Sie dazu das Cmdlet Remove-AzADSpCredential :
Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName
Problembehandlung
Wenn Sie die Fehlermeldung "New-AzADServicePrincipal: Ein anderes Objekt mit demselben Wert für Eigenschaftsbezeichneruris ist bereits vorhanden.", vergewissern Sie sich, dass ein Dienstprinzipal mit demselben Namen noch nicht vorhanden ist.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Wenn der vorhandene Dienstprinzipal nicht mehr benötigt wird, können Sie ihn mithilfe des folgenden Beispiels entfernen.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
Dieser Fehler kann auch auftreten, wenn Sie zuvor einen Dienstprinzipal für eine Azure Active Directory-Anwendung erstellt haben. Wenn Sie den Dienstprinzipal entfernen, ist die Anwendung weiterhin verfügbar. Diese Anwendung verhindert, dass Sie einen anderen Dienstprinzipal mit demselben Namen erstellen.
Mit dem folgenden Beispiel können Sie überprüfen, ob eine Microsoft Entra-Anwendung mit demselben Namen nicht vorhanden ist:
Get-AzADApplication -DisplayName ServicePrincipalName
Wenn eine Anwendung mit demselben Namen vorhanden ist und nicht mehr benötigt wird, kann sie mithilfe des folgenden Beispiels entfernt werden.
Remove-AzADApplication -DisplayName ServicePrincipalName
Wählen Sie andernfalls einen alternativen Namen für den neuen Dienstprinzipal aus, den Sie erstellen möchten.
Azure PowerShell