Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Geautomatiseerde hulpprogramma's die gebruikmaken van Azure-services moeten altijd beperkte machtigingen hebben. In plaats van toepassingen zich te laten aanmelden als een gebruiker met volledige rechten, biedt Azure service-principals.
Een Azure-service-principal is een identiteit die is gemaakt voor gebruik met toepassingen, gehoste services en geautomatiseerde hulpprogramma's voor toegang tot Azure-resources. Deze toegang wordt beperkt door de rollen die zijn toegewezen aan de service-principal, zodat u bepaalt welke resources toegankelijk zijn en op welk niveau. Om veiligheidsredenen wordt het altijd aanbevolen om service-principals te gebruiken met geautomatiseerde hulpprogramma's in plaats van hen toe te staan zich aan te melden met een gebruikersidentiteit.
In dit artikel vindt u de stappen voor het maken, ophalen van informatie over en het opnieuw instellen van een service-principal met Azure PowerShell.
Waarschuwing
Wanneer u een service-principal maakt met de opdracht New-AzADServicePrincipal , bevat de uitvoer referenties die u moet beveiligen. Als alternatief kunt u overwegen beheerde identiteiten te gebruiken om te voorkomen dat u referenties hoeft te gebruiken.
Vereiste voorwaarden
- Als u ervoor kiest om Azure PowerShell lokaal te gebruiken:
- Installeer de Az PowerShell-module.
- Maak verbinding met uw Azure-account met de cmdlet Connect-AzAccount.
- Als u ervoor kiest om Azure Cloud Shell te gebruiken:
- Raadpleeg Overzicht van Azure Cloud Shell voor meer informatie.
Een service-principal maken
Maak een service-principal met de cmdlet New-AzADServicePrincipal . Wanneer u een service-principal maakt, kiest u het type aanmeldingsverificatie dat wordt gebruikt.
Belangrijk
Vanaf Az PowerShell-module versie 7.x wijst New-AzADServicePrincipal standaard de rol Inzender niet meer toe aan de service-principal. Zie Stappen voor het toevoegen van een roltoewijzing als u een specifieke rol aan een service-principal wilt toewijzen.
Opmerking
Als uw account niet gemachtigd is om een service-principal te maken, retourneert New-AzADServicePrincipal een foutbericht met de melding "Onvoldoende bevoegdheden om de bewerking te voltooien". Neem contact op met uw Microsoft Entra-beheerder om een service-principal te maken.
In een Microsoft Entra ID-directory waarin gebruikersinstelling Gebruikers kunnen toepassingen registreren is ingesteld op Nee, moet u lid zijn van een van de volgende ingebouwde rollen van Microsoft Entra ID (die de actie hebben: microsoft.directory/applications/createAsOwner of microsoft.directory/applications/create):
- Toepassingsontwikkelaar
- Toepassingsbeheerder
- Cloudtoepassingsbeheerder
- Algemene beheerder
- hybride identiteitsbeheerder
Zie Beperken wie toepassingen kan maken voor meer informatie over gebruikersinstellingen in Microsoft Entra ID.
Er zijn twee typen verificatie beschikbaar voor service-principals: verificatie op basis van wachtwoorden en verificatie op basis van certificaten.
Verificatie op basis van een wachtwoord
Belangrijk
De standaardrol voor een verificatieservice-principal op basis van een wachtwoord is Inzender. Deze rol heeft volledige machtigingen voor lezen en schrijven naar een Azure-account. Zie Rollen voor service-principals beheren voor meer informatie over het beheren van roltoewijzingen.
Zonder andere verificatieparameters wordt verificatie op basis van wachtwoorden gebruikt en wordt er een willekeurig wachtwoord voor u gemaakt. Als u verificatie op basis van wachtwoorden wilt, wordt deze methode aanbevolen.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Het geretourneerde object bevat de PasswordCredentials.SecretText eigenschap met het gegenereerde wachtwoord. Zorg ervoor dat u deze waarde ergens veilig opslaat om te verifiëren met de service-principal. De waarde wordt niet weergegeven in de console-uitvoer. Als u het wachtwoord kwijtraakt, stelt u de referenties van de service-principal opnieuw in.
Met de volgende code kunt u het geheim exporteren:
$sp.PasswordCredentials.SecretText
Het object dat wordt geretourneerd uit New-AzADServicePrincipal bevat de Id en DisplayName leden, die beide kunnen worden gebruikt voor aanmelding met de service-principal.
Belangrijk
Aanmelden met een service-principal vereist de tenant-id waaronder de service-principal is gemaakt. Als u de actieve tenant wilt ophalen wanneer de service-principal is gemaakt, voert u de volgende opdracht uit direct na het maken van de service-principal:
(Get-AzContext).Tenant.Id
Verificatie op basis van certificaat
Belangrijk
Er is geen standaardrol toegewezen bij het maken van een service-principal voor verificatie op basis van certificaten. Zie Rollen voor service-principals beheren voor meer informatie over het beheren van roltoewijzingen.
Service-principals die gebruikmaken van verificatie op basis van certificaten, worden gemaakt met de CertValue parameter. Deze parameter gebruikt een base64-gecodeerde ASCII-tekenreeks van het openbare certificaat. Dit wordt vertegenwoordigd door een PEM-bestand of een met tekst gecodeerde CRT of CER. Binaire coderingen van het openbare certificaat worden niet ondersteund. In deze instructies wordt ervan uitgegaan dat u al een certificaat hebt.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
Het object dat wordt geretourneerd uit New-AzADServicePrincipal bevat de Id en DisplayName eigenschappen, die kunnen worden gebruikt voor aanmelding met de service-principal. Clients die zich aanmelden met de service-principal hebben ook toegang nodig tot de persoonlijke sleutel van het certificaat.
Belangrijk
Aanmelden met een service-principal vereist de tenant-id waaronder de service-principal is gemaakt. Als u de actieve tenant wilt ophalen wanneer de service-principal is gemaakt, voert u de volgende opdracht uit direct na het maken van de service-principal:
(Get-AzContext).Tenant.Id
Een bestaande service-principal ophalen
Een lijst met service-principals voor de actieve tenant kan worden opgehaald met Get-AzADServicePrincipal. Deze opdracht retourneert standaard alle service-principals in een tenant. Voor grote organisaties kan het lang duren voordat resultaten worden geretourneerd. In plaats daarvan wordt het gebruik van een van de optionele filterargumenten aan de serverzijde aanbevolen:
-
DisplayNameBeginsWithvraagt service-principals aan die een voorvoegsel hebben dat overeenkomt met de opgegeven waarde. De weergavenaam van een service-principal is de waarde die is ingesteldDisplayNametijdens het maken. -
DisplayNamevraagt een exacte overeenkomst aan van een service-principal-naam.
Service-principalrollen beheren
Azure PowerShell heeft de volgende cmdlets voor het beheren van roltoewijzingen:
Zie RBAC: Ingebouwde rollen voor meer informatie over Role-Based Access Control (RBAC).
In het volgende voorbeeld wordt de rol Lezer toegevoegd en wordt de rol Inzender verwijderd:
New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'
Belangrijk
Cmdlets voor roltoewijzing nemen de object-id van de service-principal niet op. Ze nemen de bijbehorende toepassings-id op, die tijdens het maken wordt gegenereerd. Als u de toepassings-id voor een service-principal wilt ophalen, gebruikt u Get-AzADServicePrincipal.
Opmerking
Als uw account niet gemachtigd is om een rol toe te wijzen, ziet u een foutbericht dat uw account geen autorisatie heeft om de actie 'Microsoft.Authorization/roleAssignments/write' uit te voeren. Neem contact op met uw Microsoft Entra-beheerder om rollen te beheren.
Als u een rol toevoegt, worden eerder toegewezen machtigingen niet beperkt. Wanneer u de machtigingen van een service-principal beperkt, moet de rol Inzender worden verwijderd.
De wijzigingen kunnen worden geverifieerd door de toegewezen rollen weer te geven:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Aanmelden met een service-principal
Test de referenties en machtigingen van de nieuwe service-principal door u aan te melden. Als u zich wilt aanmelden met een service-principal, hebt u de applicationId waarde nodig die eraan is gekoppeld en de tenant waarvoor deze is gemaakt.
Aanmelden met een service-principal met behulp van een wachtwoord:
# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>
Verificatie op basis van certificaten vereist dat Azure PowerShell informatie kan ophalen uit een lokaal certificaatarchief op basis van een vingerafdruk van een certificaat.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
Zie Verificatie op basis van certificaten voor instructies voor het importeren van een certificaat in een referentiearchief dat toegankelijk is voor PowerShell
Referenties opnieuw instellen
Als u de referenties voor een service-principal vergeet, gebruikt u New-AzADSpCredential om een nieuwe referentie met een willekeurig wachtwoord toe te voegen. Deze cmdlet biedt geen ondersteuning voor door de gebruiker gedefinieerde referenties bij het opnieuw instellen van het wachtwoord.
Belangrijk
Voordat u nieuwe referenties toewijst, wilt u mogelijk bestaande referenties verwijderen om te voorkomen dat u zich met deze referenties aanmeldt. Gebruik hiervoor de cmdlet Remove-AzADSpCredential :
Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName
Probleemoplossingsproces
Als u de fout 'New-AzADServicePrincipal: Een ander object met dezelfde waarde voor eigenschap-idUris bestaat al', controleert u of er nog geen service-principal met dezelfde naam bestaat.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Als de bestaande service-principal niet meer nodig is, kunt u deze verwijderen met behulp van het volgende voorbeeld.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
Deze fout kan ook optreden wanneer u eerder een service-principal hebt gemaakt voor een Azure Active Directory-toepassing. Als u de service-principal verwijdert, is de toepassing nog steeds beschikbaar. Deze toepassing voorkomt dat u een andere service-principal met dezelfde naam maakt.
U kunt het volgende voorbeeld gebruiken om te controleren of er geen Microsoft Entra-toepassing met dezelfde naam bestaat:
Get-AzADApplication -DisplayName ServicePrincipalName
Als een toepassing met dezelfde naam bestaat en niet meer nodig is, kan deze worden verwijderd met behulp van het volgende voorbeeld.
Remove-AzADApplication -DisplayName ServicePrincipalName
Kies anders een alternatieve naam voor de nieuwe service-principal die u probeert te maken.
Azure PowerShell