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 krijgen. 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 om toepassingen, gehoste services en geautomatiseerde hulpprogramma's toegang te geven tot Azure-resources. Deze toegang wordt beperkt door de rol die wordt toegewezen aan de service-principal, zodat u kunt bepalen welke resources kunnen worden geopend en op welk niveau. Uit veiligheidsoverwegingen is het altijd aanbevolen om voor geautomatiseerde tools service-principals te gebruiken, in plaats van deze zich te laten aanmelden met een gebruikers-id.
Dit artikel laat u de stappen zien voor het aanmaken, verkrijgen van informatie over, en recreƫren van een service-principal met Azure PowerShell.
Waarschuwing
Wanneer u een service-principal maakt met de opdracht New-AzADServicePrincipal, bevat de uitvoer de referentiegegevens die u moet beschermen. Als alternatief kunt u overwegen beheerde identiteiten te gebruiken om te voorkomen dat u referenties moet 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 verificatie dat voor aanmelding wordt gebruikt.
Belangrijk
Vanaf Az PowerShell-module versie 7.x wijst New-AzADServicePrincipal de rol Contributor standaard 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 service-principal met verificatie op basis van een wachtwoord is Inzender. Deze rol heeft alle machtigingen om in een Azure-account te lezen en te schrijven. Zie voor informatie over het beheren van roltoewijzingen Rollen voor service-principal beheren.
Zonder verdere verificatieparameters wordt verificatie op basis van een wachtwoord gebruikt en wordt er een willekeurig wachtwoord voor u gemaakt. Als u verificatie op basis van een wachtwoord wilt gebruiken, 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 op een beveiligde plek opslaat om te verifiƫren met de service-principal. De waarde wordt niet weergegeven in de console-uitvoer. Als u het wachtwoord kwijtraakt, stel de serviceprincipalreferenties opnieuw in.
Met de volgende code kunt u het geheim exporteren:
$sp.PasswordCredentials.SecretText
Het object dat wordt geretourneerd van New-AzADServicePrincipal
bevat de leden Id
en DisplayName
, die beide kunnen worden gebruikt voor inloggen met de service-principal.
Belangrijk
Bij aanmelden met een service-principal is de tenant-ID vereist, waaronder de service-principal is aangemaakt. Voer onmiddellijk na het maken van de service-principal de volgende opdracht uit om de actieve tenant op te halen bij de aanmaak 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 met verificatie op basis van certificaten. Zie voor informatie over het beheren van roltoewijzingen Rollen voor service-principal beheren.
U kunt service-principals maken die gebruikmaken van verificatie op basis van een certificaat, met de parameter CertValue
. Deze parameter gebruikt een ASCII-tekenreeks met Base64-codering van het openbare certificaat. Deze is opgeslagen als een PEM-bestand of een tekstgecodeerd CRT- of CER-bestand. Binaire coderingen van het openbare certificaat worden niet ondersteund. Voor deze instructies wordt ervan uitgegaan dat u al over een certificaat beschikt.
$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, waarvan een van beide kan worden gebruikt voor aanmelding met de service-principal. Clients die zich met de service-principal aanmelden, moeten ook toegang hebben tot de persoonlijke sleutel van het certificaat.
Belangrijk
Bij aanmelden met een service-principal is de tenant-ID vereist, waaronder de service-principal is aangemaakt. Voer onmiddellijk na het maken van de service-principal de volgende opdracht uit om de actieve tenant op te halen bij de aanmaak van de service-principal:
(Get-AzContext).Tenant.Id
Een bestaande service-principal verkrijgen
Een lijst met service-principals voor de actieve tenant kan worden opgehaald met Get-AzADServicePrincipal. Deze opdracht retourneert standaard alle serviceprincipals in een tenant. Bij grote organisaties kan het lang duren om resultaten te retourneren. In dergelijke gevallen raden we aan een van de optionele argumenten te gebruiken om al aan de serverzijde te filteren:
- Met
DisplayNameBeginsWith
vraagt u service-principals op waarvan het voorvoegsel overeenkomt met de opgegeven waarde. De weergavenaam van een service-principal is de waarde die tijdens het aanmaken is ingesteld metDisplayName
. - Met
DisplayName
vraagt u resultaten op die exact overeenkomen met de opgegeven service-principal-naam.
Service-principal-rollen beheren
Azure PowerShell beschikt over de volgende cmdlets voor het beheren van roltoewijzingen:
- Get-AzRoleAssignment
- New-AzRoleAssignment
- Remove-AzRoleAssignment (Verwijder Az-roltoewijzing)
Zie RBAC: ingebouwde rollen voor meer informatie over rollen en op rollen gebaseerd toegangsbeheer (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 accepteren de service-principal-object-ID niet. Ze nemen de bijbehorende applicatie-ID, die bij het aanmaken wordt gegenereerd. Om de applicatie-ID voor een service-principal te verkrijgen, gebruik 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 de machtigingen van een service-principal worden beperkt, moet de rol Inzender worden verwijderd.
De wijzigingen kunnen worden geverifieerd door de toegewezen rollen in een lijst weer te geven:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Meld u aan met een service-principal
Test de referenties en machtigingen van de nieuwe service-principal door in te loggen. Om in te loggen met een service-principal, hebt u de bijbehorende applicationId
-waarde nodig en de tenant waaronder deze is aangemaakt.
Als u zich wilt aanmelden met een serviceprincipal met behulp van een wachtwoord, volgt u deze stappen:
# 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
Inloggegevens opnieuw instellen
Als u de referentiegegevens voor een service-principal bent vergeten, gebruikt u New-AzADSpCredential om nieuwe referenties toe te voegen met een willekeurig wachtwoord. Deze cmdlet biedt geen ondersteuning voor door de gebruiker gedefinieerde inloggegevens bij het wachtwoord opnieuw instellen.
Belangrijk
Voordat u nieuwe referenties toewijst, kunt u het beste bestaande referenties verwijderen om te voorkomen dat u hiermee kunt inloggen. Om dit te doen, gebruikt u 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 de eigenschap identifierUris bestaat al." ontvangt, 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 aan de hand van het volgende voorbeeld.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
Deze fout kan ook optreden als u eerder een service-principal voor een Azure Active Directory toepassing hebt gemaakt. Als u de service-principal verwijdert, is de toepassing nog steeds beschikbaar. Deze toepassing zorgt ervoor dat u geen andere service-principal met dezelfde naam kunt maken.
U kunt het volgende voorbeeld gebruiken om te controleren of er geen Microsoft Entra-toepassing met dezelfde naam bestaat:
Get-AzADApplication -DisplayName ServicePrincipalName
Als er een toepassing met dezelfde naam bestaat en niet meer nodig is, kan deze worden verwijderd aan de hand van het volgende voorbeeld.
Remove-AzADApplication -DisplayName ServicePrincipalName
Anders kunt u ervoor kiezen om de nieuwe service-principal een andere naam te geven.
Azure PowerShell