Azure Identity Governance: Fundamenten En Best Practices Voor Nederlandse Overheidsorganisaties

💼 Management Samenvatting

Azure Identity Governance vormt de hoeksteen van moderne beveiligingsarchitecturen voor Nederlandse overheidsorganisaties door het beheren van identiteiten, toegangsrechten en bevoorrechte accounts gedurende de gehele levenscyclus. In een tijd waarin identiteiten het nieuwe aanvalsoppervlak zijn geworden en traditionele netwerkperimeters zijn verdwenen, biedt een volwassen identity governance-raamwerk de fundamentele controles die nodig zijn om toegang te beheren, misbruik te detecteren en compliance te waarborgen.

Aanbeveling
IMPLEMENTEER IDENTITY GOVERNANCE
Risico zonder
Critical
Risk Score
10/10
Implementatie
200u (tech: 80u)
Van toepassing op:
Azure AD
Entra ID
Microsoft 365
Alle Cloud Applicaties

Zonder een volwassen identity governance-raamwerk lopen Nederlandse overheidsorganisaties ernstige risico's op beveiligingsincidenten, datalekken en non-compliance. Traditionele benaderingen waarbij toegang permanent wordt toegewezen en niet wordt gecontroleerd, creëren permanente aanvalsoppervlakken die 24/7 beschikbaar zijn voor misbruik. Gebruikers behouden toegangsrechten zelfs wanneer zij van functie wisselen of de organisatie verlaten, wat leidt tot overmatige toegang en het risico op insider threats. Bevoorrechte accounts met permanente rechten vormen een bijzonder hoog risico: wanneer een beheerdersaccount wordt gecompromitteerd, heeft een aanvaller onmiddellijk onbeperkte toegang tot kritieke systemen en gevoelige gegevens. Bovendien ontbreekt accountability over wanneer toegang daadwerkelijk wordt gebruikt, waardoor het moeilijk wordt om misbruik te detecteren of te voorkomen. Zonder identity governance kunnen organisaties niet aantonen dat zij voldoen aan wettelijke vereisten zoals de BIO, NIS2 en ISO 27001, wat kan leiden tot boetes, reputatieschade en verlies van vertrouwen van burgers en toezichthouders.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, Azure AD API
Connection: Connect-MgGraph, Connect-AzAccount
Required Modules: Microsoft.Graph.Identity.Governance, Microsoft.Graph.Identity.SignIns, Az.Accounts, Az.Resources

Implementatie

Dit artikel biedt een uitgebreide inleiding tot Azure Identity Governance voor Nederlandse overheidsorganisaties. We behandelen de fundamenten van identity governance, waaronder het beheren van identiteiten gedurende de gehele levenscyclus, het implementeren van least-privilege toegangsbeheer, het beheren van bevoorrechte toegang via Privileged Identity Management, het afdwingen van meervoudige authenticatie via Conditional Access, en het uitvoeren van periodieke toegangsbeoordelingen. Het artikel beschrijft hoe deze componenten samenwerken om een volwassen identity governance-raamwerk te vormen dat organisaties helpt om toegang te beheren, risico's te minimaliseren en compliance te waarborgen. Daarnaast biedt het artikel praktische richtlijnen voor het implementeren van identity governance in Azure-omgevingen, inclusief best practices, compliance-overwegingen en monitoringstrategieën.

Fundamenten van Identity Governance

Identity Governance is een breed concept dat alle activiteiten omvat die gericht zijn op het beheren van identiteiten, toegangsrechten en bevoorrechte accounts gedurende de gehele levenscyclus. In tegenstelling tot traditionele identity management-benaderingen die zich primair richten op het toewijzen en intrekken van toegang, omvat identity governance een complete levenscyclusbenadering waarbij identiteiten worden beheerd vanaf het moment dat een medewerker in dienst treedt tot het moment dat zij de organisatie verlaten, inclusief wijzigingen in verantwoordelijkheden, tijdelijke projecttoewijzingen en escalaties voor specifieke taken. Voor Nederlandse overheidsorganisaties is identity governance niet alleen een best practice, maar een essentiële beveiligingsmaatregel die direct bijdraagt aan compliance met de Baseline Informatiebeveiliging Overheid (BIO), de NIS2-richtlijn en internationale standaarden zoals ISO 27001.

Het concept van identity governance is gebaseerd op verschillende fundamentele principes die samenwerken om een veilige en gecontroleerde toegangsomgeving te creëren. Het principe van least privilege stelt dat gebruikers alleen de minimale rechten moeten krijgen die zij nodig hebben om hun werkzaamheden uit te voeren, en niet meer. Dit principe reduceert het aanvalsoppervlak door ervoor te zorgen dat gebruikers geen onnodige toegang hebben tot gevoelige systemen of gegevens. Het principe van separation of duties zorgt ervoor dat kritieke taken worden verdeeld over meerdere personen, zodat geen enkele persoon volledige controle heeft over een proces. Het principe van time-limited access stelt dat toegang alleen wordt verleend voor de duur die noodzakelijk is voor specifieke taken, en automatisch wordt ingetrokken wanneer deze niet meer nodig is. Het principe van accountability vereist dat alle toegangsactiviteiten worden geauditeerd en gemonitord, zodat misbruik kan worden gedetecteerd en voorkomen.

Identity governance omvat verschillende belangrijke componenten die elk een specifieke rol spelen in het beheren van toegang. Identity lifecycle management beheert de volledige levenscyclus van gebruikersaccounts, van onboarding tot offboarding, inclusief wijzigingen in verantwoordelijkheden en functies. Access management beheert de toewijzing en intrekking van toegangsrechten op basis van rollen, functies en projecten. Privileged access management beheert bevoorrechte accounts die uitgebreide rechten hebben om systemen te configureren, gegevens te wijzigen en toegang te beheren. Access reviews voeren periodieke controles uit om te verifiëren dat toegangsrechten nog steeds gerechtvaardigd zijn en om ongebruikte of ongerechtvaardigde toegang te identificeren en te verwijderen. Compliance en auditing monitoren en rapporteren over toegangsactiviteiten om te waarborgen dat organisaties voldoen aan wettelijke en normatieve vereisten.

Voor Nederlandse overheidsorganisaties biedt identity governance belangrijke compliance-voordelen omdat het direct bijdraagt aan het voldoen aan verschillende wettelijke en normatieve vereisten. De BIO vereist bijvoorbeeld time-limited privileged access waarbij bevoorrechte toegang alleen wordt verleend voor de duur die noodzakelijk is voor specifieke taken, wat precies is wat identity governance implementeert. De NIS2-richtlijn vereist passende technische en organisatorische maatregelen voor cybersecurity-risicobeheer, waarbij identity governance een belangrijke technische maatregel is. ISO 27001 bevat controles voor toegangsrechtenbeheer en privileged access management die direct worden geadresseerd door identity governance-implementaties. Door identity governance te implementeren kunnen organisaties niet alleen hun beveiligingspostuur verbeteren, maar ook aantoonbaar voldoen aan deze compliance-vereisten tijdens audits en assessments.

Azure Identity Governance Componenten

Azure biedt een uitgebreide set services en functionaliteiten die samenwerken om een volwassen identity governance-raamwerk te vormen. Deze componenten zijn geïntegreerd in Azure Active Directory (nu Entra ID) en Microsoft 365, en bieden organisaties de tools die zij nodig hebben om toegang te beheren, risico's te minimaliseren en compliance te waarborgen. Elke component heeft een specifieke rol en functie, en samen vormen zij een complete identity governance-oplossing die organisaties helpt om hun beveiligingsdoelstellingen te bereiken.

Conditional Access vormt de kern van moderne identity governance door dynamische toegangsbeslissingen te maken op basis van gebruikerscontext, apparaatstatus, locatie en risico-evaluatie. In tegenstelling tot statische toegangscontroles die altijd dezelfde regels toepassen, evalueert Conditional Access elke toegangspoging in real-time en past beveiligingsvereisten aan op basis van de specifieke context van de toegangspoging. Conditional Access-beleidsregels kunnen bijvoorbeeld vereisen dat gebruikers meervoudige authenticatie gebruiken bij toegang vanaf onbekende locaties, dat alleen beheerde en compliant apparaten toegang krijgen tot gevoelige applicaties, of dat gebruikers met verhoogd risico extra verificatie moeten ondergaan. Deze dynamische benadering zorgt ervoor dat beveiliging wordt afgestemd op het daadwerkelijke risico, terwijl de gebruikerservaring wordt geoptimaliseerd voor legitieme gebruikers.

Privileged Identity Management (PIM) is een essentiële component van identity governance die specifiek gericht is op het beheren van de meest risicovolle vorm van toegang: bevoorrechte accounts die uitgebreide rechten hebben om systemen te configureren, gegevens te wijzigen en toegang te beheren. PIM transformeert traditionele benaderingen waarbij bevoorrechte toegang permanent wordt toegewezen door het principe van just-in-time toegang te implementeren, waarbij bevoorrechte rechten alleen worden verleend wanneer dit daadwerkelijk noodzakelijk is voor het uitvoeren van specifieke taken. Deze transformatie reduceert het blootstellingsvenster van 365 dagen per jaar naar slechts de uren waarin bevoorrechte toegang actief wordt gebruikt, wat typisch resulteert in een reductie van meer dan 99 procent van het blootstellingsvenster. Bovendien introduceert PIM meerdere beveiligingslagen die traditionele permanente toewijzingen niet bieden: elke activering vereist meervoudige authenticatie om de identiteit te verifiëren, een schriftelijke rechtvaardiging om de context te begrijpen, en vaak goedkeuring van een derde partij om het risico te beoordelen.

Entitlement Management biedt organisaties de mogelijkheid om toegangsbeheer te delegeren aan business owners en proceseigenaren, terwijl centrale controle en governance worden behouden. Met Entitlement Management kunnen organisaties toegangspakketten definiëren die specifieke toegangsrechten bevatten voor specifieke resources, applicaties of rollen. Gebruikers kunnen vervolgens toegang aanvragen via een self-service portal, waarbij business owners of managers de aanvragen kunnen goedkeuren of afwijzen. Deze benadering zorgt ervoor dat toegang wordt beheerd door de personen die het beste weten wie toegang nodig heeft, terwijl centrale governance en compliance worden gewaarborgd. Entitlement Management ondersteunt ook automatische toegangsbeoordelingen, waarbij periodiek wordt gecontroleerd of toegang nog steeds gerechtvaardigd is en automatisch wordt ingetrokken wanneer dit niet meer het geval is.

Access Reviews vormen een kritieke component van identity governance door periodiek te controleren of toegangsrechten nog steeds gerechtvaardigd zijn en door ongebruikte of ongerechtvaardigde toegang te identificeren en te verwijderen. Access Reviews kunnen worden uitgevoerd voor verschillende typen toegang, waaronder groepslidmaatschappen, applicatietoegang, Azure AD-rollen en Azure-resource rollen. Tijdens een access review worden reviewers (zoals managers, business owners of het beveiligingsteam) gevraagd om te bevestigen of gebruikers nog steeds toegang nodig hebben, of om toegang te verwijderen wanneer dit niet meer gerechtvaardigd is. Access Reviews kunnen worden geautomatiseerd om regelmatig plaats te vinden, en kunnen worden geconfigureerd om automatisch toegang in te trekken wanneer reviewers niet reageren of wanneer toegang expliciet wordt afgewezen. Deze benadering zorgt ervoor dat toegangsrechten actueel blijven en dat ongebruikte of ongerechtvaardigde toegang wordt verwijderd, wat het aanvalsoppervlak reduceert en compliance verbetert.

Implementatie van Identity Governance

De implementatie van een volwassen identity governance-raamwerk vereist een gestructureerde en gefaseerde aanpak die zorgvuldige planning, uitgebreid testen en een geleidelijke rollout combineert om risico's voor operationele continuïteit te minimaliseren. Deze methodiek zorgt ervoor dat eventuele problemen tijdig worden geïdentificeerd en opgelost voordat de volledige implementatie wordt voltooid, waardoor organisaties kunnen profiteren van de beveiligingsvoordelen zonder onnodige verstoringen in hun dagelijkse operaties. De implementatie bestaat uit meerdere opeenvolgende fasen die elk specifieke doelen hebben en die moeten worden voltooid voordat de volgende fase kan beginnen.

De eerste fase betreft de discovery en inventarisatie, waarin alle huidige toegangstoewijzingen worden geëxporteerd, geanalyseerd en gecategoriseerd. Deze fase vormt de fundamentele basis voor alle verdere beslissingen en moet daarom uiterst grondig worden uitgevoerd. Voor Azure AD-rollen begint de fase met het uitvoeren van PowerShell-opdrachten zoals Get-MgDirectoryRoleMember om een volledig en accuraat overzicht te verkrijgen van alle huidige roltoewijzingen. Voor Azure-resources worden opdrachten zoals Get-AzRoleAssignment gebruikt om toewijzingen op abonnementsniveau, resourcegroepniveau en individuele resource-niveau te identificeren. De focus ligt primair op het identificeren van permanente bevoorrechte toewijzingen, met name voor rollen zoals Globale beheerder, Beveiligingsbeheerder, Owner, Contributor en User Access Administrator, omdat deze rollen de hoogste impact hebben op beveiliging en operationele continuïteit. Deze toewijzingen moeten worden gecategoriseerd op basis van verschillende criteria, waaronder de frequentie waarmee de rol daadwerkelijk wordt gebruikt, de kritiekheid van de resources waartoe toegang wordt verleend, en de vraag of de gebruiker de bevoorrechte rechten werkelijk nodig heeft voor zijn dagelijkse werkzaamheden.

De tweede fase omvat de technische configuratie van identity governance-componenten, waarbij alle benodigde instellingen worden geconfigureerd volgens de beveiligingsvereisten en best practices. Voor Conditional Access begint deze fase met het inschakelen van Conditional Access in de Entra ID-portal en het configureren van basisbeleidsregels zoals universele MFA-vereisten, blokkering van legacy authenticatie, en apparaatcompliance-vereisten. Voor Privileged Identity Management wordt PIM ingeschakeld voor zowel Azure AD-rollen als Azure-resources, waarbij rolinstellingen worden geconfigureerd met specifieke beveiligingsvereisten die zijn afgestemd op het risico en de impact van elke rol. Voor Entitlement Management worden toegangspakketten gedefinieerd die specifieke toegangsrechten bevatten voor specifieke resources, applicaties of rollen, en worden goedkeuringsworkflows geconfigureerd. Voor Access Reviews worden periodieke reviews geconfigureerd voor verschillende typen toegang, waarbij reviewers worden aangewezen en automatische intrekking wordt geconfigureerd.

Gebruik PowerShell-script index.ps1 (functie Invoke-Monitoring) – Controleert de identity governance-configuratie en identificeert hiaten in toegangsbeheer, privileged access management en compliance..

De derde fase betreft een pilot-implementatie met een beperkte maar representatieve groep gebruikers die fungeert als testgroep voor het nieuwe identity governance-systeem. Deze pilotgroep moet zorgvuldig worden samengesteld en moet bestaan uit gebruikers die representatief zijn voor de volledige gebruikerspopulatie in termen van functie, verantwoordelijkheden en frequentie van toegang. De pilotgroep moet gebruikers bevatten die regelmatig bevoorrechte toegang nodig hebben, zodat zij het nieuwe activeringsproces kunnen testen onder realistische omstandigheden. Hun permanente toewijzingen moeten worden omgezet naar geschikte toewijzingen in PIM, waarbij zij de nieuwe activeringsworkflow moeten testen en feedback moeten geven over hun ervaringen. Tijdens de pilot moeten gebruikers worden getraind in het activeringsproces, inclusief hoe zij rollen aanvragen via de Azure Portal of Microsoft 365-beheercentrum, hoe zij rechtvaardigingen invullen die duidelijk uitleggen waarom zij bevoorrechte toegang nodig hebben, en hoe zij omgaan met goedkeuringsworkflows wanneer goedkeuring vereist is. Het is cruciaal om tijdens deze fase te monitoren op technische problemen, gebruikerservaring-uitdagingen en configuratiefouten. Alle geïdentificeerde problemen moeten worden gedocumenteerd en opgelost voordat de volledige rollout plaatsvindt.

De vierde fase omvat de volledige rollout naar alle gebruikers, waarbij het identity governance-systeem wordt uitgerold naar de gehele organisatie. Tijdens deze fase moeten alle bevoorrechte toewijzingen systematisch worden omgezet naar geschikte toewijzingen in PIM, waarbij elke conversie zorgvuldig wordt uitgevoerd om ervoor te zorgen dat gebruikers nog steeds toegang hebben tot de resources die zij nodig hebben, maar nu via het nieuwe activeringsproces. Permanente toewijzingen moeten worden verwijderd met uitzondering van break-glass accounts die zijn aangewezen voor noodsituaties waarbij onmiddellijke toegang vereist is zonder te wachten op goedkeuring. Deze break-glass accounts moeten echter uiterst beperkt zijn, moeten worden beschermd met extra beveiligingsmaatregelen zoals hardware security keys, en moeten regelmatig worden geauditeerd om te controleren of zij daadwerkelijk alleen in noodsituaties worden gebruikt. De activatieprocedure moet uitgebreid worden gecommuniceerd naar alle beheerders, inclusief duidelijke stapsgewijze instructies met screenshots die visueel laten zien hoe zij rollen kunnen activeren. Een self-service handleiding moet worden aangeboden die gebruikers kunnen raadplegen wanneer zij bevoorrechte toegang nodig hebben, waarbij veelgestelde vragen en troubleshooting-informatie worden opgenomen.

Monitoring, Governance en Continue Verbetering

Continue monitoring en alerting zijn essentieel voor het waarborgen van de effectiviteit van identity governance en voor het detecteren van beveiligingsincidenten, misbruik en compliance-afwijkingen. Identity governance-waarschuwingen moeten worden geconfigureerd voor kritieke gebeurtenissen die onmiddellijke aandacht vereisen, zoals activeringen van de Globale beheerder-rol of Azure Owner-rol die de hoogste privileges bieden en daarom het grootste risico vormen. Deze waarschuwingen moeten onmiddellijk worden gemeld aan het beveiligingsteam via e-mail, SMS of een geïntegreerd security operations center systeem, zodat zij direct kunnen reageren op verdachte activiteiten. Mislukte activeringspogingen moeten ook worden gecontroleerd en geauditeerd omdat deze kunnen wijzen op privilege escalation pogingen door externe aanvallers die proberen toegang te krijgen tot bevoorrechte accounts, of door interne dreigingen die proberen hun rechten te escaleren zonder autorisatie.

Wekelijkse reviews moeten worden uitgevoerd waarbij wordt geanalyseerd wie welke rollen heeft geactiveerd, waarom deze activeringen plaatsvonden op basis van ingediende rechtvaardigingen, en of er patronen zijn die wijzen op ongebruikelijk gedrag zoals activeringen buiten normale werkuren, activeringen van meerdere rollen door dezelfde gebruiker in korte tijd, of activeringen die niet overeenkomen met de gebruikelijke werkzaamheden van de gebruiker. Deze monitoringinformatie moet worden gedocumenteerd in een gestructureerd formaat en moet worden gebruikt voor compliance-doeleinden en beveiligingsaudits, waarbij trends worden geïdentificeerd die kunnen wijzen op potentiële beveiligingsproblemen of mogelijkheden voor verbetering van het identity governance-systeem. Bovendien moeten periodieke toegangsbeoordelingen worden uitgevoerd om te controleren of geschikte toewijzingen nog steeds gerechtvaardigd zijn en om ongebruikte of ongerechtvaardigde toegang te identificeren en te verwijderen.

Governance van identity governance vereist duidelijke rollen en verantwoordelijkheden binnen de organisatie. Een identity governance-beheerder moet worden aangewezen die verantwoordelijk is voor de dagelijkse configuratie en het onderhoud van het systeem, inclusief het toewijzen van goedkeurders, het configureren van rolinstellingen en het beheren van toegangsbeoordelingen. Het beveiligingsteam moet verantwoordelijk zijn voor het monitoren van activeringen, het analyseren van patronen en het reageren op verdachte activiteiten. Management moet betrokken zijn bij het goedkeuren van activeringen voor hoog-impact rollen en bij het beoordelen van toegang tijdens periodieke reviews. Deze rollen moeten worden vastgelegd in governance-documenten en moeten worden gecommuniceerd naar alle betrokken partijen om ervoor te zorgen dat iedereen begrijpt wie verantwoordelijk is voor welke aspecten van identity governance-beheer.

Compliance en Auditing

Identity governance is essentieel voor naleving van verschillende internationale en nationale beveiligingsstandaarden en -richtlijnen die relevant zijn voor Nederlandse overheidsorganisaties. Deze control helpt organisaties te voldoen aan zowel verplichte als aanbevolen beveiligingsvereisten die zijn opgesteld door toezichthouders, standaardisatie-organisaties en brancheorganisaties. Voor Nederlandse overheidsorganisaties is compliance niet alleen een kwestie van best practices, maar vaak een wettelijke verplichting die directe gevolgen kan hebben voor de organisatie wanneer deze niet wordt nageleefd.

De BIO, oftewel Baseline Informatiebeveiliging Overheid, is de belangrijkste beveiligingsrichtlijn voor Nederlandse overheidsorganisaties en vormt de basis voor informatiebeveiliging binnen de publieke sector. Thema 09.02 betreft toegangsbeleid en vereist specifiek time-limited privileged access, waarbij bevoorrechte toegang alleen wordt verleend voor de duur die noodzakelijk is voor het uitvoeren van specifieke taken. Deze vereiste is gebaseerd op het principe van minimale rechten, waarbij gebruikers alleen de rechten krijgen die zij op dat moment nodig hebben, en niet meer. Identity governance is een directe implementatie van dit thema, omdat het permanente toegang elimineert en in plaats daarvan tijdsbeperkte activeringen implementeert met automatische intrekking na verloop van tijd.

ISO 27001:2022 bevat verschillende controles die relevant zijn voor identity governance, waaronder A.5.18 en A.9.4.3, die beide betrekking hebben op toegangsbeheer en privileged access management. Controle A.5.18 betreft toegangsrechtenmanagement en vereist dat organisaties een proces hebben voor het beheren van toegangsrechten gedurende de gehele levenscyclus van gebruikersaccounts. Controle A.9.4.3 betreft privileged access management en vereist dat organisaties het gebruik van privileged access controls beperken en controleren, waarbij zij moeten zorgen dat bevoorrechte toegang alleen wordt verleend wanneer dit noodzakelijk is en dat alle gebruik van bevoorrechte toegang wordt geauditeerd. Identity governance implementeert beide controles door het elimineren van permanente bevoorrechte toegang, het vereisen van goedkeuring voor activeringen, het implementeren van volledige auditlogging van alle privileged access activiteiten, en het automatisch intrekken van toegang na verloop van tijd.

De NIS2-richtlijn, die is geïmplementeerd in Nederlandse wetgeving via de Wet beveiliging netwerk- en informatiesystemen, bevat artikel 21 dat betrekking heeft op cybersecuritymaatregelen, waaronder privileged toegangsbeheer. Deze richtlijn is van toepassing op essentiële en belangrijke entiteiten in verschillende sectoren, waaronder de publieke sector, en vereist dat deze organisaties passende technische en organisatorische maatregelen implementeren om cybersecurity-risico's te beheren. Identity governance is een belangrijke technische maatregel die organisaties helpen te voldoen aan deze vereisten door het aanvalsoppervlak te minimaliseren, privileged access te controleren en te monitoren, en door te zorgen dat bevoorrechte toegang alleen wordt verleend wanneer dit noodzakelijk is.

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
<# .SYNOPSIS Monitoring en remediatie voor Azure Identity Governance .DESCRIPTION Controleert de identity governance-configuratie voor Azure AD-rollen en Azure-resources, identificeert hiaten in toegangsbeheer, privileged access management en compliance, en biedt handvatten voor implementatie. .NOTES Filename: index.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-27 Last Modified: 2025-01-27 Version: 1.0 Related JSON: content/azure/identity-governance/index.json .LINK https://github.com/[org]/m365-tenant-best-practise .EXAMPLE .\index.ps1 -Monitoring Toont een overzicht van identity governance-configuratie en identificeert hiaten. .EXAMPLE .\index.ps1 -Remediation Genereert een overzicht van identity governance-hiaten en biedt handvatten voor implementatie. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Identity.Governance, Microsoft.Graph.Identity.SignIns, Az.Accounts, Az.Resources [CmdletBinding()] param( [Parameter(HelpMessage = "Voer monitoring uit van de identity governance-configuratie en identificeer hiaten.")] [switch]$Monitoring, [Parameter(HelpMessage = "Genereer remediatie-overzichten en handvatten voor identity governance-implementatie.")] [switch]$Remediation, [Parameter(HelpMessage = "Toon welke acties zouden worden uitgevoerd zonder daadwerkelijk te wijzigen.")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' function Get-RepositoryRoot { <# .SYNOPSIS Bepaalt de rootmap van de repository op basis van de locatie van dit script. .OUTPUTS String met pad naar repository-root. #> [CmdletBinding()] param() $root = Resolve-Path (Join-Path $PSScriptRoot "..\..\..") -ErrorAction SilentlyContinue if (-not $root) { throw "Kon de repository-root niet bepalen op basis van PSScriptRoot: $PSScriptRoot" } return $root.Path } function Test-AzureADConnection { <# .SYNOPSIS Controleert of er een actieve Microsoft Graph-verbinding bestaat. .OUTPUTS Boolean: $true als verbonden, anders $false #> [CmdletBinding()] param() try { $context = Get-MgContext -ErrorAction Stop if ($context) { Write-Verbose "Microsoft Graph-verbinding actief: $($context.Account.Id) in tenant $($context.TenantId)" return $true } return $false } catch { Write-Verbose "Geen actieve Microsoft Graph-verbinding: $_" return $false } } function Test-AzureConnection { <# .SYNOPSIS Controleert of er een actieve Azure-verbinding bestaat. .OUTPUTS Boolean: $true als verbonden, anders $false #> [CmdletBinding()] param() try { $context = Get-AzContext -ErrorAction Stop if ($context) { Write-Verbose "Azure-verbinding actief: $($context.Account.Id) in tenant $($context.Tenant.Id)" return $true } return $false } catch { Write-Verbose "Geen actieve Azure-verbinding: $_" return $false } } function Get-IdentityGovernanceStatus { <# .SYNOPSIS Inventariseert de identity governance-configuratiestatus. .OUTPUTS PSCustomObject met identity governance-configuratiestatus. #> [CmdletBinding()] param() $mgConnected = Test-AzureADConnection $azConnected = Test-AzureConnection if (-not $mgConnected -and -not $azConnected) { Write-Warning "Geen actieve verbindingen. Verbind met Connect-MgGraph en Connect-AzAccount voor volledige identity governance-monitoring." return [pscustomobject]@{ AzureADConnected = $false AzureConnected = $false ConditionalAccessConfigured = $null PIMEnabled = $null AccessReviewsConfigured = $null PermanentRoleAssignments = 0 EligibleRoleAssignments = 0 } } $caConfigured = $null $pimEnabled = $null $accessReviewsConfigured = $null $permanentAssignments = 0 $eligibleAssignments = 0 if ($mgConnected) { try { Write-Verbose "Inventariseren van identity governance-configuratie..." # Controleer Conditional Access-beleidsregels try { $caPolicies = Get-MgIdentityConditionalAccessPolicy -ErrorAction SilentlyContinue $mfaPolicyExists = $false foreach ($policy in $caPolicies) { if ($policy.State -eq "enabled" -or $policy.State -eq "enabledForReportingButNotEnforced") { if ($policy.GrantControls -and $policy.GrantControls.BuiltInControls -contains "mfa") { if ($policy.Conditions -and $policy.Conditions.Users -and $policy.Conditions.Users.IncludeUsers -contains "All") { $mfaPolicyExists = $true } } } } $caConfigured = $mfaPolicyExists Write-Verbose "Conditional Access MFA-beleid: $caConfigured" } catch { Write-Verbose "Kon Conditional Access-beleidsregels niet ophalen: $_" } # Controleer PIM-status try { $pimRoles = Get-MgRoleManagementDirectoryRoleEligibilitySchedule -ErrorAction SilentlyContinue $eligibleAssignments = $pimRoles.Count Write-Verbose "Gevonden $eligibleAssignments geschikte roltoewijzingen via PIM" $pimEnabled = ($eligibleAssignments -gt 0) } catch { Write-Verbose "Kon PIM-roltoewijzingen niet ophalen (mogelijk PIM niet ingeschakeld): $_" $pimEnabled = $null } # Controleer permanente toewijzingen try { $directoryRoles = Get-MgDirectoryRole -ErrorAction SilentlyContinue foreach ($role in $directoryRoles) { $members = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -ErrorAction SilentlyContinue $permanentAssignments += $members.Count } Write-Verbose "Gevonden $permanentAssignments permanente roltoewijzingen" } catch { Write-Verbose "Kon directory-rollen niet ophalen: $_" } # Controleer Access Reviews try { $accessReviews = Get-MgIdentityGovernanceAccessReviewDefinition -ErrorAction SilentlyContinue $accessReviewsConfigured = ($accessReviews.Count -gt 0) Write-Verbose "Access Reviews geconfigureerd: $accessReviewsConfigured ($($accessReviews.Count) reviews)" } catch { Write-Verbose "Kon Access Reviews niet ophalen: $_" $accessReviewsConfigured = $null } } catch { Write-Warning "Fout bij inventariseren van identity governance-status: $_" } } if ($azConnected) { try { Write-Verbose "Inventariseren van Azure RBAC-roltoewijzingen..." $subscriptions = Get-AzSubscription -ErrorAction SilentlyContinue | Where-Object { $_.State -eq 'Enabled' } foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id -ErrorAction SilentlyContinue | Out-Null try { $highPrivilegeRoles = @("Owner", "User Access Administrator", "Contributor") $assignments = Get-AzRoleAssignment -ErrorAction SilentlyContinue | Where-Object { $highPrivilegeRoles -contains $_.RoleDefinitionName } foreach ($assignment in $assignments) { if ($assignment.ExpiresOn) { $eligibleAssignments++ } else { $permanentAssignments++ } } } catch { Write-Verbose "Kon roltoewijzingen niet ophalen voor subscription '$($sub.Name)': $_" } } Write-Verbose "Gevonden $permanentAssignments permanente en $eligibleAssignments geschikte Azure RBAC-toewijzingen" } catch { Write-Warning "Fout bij inventariseren van Azure RBAC-status: $_" } } return [pscustomobject]@{ AzureADConnected = $mgConnected AzureConnected = $azConnected ConditionalAccessConfigured = $caConfigured PIMEnabled = $pimEnabled AccessReviewsConfigured = $accessReviewsConfigured PermanentRoleAssignments = $permanentAssignments EligibleRoleAssignments = $eligibleAssignments } } function Invoke-Monitoring { <# .SYNOPSIS Voert monitoring uit van identity governance-configuratie en identificeert hiaten. .OUTPUTS PSCustomObject met monitoringresultaten. #> [CmdletBinding()] param() Write-Host "`nMonitoring: Azure Identity Governance" -ForegroundColor Yellow Write-Host "======================================" -ForegroundColor Yellow $igStatus = Get-IdentityGovernanceStatus if ($igStatus.AzureADConnected) { Write-Host "`nIdentity Governance-status:" -ForegroundColor Cyan Write-Host " Conditional Access MFA geconfigureerd: $($igStatus.ConditionalAccessConfigured)" -ForegroundColor $(if ($igStatus.ConditionalAccessConfigured) { "Green" } else { "Red" }) Write-Host " Privileged Identity Management ingeschakeld: $($igStatus.PIMEnabled)" -ForegroundColor $(if ($igStatus.PIMEnabled) { "Green" } elseif ($igStatus.PIMEnabled -eq $null) { "Yellow" } else { "Red" }) Write-Host " Access Reviews geconfigureerd: $($igStatus.AccessReviewsConfigured)" -ForegroundColor $(if ($igStatus.AccessReviewsConfigured) { "Green" } elseif ($igStatus.AccessReviewsConfigured -eq $null) { "Yellow" } else { "Red" }) Write-Host " Permanente roltoewijzingen: $($igStatus.PermanentRoleAssignments)" -ForegroundColor $(if ($igStatus.PermanentRoleAssignments -eq 0) { "Green" } else { "Yellow" }) Write-Host " Geschikte roltoewijzingen (PIM): $($igStatus.EligibleRoleAssignments)" -ForegroundColor Gray } else { Write-Host "`n⚠️ Geen actieve Microsoft Graph-verbinding. Verbind met Connect-MgGraph voor identity governance-monitoring." -ForegroundColor Yellow } Write-Host "`nHandmatige verificatie vereist:" -ForegroundColor Cyan Write-Host " Controleer in Entra ID portal:" -ForegroundColor Gray Write-Host " - Conditional Access > Policies (MFA-beleid voor alle gebruikers)" -ForegroundColor Gray Write-Host " - Privileged Identity Management > Azure AD roles (geschikte toewijzingen)" -ForegroundColor Gray Write-Host " - Identity Governance > Access Reviews (periodieke reviews geconfigureerd)" -ForegroundColor Gray Write-Host " - Entitlement Management > Access packages (toegangspakketten gedefinieerd)" -ForegroundColor Gray $isCompliant = $true if (-not $igStatus.ConditionalAccessConfigured) { $isCompliant = $false Write-Host "`n⚠️ Geen Conditional Access MFA-beleid gevonden dat MFA vereist voor alle gebruikers." -ForegroundColor Yellow } if (-not $igStatus.PIMEnabled) { $isCompliant = $false Write-Host "`n⚠️ Privileged Identity Management lijkt niet te zijn ingeschakeld of geconfigureerd." -ForegroundColor Yellow } if ($igStatus.PermanentRoleAssignments -gt 0) { $isCompliant = $false Write-Host "`n⚠️ Er zijn $($igStatus.PermanentRoleAssignments) permanente bevoorrechte toewijzingen gedetecteerd die moeten worden omgezet naar PIM." -ForegroundColor Yellow } if (-not $igStatus.AccessReviewsConfigured) { Write-Host "`n⚠️ Access Reviews lijken niet te zijn geconfigureerd voor periodieke toegangscontroles." -ForegroundColor Yellow } if (-not $isCompliant) { Write-Host " Gebruik -Remediation voor gedetailleerde analyse en implementatiehandvatten." -ForegroundColor Yellow } return [pscustomobject]@{ IdentityGovernanceStatus = $igStatus IsCompliant = $isCompliant } } function Invoke-Remediation { <# .SYNOPSIS Ondersteunt remediatie door identity governance-hiaten te analyseren en handvatten te bieden voor implementatie. .OUTPUTS PSCustomObject met remediatieadvies. #> [CmdletBinding()] param() Write-Host "`nRemediatie: Azure Identity Governance Implementatie" -ForegroundColor Yellow Write-Host "===================================================" -ForegroundColor Yellow $igStatus = Get-IdentityGovernanceStatus $actions = @() Write-Host "`nIdentity governance-implementatie analyse:" -ForegroundColor Cyan if (-not $igStatus.ConditionalAccessConfigured) { $action = [pscustomobject]@{ Priority = "Critical" Issue = "Geen Conditional Access MFA-beleid gevonden" Count = 0 Recommendation = "Maak een Conditional Access-beleid aan via Entra ID portal > Conditional Access > Policies > New policy. Configureer: Users: All users (exclusief break-glass accounts), Cloud apps: All cloud apps, Grant: Require multi-factor authentication." } $actions += $action Write-Host " ❌ $($action.Issue)" -ForegroundColor Red Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } if (-not $igStatus.PIMEnabled) { $action = [pscustomobject]@{ Priority = "Critical" Issue = "Privileged Identity Management niet ingeschakeld" Count = 0 Recommendation = "Schakel PIM in voor Azure AD-rollen en Azure-resources via respectievelijk Entra ID portal en Azure Portal. Converteer permanente toewijzingen naar geschikte toewijzingen." } $actions += $action Write-Host " ❌ $($action.Issue)" -ForegroundColor Red Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } if ($igStatus.PermanentRoleAssignments -gt 0) { $action = [pscustomobject]@{ Priority = "High" Issue = "Permanente bevoorrechte toewijzingen gedetecteerd" Count = $igStatus.PermanentRoleAssignments Recommendation = "Converteer permanente toewijzingen naar geschikte toewijzingen in PIM via Entra ID portal > Privileged Identity Management > Azure AD roles en Azure Portal > Privileged Identity Management > Azure resources." } $actions += $action Write-Host " ❌ $($action.Issue): $($action.Count) toewijzingen" -ForegroundColor Red Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } if (-not $igStatus.AccessReviewsConfigured) { $action = [pscustomobject]@{ Priority = "Medium" Issue = "Access Reviews niet geconfigureerd" Count = 0 Recommendation = "Configureer periodieke Access Reviews via Entra ID portal > Identity Governance > Access Reviews voor groepslidmaatschappen, applicatietoegang en Azure AD-rollen." } $actions += $action Write-Host " ⚠️ $($action.Issue)" -ForegroundColor Yellow Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } Write-Host "`nVolgende stappen:" -ForegroundColor Cyan Write-Host "1. Verifieer Azure AD Premium P1/P2 licenties voor alle gebruikers" -ForegroundColor White Write-Host "2. Configureer Conditional Access MFA-beleid voor alle gebruikers" -ForegroundColor White Write-Host "3. Schakel Privileged Identity Management in voor Azure AD-rollen en Azure-resources" -ForegroundColor White Write-Host "4. Converteer permanente toewijzingen naar geschikte toewijzingen in PIM" -ForegroundColor White Write-Host "5. Configureer Access Reviews voor periodieke toegangscontroles" -ForegroundColor White Write-Host "6. Configureer Entitlement Management voor gedelegeerd toegangsbeheer" -ForegroundColor White Write-Host "7. Stel monitoring en alerting in voor identity governance-incidenten" -ForegroundColor White Write-Host "8. Documenteer identity governance-beleid en rollen/verantwoordelijkheden" -ForegroundColor White return [pscustomobject]@{ Actions = $actions IdentityGovernanceStatus = $igStatus } } try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Azure Identity Governance Monitor" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan if ($Monitoring) { $result = Invoke-Monitoring if ($result.IsCompliant) { exit 0 } else { exit 1 } } elseif ($Remediation) { Invoke-Remediation | Out-Null } else { # Standaard: compacte identity governance check via monitoring $result = Invoke-Monitoring if ($result.IsCompliant) { Write-Host "`n✅ COMPLIANT" -ForegroundColor Green exit 0 } else { Write-Host "`n❌ NON-COMPLIANT" -ForegroundColor Red Write-Host "Run met -Monitoring voor gedetailleerde rapportage" -ForegroundColor Yellow Write-Host "Run met -Remediation voor gericht verbeteradvies" -ForegroundColor Yellow exit 1 } } } catch { Write-Error "Er is een fout opgetreden in index.ps1: $_" exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Critical: Zonder identity governance lopen organisaties ernstige risico's op beveiligingsincidenten, datalekken en non-compliance. Permanente bevoorrechte toegang betekent een permanent aanvalsoppervlak. Gebruikers behouden toegangsrechten zelfs wanneer zij van functie wisselen of de organisatie verlaten. Compliancevereisten: CIS 1.4, 1.21, BIO 9.02, ISO 27001 A.9.4.3, NIS2. Het risico is KRITIEK.

Management Samenvatting

Identity Governance: Beheer identiteiten, toegangsrechten en bevoorrechte accounts gedurende de gehele levenscyclus. Componenten: Conditional Access (MFA), Privileged Identity Management (just-in-time toegang), Entitlement Management (gedelegeerd toegangsbeheer), Access Reviews (periodieke controles). Vereist: Azure AD P1/P2. Verplicht CIS 1.4, 1.21, BIO 9.02, NIS2. Implementatie: 80 uur technisch + 120 uur organisatorisch. Reduceert aanvalsoppervlak met 99 procent.