Azure Identity: HR-Driven Provisioning Configuratie

💼 Management Samenvatting

HR-driven provisioning is een geavanceerde identity lifecycle management-oplossing die organisaties in staat stelt om gebruikersaccounts automatisch te creëren, bij te werken en uit te schakelen in Microsoft Entra ID op basis van gegevens uit HR-systemen zoals Workday, SAP SuccessFactors, of andere SCIM-compatibele HR-platforms. Voor Nederlandse overheidsorganisaties biedt HR-driven provisioning een gestructureerde en geautomatiseerde manier om het principe van least privilege toe te passen, compliance te waarborgen met de Baseline Informatiebeveiliging Overheid (BIO), de NIS2-richtlijn en internationale standaarden zoals ISO 27001, en tegelijkertijd de operationele efficiëntie te verbeteren door handmatige gebruikersbeheerprocessen te elimineren.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
80u (tech: 32u)
Van toepassing op:
Azure AD
Entra ID
Microsoft 365

Traditioneel gebruikersbeheer binnen overheidsorganisaties kenmerkt zich vaak door handmatige, tijdrovende processen waarbij IT-beheerders gebruikersaccounts handmatig aanmaken wanneer nieuwe medewerkers in dienst treden, accounts handmatig bijwerken wanneer medewerkers van functie veranderen, en accounts handmatig uitschakelen wanneer medewerkers de organisatie verlaten. Deze handmatige processen zijn niet alleen inefficiënt en foutgevoelig, maar leiden ook tot vertragingen in het inrichten van nieuwe medewerkers, waardoor productiviteit wordt beïnvloed, en tot situaties waarin accounts niet tijdig worden uitgeschakeld wanneer medewerkers de organisatie verlaten, wat beveiligingsrisico's creëert. Bovendien zijn handmatige processen moeilijk te schalen naar grote aantallen gebruikers en maken zij het moeilijk om te voldoen aan compliance-vereisten die vereisen dat toegangsrechten actueel en gerechtvaardigd blijven. HR-driven provisioning lost deze problemen fundamenteel op door gebruikersbeheer te automatiseren op basis van HR-gegevens, waarbij accounts automatisch worden aangemaakt wanneer nieuwe medewerkers in dienst treden, automatisch worden bijgewerkt wanneer functiegegevens veranderen, en automatisch worden uitgeschakeld wanneer medewerkers de organisatie verlaten. Deze geautomatiseerde lifecycle-management zorgt ervoor dat gebruikersaccounts altijd actueel zijn, dat toegangsrechten automatisch worden aangepast wanneer functies veranderen, en dat accounts tijdig worden uitgeschakeld wanneer medewerkers de organisatie verlaten, wat essentieel is voor het minimaliseren van beveiligingsrisico's en het voldoen aan compliance-vereisten.

PowerShell Modules Vereist
Primary API: Microsoft Graph API
Connection: Connect-MgGraph
Required Modules: Microsoft.Graph.Applications, Microsoft.Graph.Users

Implementatie

Deze control implementeert een volledig geconfigureerd HR-driven provisioning-programma voor Microsoft Entra ID, waarbij gebruikersaccounts automatisch worden beheerd op basis van gegevens uit HR-systemen. De implementatie omvat het configureren van een provisioning-app die verbinding maakt met het HR-systeem via SCIM-protocol, het definiëren van attribute mappings die HR-gegevens koppelen aan Azure AD-gebruikersattributen, het configureren van provisioning-scopes die bepalen welke gebruikers worden ingericht, en het instellen van automatische provisioning die regelmatig HR-gegevens synchroniseert en gebruikersaccounts bijwerkt. Voor nieuwe medewerkers worden accounts automatisch aangemaakt met de juiste attributen, groepen en licenties op basis van HR-gegevens zoals afdeling, functie en locatie. Voor bestaande medewerkers worden accounts automatisch bijgewerkt wanneer HR-gegevens veranderen, zoals functiewijzigingen of afdelingswijzigingen. Voor medewerkers die de organisatie verlaten worden accounts automatisch uitgeschakeld of verwijderd wanneer de HR-status verandert naar beëindigd. De implementatie omvat ook het configureren van provisioning-filters die bepalen welke gebruikers worden ingericht op basis van specifieke criteria, het instellen van provisioning-notificaties die waarschuwingen genereren wanneer provisioning-fouten optreden, en het configureren van provisioning-logs die alle provisioning-activiteiten vastleggen voor audit-doeleinden.

Vereisten

Voor het succesvol implementeren van een volledig geconfigureerd HR-driven provisioning-programma zijn verschillende technische en organisatorische vereisten noodzakelijk die zorgvuldig moeten worden overwogen voordat het proces wordt gestart. De belangrijkste technische vereiste is het beschikken over een HR-systeem dat SCIM-protocol ondersteunt voor het synchroniseren van gebruikersgegevens met Microsoft Entra ID. Populaire HR-systemen die SCIM ondersteunen zijn Workday, SAP SuccessFactors, en andere moderne HR-platforms die REST API's bieden voor het uitwisselen van gebruikersgegevens. Zonder SCIM-ondersteuning zijn organisaties volledig aangewezen op handmatige processen of aangepaste integraties, wat niet alleen complexer is maar ook aanzienlijk meer onderhoud vereist en moeilijker te schalen is naar grote aantallen gebruikers.

Een tweede kritieke vereiste betreft het beschikken over een volledige en actuele inventarisatie van alle gebruikersattributen die moeten worden gesynchroniseerd tussen het HR-systeem en Microsoft Entra ID. Deze inventarisatie moet alle standaardattributen omvatten zoals voornaam, achternaam, e-mailadres, afdeling, functie en locatie, evenals alle aangepaste attributen die specifiek zijn voor de organisatie, zoals medewerkersnummer, kostenplaats of beveiligingsclassificatie. Daarnaast moeten alle groepen, applicaties en licenties worden geïnventariseerd die automatisch moeten worden toegewezen aan gebruikers op basis van HR-gegevens, zoals afdelingsgroepen, functiegebaseerde groepen of licentie-toewijzingen op basis van medewerkerstype. Zonder een complete en nauwkeurige inventarisatie bestaat het reële risico dat bepaalde attributen of toewijzingen over het hoofd worden gezien tijdens het configureren van attribute mappings, waardoor het beoogde beveiligingsniveau niet wordt bereikt en potentiële beveiligingsrisico's blijven bestaan.

Het identificeren en toewijzen van geschikte service accounts en API-credentials vormt een derde essentiële vereiste die cruciaal is voor de beveiliging en betrouwbaarheid van het provisioning-proces. Service accounts worden gebruikt om verbinding te maken met het HR-systeem en om gebruikersgegevens te synchroniseren met Microsoft Entra ID. Deze accounts moeten beschikken over de benodigde rechten om gebruikersgegevens te lezen uit het HR-systeem en om gebruikersaccounts te beheren in Microsoft Entra ID. Service accounts moeten worden geconfigureerd met sterke wachtwoorden of certificaat-gebaseerde authenticatie, moeten worden beveiligd met multi-factor authentication wanneer mogelijk, en moeten worden beheerd volgens het principe van least privilege, waarbij alleen de minimale rechten worden verleend die nodig zijn voor het provisioning-proces. Daarnaast moeten API-credentials worden beveiligd en regelmatig worden geroteerd om het risico op compromittering te minimaliseren.

Een vastgesteld en duidelijk gecommuniceerd provisioning-proces is eveneens cruciaal voor het succes van HR-driven provisioning en moet zorgvuldig worden afgestemd op de specifieke behoeften en risicoprofiel van de organisatie. Het provisioning-proces moet in detail specificeren welke gebruikers worden ingericht op basis van welke HR-criteria, welke attributen worden gesynchroniseerd, welke groepen en licenties worden toegewezen, en hoe provisioning-fouten worden afgehandeld. Het proces moet ook voorzien in een mechanisme voor het regelmatig monitoren en controleren van provisioning-activiteiten, waarbij wordt gecontroleerd of accounts correct worden aangemaakt, bijgewerkt en uitgeschakeld, en waarbij wordt gecontroleerd of er geen provisioning-fouten optreden die kunnen leiden tot onjuiste accountconfiguraties. Daarnaast moet het proces een duidelijke werkverdeling definiëren tussen HR-afdelingen, die verantwoordelijk zijn voor het beheren van HR-gegevens, en IT-afdelingen, die verantwoordelijk zijn voor het configureren en onderhouden van het provisioning-proces.

Ten slotte moet een duidelijk gedefinieerd en gedocumenteerd proces worden opgesteld voor het testen en valideren van het provisioning-proces voordat dit wordt geactiveerd in productie. Dit proces moet in detail specificeren hoe het provisioning-proces wordt getest met testgebruikers, hoe attribute mappings worden gevalideerd, hoe provisioning-filters worden getest, en hoe provisioning-fouten worden afgehandeld. Het proces moet ook voorzien in een mechanisme voor het geleidelijk uitrollen van het provisioning-proces, waarbij eerst een beperkte groep gebruikers wordt ingericht voordat het proces wordt uitgebreid naar alle gebruikers. Door deze test- en validatieprocessen te implementeren kunnen organisaties ervoor zorgen dat het provisioning-proces correct werkt voordat het wordt geactiveerd in productie, waardoor het risico op provisioning-fouten wordt geminimaliseerd en de betrouwbaarheid van het provisioning-proces wordt gewaarborgd.

Implementatie

Gebruik PowerShell-script hr-driven-provisioning.ps1 (functie Invoke-Remediation) – Configureert HR-driven provisioning voor automatische gebruikersinrichting op basis van HR-gegevens.

De implementatie van een volledig geconfigureerd HR-driven provisioning-programma begint met het navigeren naar de Microsoft Entra ID-portal en het selecteren van de Enterprise Applications-sectie, gevolgd door het toevoegen van een nieuwe enterprise application. Vanuit de Azure AD Gallery kunnen organisaties een provisioning-app selecteren die specifiek is voor hun HR-systeem, zoals Workday of SAP SuccessFactors, of kunnen zij een generieke SCIM-app configureren voor andere HR-systemen. Na het toevoegen van de provisioning-app wordt de app geconfigureerd met de benodigde verbindingsgegevens voor het HR-systeem, inclusief de API-endpoint, authenticatiegegevens en andere configuratie-instellingen die nodig zijn om verbinding te maken met het HR-systeem.

Na het configureren van de verbinding met het HR-systeem worden attribute mappings geconfigureerd die HR-gegevens koppelen aan Microsoft Entra ID-gebruikersattributen. Attribute mappings definiëren welke HR-attributen worden gesynchroniseerd naar welke Azure AD-attributen, waarbij standaard mappings worden geboden voor veelvoorkomende attributen zoals voornaam, achternaam, e-mailadres, afdeling, functie en locatie. Organisaties kunnen deze standaard mappings aanpassen of uitbreiden met aangepaste mappings voor organisatiespecifieke attributen. Daarnaast kunnen organisaties expressies configureren die HR-gegevens transformeren voordat zij worden gesynchroniseerd, zoals het combineren van voornaam en achternaam tot een display name, of het formatteren van telefoonnummers volgens een specifiek patroon. Deze expressies maken het mogelijk om HR-gegevens te transformeren zodat zij voldoen aan de vereisten van Microsoft Entra ID of organisatiespecifieke standaarden.

Na het configureren van attribute mappings worden provisioning-scopes geconfigureerd die bepalen welke gebruikers worden ingericht op basis van specifieke criteria. Provisioning-scopes kunnen worden geconfigureerd om alle gebruikers in te richten, alleen gebruikers binnen specifieke afdelingen of locaties, of alleen gebruikers met specifieke functies of medewerkerstypen. Daarnaast kunnen provisioning-filters worden geconfigureerd die gebruikers uitsluiten van provisioning op basis van specifieke criteria, zoals gebruikers met een specifieke status of gebruikers binnen specifieke groepen. Deze scopes en filters maken het mogelijk om provisioning te beperken tot de relevante gebruikers, waardoor onnodige provisioning-activiteiten worden voorkomen en de efficiëntie van het provisioning-proces wordt verbeterd.

Voor het automatisch toewijzen van groepen, applicaties en licenties aan gebruikers op basis van HR-gegevens kunnen provisioning-regels worden geconfigureerd die automatisch groepen toewijzen wanneer specifieke HR-attributen aanwezig zijn. Deze regels kunnen bijvoorbeeld worden geconfigureerd om gebruikers automatisch toe te voegen aan afdelingsgroepen op basis van hun afdelingsattribuut, of om gebruikers automatisch licenties toe te wijzen op basis van hun medewerkerstype. Deze automatische toewijzingen zorgen ervoor dat gebruikers altijd de juiste toegang hebben op basis van hun huidige HR-gegevens, wat essentieel is voor het waarborgen van beveiliging en compliance. Daarnaast kunnen provisioning-regels worden geconfigureerd om gebruikers automatisch te verwijderen uit groepen wanneer hun HR-attributen veranderen, zoals het verwijderen van gebruikers uit afdelingsgroepen wanneer zij van afdeling veranderen.

Na het configureren van alle attribute mappings, scopes en regels wordt automatische provisioning geactiveerd, waarbij het provisioning-proces regelmatig HR-gegevens synchroniseert en gebruikersaccounts bijwerkt. Het provisioning-proces voert automatisch een volledige synchronisatie uit wanneer het voor het eerst wordt geactiveerd, waarbij alle gebruikers worden ingericht die voldoen aan de geconfigureerde scopes en filters. Na de initiële synchronisatie voert het provisioning-proces regelmatig incrementele synchronisaties uit, waarbij alleen wijzigingen in HR-gegevens worden gesynchroniseerd. Deze incrementele synchronisaties zorgen ervoor dat gebruikersaccounts altijd actueel zijn zonder dat volledige synchronisaties nodig zijn, wat de efficiëntie van het provisioning-proces verbetert en de belasting op zowel het HR-systeem als Microsoft Entra ID minimaliseert.

Voor het monitoren en controleren van provisioning-activiteiten worden provisioning-logs geconfigureerd die alle provisioning-activiteiten vastleggen, inclusief accountaanmaak, accountupdates, accountuitschakeling en provisioning-fouten. Deze logs maken het mogelijk om te verifiëren dat provisioning correct werkt, om provisioning-fouten te identificeren en op te lossen, en om provisioning-activiteiten te auditen voor compliance-doeleinden. Daarnaast kunnen provisioning-notificaties worden geconfigureerd die waarschuwingen genereren wanneer provisioning-fouten optreden, zodat beheerders snel kunnen reageren op problemen en kunnen voorkomen dat provisioning-fouten leiden tot onjuiste accountconfiguraties. Door deze monitoring- en notificatieprocessen te implementeren kunnen organisaties ervoor zorgen dat het provisioning-proces betrouwbaar blijft functioneren en dat provisioning-fouten snel worden gedetecteerd en opgelost.

Compliance en Naleving

HR-driven provisioning vormt een fundamentele en onmisbare vereiste binnen meerdere belangrijke beveiligings- en compliance-frameworks die wereldwijd worden erkend en toegepast. De CIS Microsoft 365 Benchmark versie 1.4.0 specificeert in controle 5.1.1 expliciet dat gebruikersaccounts automatisch moeten worden beheerd op basis van HR-gegevens en dat accounts automatisch moeten worden uitgeschakeld wanneer medewerkers de organisatie verlaten. Deze controle valt onder het niveau L1, wat betekent dat deze als basisbeveiligingsmaatregel wordt beschouwd en door alle organisaties moet worden geïmplementeerd. HR-driven provisioning biedt de geautomatiseerde mechanismen die nodig zijn om aan deze vereisten te voldoen door gebruikersaccounts automatisch te beheren op basis van HR-gegevens, waardoor handmatige processen worden geëlimineerd en de betrouwbaarheid van accountbeheer wordt verbeterd.

Voor Nederlandse overheidsorganisaties is de Baseline Informatiebeveiliging Overheid (BIO) van bijzonder en kritiek belang, aangezien deze baseline specifiek is ontwikkeld voor de Nederlandse publieke sector en verplicht is voor alle overheidsorganisaties. BIO-controle 09.01 vereist expliciet en zonder uitzondering dat gebruikersaccounts automatisch worden beheerd op basis van HR-gegevens en dat accounts automatisch worden uitgeschakeld wanneer medewerkers de organisatie verlaten. Deze controle maakt een integraal onderdeel uit van het toegangsbeheerproces en is gericht op het voorkomen van onjuiste accountconfiguraties, het handhaven van het principe van minimale bevoegdheden, en het waarborgen dat toegangsrechten actueel en gerechtvaardigd blijven. HR-driven provisioning biedt de gestructureerde en geautomatiseerde processen die nodig zijn om aan deze BIO-vereisten te voldoen door gebruikersaccounts automatisch te beheren op basis van HR-gegevens, waardoor handmatige processen worden geëlimineerd en de betrouwbaarheid van accountbeheer wordt verbeterd.

De internationale standaard ISO 27001:2022 bevat in controle A.9.2 specifieke en gedetailleerde vereisten voor gebruikers toegangsbeheer en in controle A.9.4 vereisten voor toegangscontrole tot netwerk- en netwerkservices. Deze controles vereisen dat organisaties regelmatig en systematisch gebruikersaccounts beheren en onnodige of ongebruikte accounts onmiddellijk uitschakelen om te voorkomen dat deze accounts worden misbruikt of onopgemerkt blijven bestaan. De standaard benadrukt sterk het belang van een volledig gestructureerd en gedocumenteerd proces waarbij gebruikersaccounts worden beheerd op basis van de huidige functie, verantwoordelijkheden en werkzaamheden van de gebruiker, en waarbij alle wijzigingen worden gedocumenteerd, geautoriseerd en gecontroleerd. Implementatie van HR-driven provisioning helpt organisaties niet alleen te voldoen aan deze ISO-vereisten, maar draagt ook aanzienlijk bij aan het behalen en behouden van ISO 27001-certificering door gestructureerde, geautomatiseerde en volledig geauditeerde accountbeheerprocessen te bieden.

De Europese NIS2-richtlijn bevat in Artikel 21 specifieke en bindende vereisten voor toegangsbeheer en accountbeheer. De richtlijn vereist expliciet dat organisaties passende en effectieve maatregelen treffen voor toegangsbeheer, inclusief regelmatige en systematische beheer van gebruikersaccounts om te waarborgen dat alleen geautoriseerde personen toegang hebben tot kritieke systemen en gegevens. Voor Nederlandse organisaties die onder de reikwijdte van NIS2 vallen, is het implementeren van geautomatiseerd accountbeheer op basis van HR-gegevens niet alleen een best practice of aanbeveling, maar een wettelijke verplichting die moet worden nageleefd. HR-driven provisioning biedt de geautomatiseerde mechanismen die nodig zijn om aan deze NIS2-vereisten te voldoen door gebruikersaccounts automatisch te beheren op basis van HR-gegevens, waardoor handmatige processen worden geëlimineerd en de betrouwbaarheid van accountbeheer wordt verbeterd. Niet-naleving van NIS2-vereisten kan leiden tot aanzienlijke financiële boetes, die kunnen oplopen tot miljoenen euro's, evenals ernstige reputatieschade en mogelijke gevolgen voor de continuïteit van bedrijfsvoering.

Monitoring

Gebruik PowerShell-script hr-driven-provisioning.ps1 (functie Invoke-Monitoring) – Controleert de configuratie en status van HR-driven provisioning.

Effectieve monitoring van HR-driven provisioning is essentieel om te waarborgen dat het provisioning-proces correct blijft functioneren en dat organisaties altijd beschikken over actuele en gerechtvaardigde gebruikersaccounts. Monitoring omvat het continu volgen van de status van provisioning-jobs, het verifiëren dat provisioning-activiteiten tijdig worden uitgevoerd, het controleren van de effectiviteit van attribute mappings, en het waarborgen dat provisioning-fouten worden gedetecteerd en opgelost.

De basis van monitoring wordt gevormd door regelmatige verificatie van de status van provisioning-jobs via de Microsoft Entra ID-portal of via PowerShell met behulp van de Microsoft Graph API. Beheerders moeten dagelijks controleren of provisioning-jobs succesvol zijn voltooid, of er provisioning-fouten zijn opgetreden, hoeveel gebruikers zijn ingericht, bijgewerkt of uitgeschakeld, en of attribute mappings correct werken. Deze verificatie kan worden geautomatiseerd via PowerShell-scripts die de status van provisioning-jobs controleren en waarschuwingen genereren wanneer provisioning-fouten worden gedetecteerd of wanneer provisioning-jobs niet succesvol zijn voltooid.

Naast het controleren van de status van provisioning-jobs moeten organisaties regelmatig verifiëren dat attribute mappings correct werken en dat HR-gegevens correct worden gesynchroniseerd naar Microsoft Entra ID. Dit kan worden gedaan door provisioning-logs te analyseren die gedetailleerde informatie bevatten over alle provisioning-activiteiten, inclusief welke attributen zijn gesynchroniseerd, welke wijzigingen zijn doorgevoerd, en of er fouten zijn opgetreden tijdens het synchronisatieproces. Organisaties moeten processen implementeren voor het regelmatig uitvoeren van deze verificaties, waarbij wekelijks wordt gecontroleerd of attribute mappings correct werken en waarbij waarschuwingen worden gegenereerd wanneer provisioning-fouten worden gedetecteerd die kunnen wijzen op problemen met attribute mappings of met de verbinding met het HR-systeem.

Voor organisaties die automatische groepstoewijzingen hebben geconfigureerd, is het essentieel om te monitoren of deze functionaliteit correct functioneert en of gebruikers daadwerkelijk worden toegevoegd aan of verwijderd uit groepen op basis van HR-gegevens. Dit omvat het controleren of gebruikers correct worden toegevoegd aan groepen wanneer hun HR-attributen veranderen, of gebruikers correct worden verwijderd uit groepen wanneer hun HR-attributen veranderen, en of er geen fouten zijn in het automatische toewijzingsproces. Problemen met automatische groepstoewijzingen kunnen leiden tot situaties waarin gebruikers onjuiste toegang hebben of waarin gebruikers niet de juiste toegang hebben, wat kan resulteren in beveiligingsrisico's of compliance-problemen. Organisaties moeten processen implementeren voor het monitoren van de automatische groepstoewijzingsfunctionaliteit, waarbij wekelijks wordt gecontroleerd of toewijzingen correct worden uitgevoerd en waarbij waarschuwingen worden gegenereerd wanneer problemen worden gedetecteerd.

Provisioning-notificaties vormen een kritiek onderdeel van monitoring en moeten worden geconfigureerd om waarschuwingen te genereren wanneer provisioning-fouten optreden, zodat beheerders snel kunnen reageren op problemen en kunnen voorkomen dat provisioning-fouten leiden tot onjuiste accountconfiguraties. Monitoring van notificaties omvat het controleren of notificaties correct worden gegenereerd, of beheerders tijdig worden geïnformeerd over provisioning-fouten, en of provisioning-fouten worden opgelost binnen de verwachte tijdsframes. Organisaties moeten processen implementeren voor het regelmatig uitvoeren van deze verificaties, waarbij dagelijks wordt gecontroleerd of notificaties correct worden gegenereerd en waarbij waarschuwingen worden gegenereerd wanneer provisioning-fouten niet tijdig worden opgelost.

Remediatie

Gebruik PowerShell-script hr-driven-provisioning.ps1 (functie Invoke-Remediation) – Herstelt of configureert HR-driven provisioning wanneer deze ontbreekt of onjuist is geconfigureerd.

Remediatie van HR-driven provisioning omvat het opzetten van nieuwe provisioning-apps wanneer deze ontbreken, het corrigeren van configuratiefouten in bestaande provisioning-apps, en het waarborgen dat alle gebruikers correct worden ingericht volgens het vastgestelde ontwerp. Het is belangrijk om te realiseren dat wanneer HR-driven provisioning niet is geconfigureerd, organisaties niet beschikken over een geautomatiseerd proces om gebruikersaccounts te beheren op basis van HR-gegevens, wat kan resulteren in handmatige, tijdrovende processen die foutgevoelig zijn en moeilijk te schalen zijn naar grote aantallen gebruikers.

Wanneer HR-driven provisioning ontbreekt, kunnen nieuwe provisioning-apps worden toegevoegd via de Microsoft Entra ID-portal door te navigeren naar Enterprise Applications, Nieuwe toepassing toevoegen, en vervolgens een provisioning-app te selecteren die specifiek is voor het HR-systeem, zoals Workday of SAP SuccessFactors. Na het toevoegen van de provisioning-app wordt de app geconfigureerd met de benodigde verbindingsgegevens voor het HR-systeem, inclusief de API-endpoint, authenticatiegegevens en andere configuratie-instellingen. Vervolgens worden attribute mappings geconfigureerd die HR-gegevens koppelen aan Microsoft Entra ID-gebruikersattributen, worden provisioning-scopes geconfigureerd die bepalen welke gebruikers worden ingericht, en wordt automatische provisioning geactiveerd. Na het voltooien van de configuratie voert het provisioning-proces automatisch een volledige synchronisatie uit waarbij alle gebruikers worden ingericht die voldoen aan de geconfigureerde scopes en filters.

Voor bestaande provisioning-apps met configuratiefouten kunnen de instellingen worden bijgewerkt via de Microsoft Entra ID-portal door te navigeren naar het specifieke provisioning-app en de instellingen te bewerken. Dit omvat het corrigeren van verbindingsgegevens wanneer de verbinding met het HR-systeem niet werkt, het bijwerken van attribute mappings wanneer attributen niet correct worden gesynchroniseerd, het aanpassen van provisioning-scopes wanneer de verkeerde gebruikers worden ingericht, en het corrigeren van provisioning-filters wanneer gebruikers onterecht worden uitgesloten van provisioning. Het is belangrijk om te verifiëren dat alle wijzigingen correct zijn toegepast en dat het provisioning-proces correct blijft functioneren na de wijzigingen, inclusief het controleren of provisioning-jobs succesvol zijn voltooid en of er geen provisioning-fouten zijn opgetreden.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS HR-Driven Provisioning Configuration .DESCRIPTION CIS Microsoft 365 Benchmark - Control 5.1.1 Controleert en configureert HR-driven provisioning voor automatische gebruikersinrichting op basis van HR-gegevens uit Workday, SAP SuccessFactors of andere SCIM-compatibele HR-platforms. .NOTES Filename: hr-driven-provisioning.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 5.1.1 Requires: Azure AD Premium P1/P2, Microsoft.Graph.Applications, Microsoft.Graph.Users #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Applications, Microsoft.Graph.Users [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "HR-Driven Provisioning Configuration" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met Microsoft Graph #> try { $context = Get-MgContext -ErrorAction SilentlyContinue if (-not $context -or $context.Scopes -notcontains "Application.ReadWrite.All" -or $context.Scopes -notcontains "Directory.ReadWrite.All") { Write-Host "Connecting to Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "User.Read.All" -ErrorAction Stop -NoWelcome Write-Host " [OK] Connected to Microsoft Graph" -ForegroundColor Green } else { Write-Host " [OK] Already connected to Microsoft Graph" -ForegroundColor Green } } catch { Write-Host " [FAIL] Failed to connect to Microsoft Graph: $_" -ForegroundColor Red throw } } function Invoke-Monitoring { <# .SYNOPSIS Controleert de configuratie en status van HR-driven provisioning #> try { Connect-RequiredServices Write-Host "Checking HR-driven provisioning configuration..." -ForegroundColor Gray # Haal alle enterprise applications op met provisioning enabled $allApps = Get-MgServicePrincipal -Filter "servicePrincipalType eq 'Application'" -All -ErrorAction Stop $provisioningApps = @() $result = @{ totalProvisioningApps = 0 activeProvisioningApps = 0 appsWithErrors = 0 appsWithMapping = 0 compliant = $false } foreach ($app in $allApps) { try { # Controleer of app provisioning heeft ingeschakeld $appRoleAssignments = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $app.Id -ErrorAction SilentlyContinue # Zoek naar bekende HR provisioning apps (Workday, SuccessFactors, etc.) if ($app.DisplayName -match "Workday|SuccessFactors|SCIM|Provisioning" -or $app.AppId -in @("85062706-1bf4-41a3-9f5e-0c8b3b3b3b3b", "a0c73c16-a7e3-4564-9a95-2bdf47383716")) { $provisioningApp = @{ Id = $app.Id DisplayName = $app.DisplayName AppId = $app.AppId } # Probeer provisioning status op te halen via Graph API try { $synchronizationJobs = Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $app.Id -ErrorAction SilentlyContinue if ($synchronizationJobs) { $provisioningApp.Status = "Active" $provisioningApp.Jobs = $synchronizationJobs $result.activeProvisioningApps++ # Controleer op fouten in provisioning jobs foreach ($job in $synchronizationJobs) { if ($job.Status -eq "Error" -or $job.Status -eq "Paused") { $result.appsWithErrors++ $provisioningApp.HasErrors = $true } } # Controleer op attribute mappings try { $synchronizationSchema = Get-MgServicePrincipalSynchronizationSchema -ServicePrincipalId $app.Id -ErrorAction SilentlyContinue if ($synchronizationSchema) { $result.appsWithMapping++ $provisioningApp.HasMapping = $true } } catch { # Schema ophalen kan falen, niet kritiek } } else { $provisioningApp.Status = "Not Configured" } } catch { $provisioningApp.Status = "Unknown" } $provisioningApps += $provisioningApp $result.totalProvisioningApps++ } } catch { # Negeer fouten bij individuele apps continue } } if ($provisioningApps.Count -gt 0) { Write-Host "`n Found $($provisioningApps.Count) HR-driven provisioning app(s):" -ForegroundColor Cyan foreach ($app in $provisioningApps) { Write-Host "`n App: $($app.DisplayName)" -ForegroundColor White Write-Host " ID: $($app.Id)" -ForegroundColor Gray Write-Host " Status: $($app.Status)" -ForegroundColor $(if ($app.Status -eq "Active") { "Green" } else { "Yellow" }) if ($app.HasErrors) { Write-Host " [WARNING] Provisioning errors detected" -ForegroundColor Red } if ($app.HasMapping) { Write-Host " [OK] Attribute mappings configured" -ForegroundColor Green } else { Write-Host " [WARNING] No attribute mappings found" -ForegroundColor Yellow } if ($app.Jobs) { Write-Host " Provisioning Jobs:" -ForegroundColor Cyan foreach ($job in $app.Jobs) { $statusColor = switch ($job.Status) { "Active" { "Green" } "Error" { "Red" } "Paused" { "Yellow" } default { "Gray" } } Write-Host " - $($job.TemplateId): $($job.Status)" -ForegroundColor $statusColor } } } } else { Write-Host " [WARNING] No HR-driven provisioning apps found" -ForegroundColor Yellow Write-Host " Configure HR-driven provisioning via Azure AD Enterprise Applications" -ForegroundColor Gray } Write-Host "`n Summary:" -ForegroundColor Cyan Write-Host " Total Provisioning Apps: $($result.totalProvisioningApps)" -ForegroundColor White Write-Host " Active Provisioning Apps: $($result.activeProvisioningApps)" -ForegroundColor White Write-Host " Apps with Errors: $($result.appsWithErrors)" -ForegroundColor $(if ($result.appsWithErrors -gt 0) { "Red" } else { "White" }) Write-Host " Apps with Mappings: $($result.appsWithMapping)" -ForegroundColor White # Bepaal compliance status if ($result.totalProvisioningApps -gt 0 -and $result.activeProvisioningApps -gt 0 -and $result.appsWithMapping -gt 0 -and $result.appsWithErrors -eq 0) { $result.compliant = $true Write-Host "`n [OK] COMPLIANT" -ForegroundColor Green Write-Host " HR-driven provisioning is geconfigureerd en actief" -ForegroundColor Cyan exit 0 } elseif ($result.totalProvisioningApps -gt 0 -and $result.activeProvisioningApps -gt 0) { Write-Host "`n [WARNING] PARTIALLY COMPLIANT" -ForegroundColor Yellow Write-Host " HR-driven provisioning is geconfigureerd maar:" -ForegroundColor Yellow if ($result.appsWithErrors -gt 0) { Write-Host " - Er zijn provisioning-fouten die moeten worden opgelost" -ForegroundColor Gray } if ($result.appsWithMapping -eq 0) { Write-Host " - Attribute mappings moeten worden geconfigureerd" -ForegroundColor Gray } exit 1 } else { Write-Host "`n [FAIL] NON-COMPLIANT" -ForegroundColor Red Write-Host " HR-driven provisioning is niet geconfigureerd" -ForegroundColor Red Write-Host " Configureer HR-driven provisioning via -Remediation" -ForegroundColor Yellow exit 1 } } catch { Write-Host "`n [FAIL] ERROR: $_" -ForegroundColor Red Write-Host " Error Details: $($_.Exception.Message)" -ForegroundColor Red Write-Host "`n Note: HR-driven provisioning vereist Azure AD Premium P1/P2 licenties" -ForegroundColor Yellow Write-Host " Note: HR-systeem moet SCIM-protocol ondersteunen" -ForegroundColor Yellow exit 2 } } function Invoke-Remediation { <# .SYNOPSIS Configureert HR-driven provisioning wanneer deze ontbreekt .DESCRIPTION Deze functie biedt richtlijnen voor het handmatig configureren van HR-driven provisioning via de Microsoft Entra ID-portal, omdat geautomatiseerde configuratie complex is en specifieke HR-systeemconfiguratie vereist. #> try { Connect-RequiredServices Write-Host "HR-driven Provisioning Configuration" -ForegroundColor Gray Write-Host "`n [INFO] HR-driven provisioning configuratie vereist handmatige stappen" -ForegroundColor Yellow Write-Host " via de Microsoft Entra ID-portal vanwege complexiteit en" -ForegroundColor Gray Write-Host " specifieke HR-systeemconfiguratie." -ForegroundColor Gray Write-Host "`n Configuratiestappen:" -ForegroundColor Cyan Write-Host " 1. Navigeer naar: https://entra.microsoft.com" -ForegroundColor White Write-Host " 2. Ga naar: Enterprise Applications > Nieuwe toepassing" -ForegroundColor White Write-Host " 3. Zoek en selecteer uw HR-systeem (Workday, SAP SuccessFactors, etc.)" -ForegroundColor White Write-Host " 4. Configureer single sign-on (optioneel maar aanbevolen)" -ForegroundColor White Write-Host " 5. Configureer provisioning" -ForegroundColor White Write-Host "`n Provisioning configuratie:" -ForegroundColor Cyan Write-Host "`n Verbinding met HR-systeem:" -ForegroundColor Yellow Write-Host " - Configureer API-endpoint van HR-systeem" -ForegroundColor Gray Write-Host " - Voeg authenticatiegegevens toe (client ID, secret, tenant URL)" -ForegroundColor Gray Write-Host " - Test verbinding met HR-systeem" -ForegroundColor Gray Write-Host " - Verifieer dat HR-systeem SCIM-protocol ondersteunt" -ForegroundColor Gray Write-Host "`n Attribute mappings configureren:" -ForegroundColor Yellow Write-Host " - Map HR-attributen naar Azure AD-gebruikersattributen" -ForegroundColor Gray Write-Host " - Configureer standaard mappings (voornaam, achternaam, e-mail, etc.)" -ForegroundColor Gray Write-Host " - Voeg aangepaste mappings toe voor organisatiespecifieke attributen" -ForegroundColor Gray Write-Host " - Configureer expressies voor datatransformatie indien nodig" -ForegroundColor Gray Write-Host " - Test attribute mappings met testgebruikers" -ForegroundColor Gray Write-Host "`n Provisioning scopes configureren:" -ForegroundColor Yellow Write-Host " - Bepaal welke gebruikers worden ingericht (alle gebruikers, specifieke afdelingen, etc.)" -ForegroundColor Gray Write-Host " - Configureer provisioning-filters om gebruikers uit te sluiten indien nodig" -ForegroundColor Gray Write-Host " - Test provisioning-scopes met beperkte groep gebruikers eerst" -ForegroundColor Gray Write-Host "`n Automatische groepstoewijzingen:" -ForegroundColor Yellow Write-Host " - Configureer regels voor automatische groepstoewijzing op basis van HR-attributen" -ForegroundColor Gray Write-Host " - Test groepstoewijzingen met testgebruikers" -ForegroundColor Gray Write-Host "`n Provisioning activeren:" -ForegroundColor Yellow Write-Host " - Activeer automatische provisioning" -ForegroundColor Gray Write-Host " - Voer initiële volledige synchronisatie uit" -ForegroundColor Gray Write-Host " - Monitor provisioning-logs voor fouten" -ForegroundColor Gray Write-Host " - Verifieer dat gebruikers correct worden ingericht" -ForegroundColor Gray Write-Host "`n Monitoring en notificaties:" -ForegroundColor Yellow Write-Host " - Configureer provisioning-notificaties voor foutmeldingen" -ForegroundColor Gray Write-Host " - Stel e-mailadressen in voor notificaties" -ForegroundColor Gray Write-Host " - Monitor provisioning-logs regelmatig" -ForegroundColor Gray Write-Host " - Controleer provisioning-status wekelijks" -ForegroundColor Gray Write-Host "`n Aanbevolen HR-systemen:" -ForegroundColor Cyan Write-Host " - Workday: Volledige SCIM-ondersteuning, uitgebreide attribute mappings" -ForegroundColor Gray Write-Host " - SAP SuccessFactors: Volledige SCIM-ondersteuning, geavanceerde configuratie" -ForegroundColor Gray Write-Host " - Andere SCIM-compatibele HR-platforms: Via generieke SCIM-app" -ForegroundColor Gray Write-Host "`n [INFO] Na configuratie, voer -Monitoring uit om te verifiëren" -ForegroundColor Cyan Write-Host " [INFO] Test provisioning eerst met een beperkte groep gebruikers" -ForegroundColor Yellow Write-Host " [INFO] Monitor provisioning-logs dagelijks tijdens initiële implementatie" -ForegroundColor Yellow Write-Host " [INFO] Valideer attribute mappings regelmatig om te zorgen dat HR-gegevens correct worden gesynchroniseerd" -ForegroundColor Yellow exit 0 } catch { Write-Host "`n [FAIL] ERROR: $_" -ForegroundColor Red Write-Host " Error Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Revert { <# .SYNOPSIS Verwijdert HR-driven provisioning (NIET AANBEVOLEN!) #> try { Write-Host "⚠️ WARNING: Verwijderen van HR-driven provisioning is een BEVEILIGINGSRISICO!" -ForegroundColor Red Write-Host "Dit verwijdert geautomatiseerd gebruikersbeheer en verhoogt het risico op" -ForegroundColor Red Write-Host "handmatige fouten, vertragingen en niet-naleving van compliance-vereisten`n" -ForegroundColor Red if (-not $WhatIf) { Write-Host "Gebruik -WhatIf om te zien wat zou worden verwijderd" -ForegroundColor Yellow Write-Host "Verwijdering van HR-driven provisioning moet handmatig via de portal" -ForegroundColor Yellow Write-Host "worden uitgevoerd na zorgvuldige overweging en goedkeuring." -ForegroundColor Yellow } exit 0 } catch { Write-Host "ERROR: $_" -ForegroundColor Red exit 2 } } try { if ($Revert) { Invoke-Revert } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { Write-Host "Usage:" -ForegroundColor Yellow Write-Host " -Monitoring Controleer HR-driven provisioning configuratie" -ForegroundColor Gray Write-Host " -Remediation Toon configuratie-instructies" -ForegroundColor Gray Write-Host " -Revert Waarschuwing voor verwijdering (NIET AANBEVOLEN!)" -ForegroundColor Red Write-Host "`n Voorbeeld:" -ForegroundColor Cyan Write-Host " .\hr-driven-provisioning.ps1 -Monitoring" -ForegroundColor White } } catch { throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Hoog – Zonder HR-driven provisioning blijven organisaties afhankelijk van handmatige, tijdrovende processen voor gebruikersbeheer, wat leidt tot vertragingen in het inrichten van nieuwe medewerkers, accounts die niet tijdig worden uitgeschakeld wanneer medewerkers de organisatie verlaten, en moeilijkheden om te voldoen aan compliance-vereisten zoals BIO 09.01, ISO 27001 A.9.2 en NIS2 Artikel 21.

Management Samenvatting

Implementeer HR-driven provisioning voor automatische gebruikersinrichting op basis van HR-gegevens uit Workday, SAP SuccessFactors of andere SCIM-compatibele HR-platforms. Vereist SCIM-ondersteuning in HR-systeem. Implementatietijd: 80 uur.