Microsoft Entra Privileged Identity Management: Just-In-Time Toegangsbeheer Voor Bevoorrechte Rollen

💼 Management Samenvatting

Microsoft Entra Privileged Identity Management (PIM) vormt de ruggengraat van modern identity governance voor Nederlandse overheidsorganisaties. Door permanente bevoorrechte toegang te elimineren en te vervangen door just-in-time, goedkeuringsgebaseerde rolactivering, minimaliseert PIM het aanvalsoppervlak drastisch en creëert het volledige accountability voor alle bevoorrechte toegang in Microsoft 365 en Azure-omgevingen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
200u (tech: 120u)
Van toepassing op:
Rijksoverheid
Gemeenten
Zorginstellingen
Onderwijs
Vitale aanbieders

Zonder Privileged Identity Management behouden gebruikers met beheerdersrollen zoals Globale beheerder, Beveiligingsbeheerder of Gebruikersbeheerder permanente toegang tot kritieke systemen en gevoelige gegevens, zelfs wanneer zij geen beheerdertaken uitvoeren. Dit creëert een permanent beschikbaar aanvalsoppervlak: als een beheerdersaccount wordt gecompromitteerd, heeft een aanvaller onmiddellijk onbeperkte toegang zonder dat dit wordt gedetecteerd of gecontroleerd. Bovendien ontbreekt accountability over wanneer beheerdersrechten daadwerkelijk worden gebruikt versus normale werkzaamheden, waardoor misbruik moeilijk te detecteren of te voorkomen is. Interne dreigingen hebben continu verhoogde toegang tot gevoelige bronnen zonder controle of rechtvaardiging. PIM lost deze fundamentele problemen op door geschikte toewijzingen te gebruiken in plaats van actieve toewijzingen, waarbij gebruikers standaard geen beheerdersrechten hebben totdat zij expliciet een activering aanvragen met rechtvaardiging en goedkeuring. Activeringen zijn strikt tijdsbeperkt en worden automatisch gedeactiveerd, goedkeuringsworkflows zorgen voor extra controlelagen, meervoudige authenticatie is verplicht bij elke activering, en real-time waarschuwingen informeren het beveiligingsteam direct over alle privileged access activiteiten.

PowerShell Modules Vereist
Primary API: Microsoft 365 Admin Center, Entra ID Portal
Connection: PowerShell, Microsoft Graph, REST API's
Required Modules: Microsoft.Graph.Identity.Governance, Microsoft.PowerShell.Management

Implementatie

Dit artikel beschrijft een praktische implementatie van Microsoft Entra Privileged Identity Management specifiek gericht op de Nederlandse publieke sector. We werken uit hoe u permanente bevoorrechte toewijzingen omzet naar geschikte toewijzingen, rolinstellingen configureert met passende beveiligingsvereisten, goedkeuringsworkflows inricht voor kritieke rollen, en monitoring en auditing inricht voor volledige accountability. Daarbij koppelen we de PIM-implementatie aan bestaande BIO- en ISO27001-structuren en compliance-eisen uit NIS2, zodat privileged access management geen losstaand traject wordt maar integraal onderdeel van identity governance en informatiebeveiliging. Het gekoppelde PowerShell-script helpt u om de PIM-configuratiestatus te controleren, permanente bevoorrechte toewijzingen te identificeren, en handvatten te bieden voor continue verbetering in lijn met de Nederlandse Baseline voor Veilige Cloud.

Kernprincipes en basis van Privileged Identity Management

Privileged Identity Management bouwt voort op het principe van least privilege en just-in-time toegang. In plaats van gebruikers permanent beheerdersrechten te verlenen, worden zij geschikt gemaakt voor bevoorrechte rollen zonder dat deze rechten actief zijn. Gebruikers kunnen een rol activeren wanneer zij deze daadwerkelijk nodig hebben voor specifieke beheertaken, waarbij activering tijdelijk is en automatisch verloopt na de aangegeven duur, typisch maximaal acht uur. Deze aanpak minimaliseert het blootstellingsvenster: beheerdersrechten zijn alleen actief wanneer dit strikt noodzakelijk is en volledig gedocumenteerd en gecontroleerd wordt.

De basis van een effectieve PIM-implementatie bestaat uit drie componenten: geschikte toewijzingen, activeringsconfiguratie en governanceprocessen. Geschikte toewijzingen betekenen dat gebruikers worden toegewezen aan bevoorrechte rollen zoals Globale beheerder of Beveiligingsbeheerder, maar zonder dat deze rollen standaard actief zijn. Zij verschijnen in de lijst van gebruikers met bevoorrechte rollen en kunnen deze activeren wanneer nodig, maar hebben geen permanente toegang tot gevoelige functies. Activeringsconfiguratie omvat de instellingen die bepalen hoe gebruikers rollen kunnen activeren: of goedkeuring vereist is, welke authenticatievereisten gelden, welke rechtvaardiging gevraagd wordt, en wat de maximale activeringsduur is. Governanceprocessen zorgen ervoor dat toegang wordt beheerd volgens beleid, dat activeringen worden gereviewed en dat misbruik wordt gedetecteerd.

Voor Nederlandse overheidsorganisaties is PIM niet alleen een technische beveiligingsmaatregel, maar een essentiële compliance-vereiste. De Baseline Informatiebeveiliging Overheid (BIO) stelt in controle 9.01 en 9.02 expliciete eisen aan toegangsbeheer en bevoorrechte toegang, waarbij het least privilege-principe centraal staat. ISO 27001 controle A.9.2.3 vereist dat het gebruik van bevoorrechte toegangsrechten wordt beperkt en gecontroleerd. NIS2 Artikel 21 schrijft voor dat essentiële en belangrijke entiteiten passende technische en organisatorische maatregelen treffen voor identiteitsbeheer en toegangscontrole. PIM voldoet aan al deze eisen door bevoorrechte toegang te beperken tot wat strikt noodzakelijk is, alle activeringen te documenteren en te controleren, en accountability te bieden voor auditdoeleinden.

Rolconfiguratie en beveiligingsinstellingen

PIM-configuratie begint bij het definiëren van welke rollen kritiek zijn en welke beveiligingsvereisten per roltype gelden. Voor Nederlandse overheidsorganisaties zijn met name de volgende rollen kritiek: Globale beheerder met volledige toegang tot alle Microsoft 365- en Azure-functies, Beveiligingsbeheerder die toegang heeft tot beveiligingsinstellingen en incidentrespons, Gebruikersbeheerder die gebruikersaccounts kan beheren, Intune-beheerder die device- en app-beleid kan configureren, en SharePoint-beheerder die toegang heeft tot alle SharePoint-sites en content. Per rol worden rolinstellingen geconfigureerd via Entra ID Portal > Privileged Identity Management > Azure AD roles, waarbij de instellingen per roltype worden aangepast op basis van risico en impact.

Voor hoog-impact rollen zoals Globale beheerder en Beveiligingsbeheerder is goedkeuring vereist door een manager of beveiligingsteam voordat de rol wordt geactiveerd. Dit voorkomt dat gebruikers zelfstandig kritieke rechten kunnen activeren zonder toezicht. De goedkeuringsworkflow zorgt ervoor dat minimaal één manager of beveiligingsspecialist elke activeringsaanvraag beoordeelt en expliciet goedkeurt voordat toegang wordt verleend. Meervoudige authenticatie is verplicht voor elke activering, ongeacht of de gebruiker al MFA heeft geregistreerd voor normale toegang. Dit zorgt ervoor dat zelfs als een account wordt gecompromitteerd, een aanvaller niet eenvoudig beheerdersrechten kan activeren zonder toegang tot de tweede authenticatiefactor. De maximale activeringsduur is vastgesteld op acht uur voor de meeste rollen, met kortere duur voor zeer kritieke rollen zoals User Access Administrator, waarbij drie uur voldoende zou moeten zijn voor de meeste beheertaken. Langere duur kan worden aangevraagd, maar vereist extra goedkeuring.

Bij elke activeringsaanvraag is een schriftelijke rechtvaardiging vereist die wordt vastgelegd in de auditlogs. De gebruiker moet uitleggen waarom hij of zij toegang nodig heeft, welke specifieke taak moet worden uitgevoerd, en waarom normale gebruikersrechten niet voldoende zijn. Deze rechtvaardiging wordt permanent opgeslagen en is beschikbaar voor auditdoeleinden, compliance-reviews en forensisch onderzoek. Naast activeringsconfiguratie worden ook waarschuwingsinstellingen geconfigureerd: het beveiligingsteam ontvangt real-time waarschuwingen wanneer kritieke rollen zoals Globale beheerder worden geactiveerd, wanneer activeringen buiten kantooruren plaatsvinden, of wanneer een gebruiker meerdere rollen tegelijkertijd activeert. Deze waarschuwingen kunnen worden geconfigureerd om e-mailnotificaties te versturen, Microsoft Teams-berichten te plaatsen, of security incident tickets te genereren in het SIEM-systeem.

Implementatie en migratie van permanente naar geschikte toewijzingen

De implementatie van PIM begint met een grondige inventarisatie van alle huidige bevoorrechte roltoewijzingen in de Entra ID-omgeving. Het PowerShell-script dat gekoppeld is aan dit artikel kan hierbij helpen door automatisch alle permanente toewijzingen te identificeren en te rapporteren. Voor elke permanente toewijzing wordt beoordeeld of deze daadwerkelijk nodig is: sommige service accounts of break-glass accounts kunnen een uitzondering vereisen, maar in de meeste gevallen kunnen permanente toewijzingen worden omgezet naar geschikte toewijzingen. De migratie verloopt stapsgewijs: eerst worden testrollen geconfigureerd met PIM om het proces te valideren, daarna worden minder kritieke rollen gemigreerd, en ten slotte worden hoog-impact rollen zoals Globale beheerder gemigreerd wanneer het team vertrouwd is geraakt met het activeringsproces.

Voor elke permanente toewijzing die wordt omgezet, worden de volgende stappen uitgevoerd: de permanente toewijzing wordt verwijderd uit Entra ID, de gebruiker wordt opnieuw toegewezen als geschikte toewijzing via Privileged Identity Management, rolinstellingen worden geconfigureerd met passende goedkeuringsvereisten en activeringsduur, en de gebruiker wordt geïnformeerd over het nieuwe proces en getraind in het activeren van rollen wanneer nodig. Tijdens de migratieperiode is het belangrijk om gebruikers voldoende tijd te geven om zich aan te passen aan het nieuwe proces, duidelijke documentatie te bieden over hoe rollen kunnen worden geactiveerd, en ondersteuning te bieden bij vragen of problemen. Het is ook raadzaam om een tijdelijke versoepeling van goedkeuringsvereisten te overwegen tijdens de eerste weken, zodat gebruikers kunnen wennen aan het activeringsproces zonder dat elke aanvraag direct wordt afgewezen.

Na de initiële migratie wordt PIM voortdurend geoptimaliseerd op basis van gebruiksstatistieken en feedback. Als gebruikers regelmatig de maximale activeringsduur overschrijden, kan dit wijzen op onrealistische duurinstellingen of op taken die langer duren dan verwacht. Als goedkeuringsworkflows te lang duren omdat goedkeurders niet tijdig reageren, kan worden overwogen om automatische goedkeuring in te stellen voor specifieke rollen met lagere risico's. Als bepaalde rollen zeer regelmatig worden geactiveerd door dezelfde gebruikers, kan worden overwogen om deze gebruikers tijdelijk een actieve toewijzing te geven voor specifieke projecten, met een duidelijke einddatum. Het doel blijft altijd om het blootstellingsvenster zo klein mogelijk te houden terwijl de productiviteit niet onnodig wordt beperkt.

PIM voor Azure-resources en RBAC-rollen

Naast Azure AD-rollen ondersteunt PIM ook just-in-time toegang voor Azure RBAC-rollen op het niveau van abonnementen, resourcegroepen en individuele resources. Dit is essentieel voor organisaties die Azure gebruiken voor hosting van applicaties, databases en andere kritieke workloads. Azure-resources worden automatisch ontdekt door PIM zodra dit is ingeschakeld voor een abonnement, waarna bevoorrechte rollen kunnen worden geconfigureerd op basis van dezelfde principes als Azure AD-rollen. Veelvoorkomende bevoorrechte Azure RBAC-rollen die via PIM worden beheerd zijn: Owner met volledige controle over alle resources in een abonnement, User Access Administrator die RBAC-toewijzingen kan beheren, Contributor die resources kan maken en beheren maar geen toegang kan verlenen, en specifieke service-rollen zoals SQL DB Contributor of Key Vault Secrets Officer.

De configuratie van PIM voor Azure-resources verloopt via Azure Portal > Privileged Identity Management > Azure resources, waarbij per abonnement of resourcegroep kan worden gekozen welke rollen beheerd worden via PIM. Voor productieabonnementen worden typisch alle bevoorrechte rollen beheerd via PIM, terwijl ontwikkel- en testabonnementen meer flexibiliteit kunnen hebben. Net als bij Azure AD-rollen worden activeringsvereisten geconfigureerd: goedkeuring voor hoog-impact rollen zoals Owner, meervoudige authenticatie voor alle activeringen, maximale activeringsduur van vier tot acht uur afhankelijk van de rol, en schriftelijke rechtvaardiging bij elke aanvraag. Voor Azure-resources is het ook mogelijk om permanente toewijzingen te behouden voor specifieke service accounts of managed identities die continue toegang nodig hebben, maar deze uitzonderingen moeten expliciet worden gedocumenteerd en gereviewed.

Een belangrijke overweging bij Azure-resources PIM is de scope van activering: gebruikers kunnen een rol activeren op het niveau van een abonnement, resourcegroep of individuele resource, afhankelijk van hun geschikte toewijzing. Bij het activeren van een rol op abonnementsniveau heeft de gebruiker toegang tot alle resources binnen dat abonnement voor de duur van de activering. Bij activering op resourcegroepniveau is toegang beperkt tot resources binnen die specifieke resourcegroep. Deze granulariteit maakt het mogelijk om zeer precieze toegangscontrole te implementeren volgens het least privilege-principe. Het gekoppelde PowerShell-script kan helpen bij het identificeren van permanente Azure RBAC-toewijzingen die moeten worden omgezet naar geschikte toewijzingen, en bij het monitoren van PIM-activeringspatronen om te detecteren of er ongebruikelijke activiteiten plaatsvinden.

Monitoring, auditing en rapportage

Gebruik PowerShell-script privileged-identity-management.ps1 (functie Invoke-Monitoring) – Voert monitoring uit van de PIM-configuratie, identificeert permanente bevoorrechte toewijzingen die moeten worden omgezet naar geschikte toewijzingen, en rapporteert over de naleving van PIM-vereisten..

Effectieve PIM-implementatie vereist continue monitoring en auditing om te zorgen dat beveiligingsbeleid wordt nageleefd en dat misbruik tijdig wordt gedetecteerd. Entra ID biedt uitgebreide auditlogs voor alle PIM-activiteiten, inclusief rolactiveringen, goedkeuringsbeslissingen, toewijzingswijzigingen en configuratiewijzigingen. Deze logs worden automatisch opgeslagen in de Entra ID audit logs en kunnen worden geëxporteerd naar Azure Monitor Log Analytics, Microsoft Sentinel, of andere SIEM-oplossingen voor geavanceerde analyse en correlatie met andere beveiligingsgebeurtenissen. Het gekoppelde PowerShell-script kan helpen bij het automatisch ophalen en analyseren van PIM-auditlogs om trends te identificeren, anomalieën te detecteren, en compliance-rapportages te genereren.

Gebruik PowerShell-script privileged-identity-management.ps1 (functie Invoke-Remediation) – Genereert een overzicht van permanente bevoorrechte toewijzingen en biedt handvatten voor conversie naar geschikte toewijzingen in PIM, inclusief concrete stappen voor implementatie..

Belangrijke monitoringindicatoren voor PIM omvatten: het aantal permanente versus geschikte toewijzingen per roltype, het aantal activeringen per rol en gebruiker over tijd, de gemiddelde activeringsduur versus de maximale toegestane duur, het aantal geweigerde activeringsaanvragen en de redenen voor weigering, het aantal activeringen buiten kantooruren of vanaf ongebruikelijke locaties, en het aantal gebruikers dat regelmatig de maximale activeringsduur overschrijdt. Anomaliedetectie kan worden geïmplementeerd om automatisch te waarschuwen wanneer ongebruikelijke patronen worden gedetecteerd, zoals een gebruiker die plotseling veel vaker een rol activeert, activeringen vanaf nieuwe locaties of apparaten, of meerdere gebruikers die tegelijkertijd dezelfde kritieke rol activeren. Periodieke toegangsbeoordelingen worden uitgevoerd om te controleren of geschikte toewijzingen nog steeds gerechtvaardigd zijn: gebruikers die een rol gedurende langere tijd niet hebben geactiveerd, kunnen worden gevraagd om te rechtvaardigen waarom zij nog steeds toegang nodig hebben, en toewijzingen die niet langer nodig zijn, worden verwijderd.

Rapportage voor bestuur en directie moet inzicht geven in de effectiviteit van PIM en de mate van compliance met beveiligingsbeleid. Maandelijkse of driemaandelijkse rapportages kunnen het volgende omvatten: overzicht van permanente versus geschikte toewijzingen en trend over tijd, top tien meest geactiveerde rollen en gebruikers, gemiddelde tijd tussen activeringsaanvraag en goedkeuring, aantal geweigerde aanvragen en redenen, detectie van ongebruikelijke activiteiten of mogelijke security incidents, en voortgang van migratie van permanente naar geschikte toewijzingen. Deze rapportages helpen bestuur en directie om te begrijpen hoe PIM bijdraagt aan de beveiligingspostuur van de organisatie en waar aanvullende maatregelen nodig kunnen zijn. Het gekoppelde PowerShell-script kan worden geautomatiseerd om periodiek deze rapportages te genereren en te distribueren aan relevante stakeholders.

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 Microsoft Entra Privileged Identity Management (PIM). .DESCRIPTION Controleert de PIM-configuratie voor Entra ID-rollen en Azure-resources, identificeert permanente bevoorrechte toewijzingen die moeten worden omgezet naar geschikte toewijzingen, en biedt handvatten voor implementatie en continue monitoring in lijn met de Nederlandse Baseline voor Veilige Cloud. .NOTES Filename: privileged-identity-management.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-27 Last Modified: 2025-01-27 Version: 1.0 Related JSON: content/entra/privileged-identity-management.json CIS Control: CIS Control 6 Category: Identity Governance Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\privileged-identity-management.ps1 -Monitoring Check compliance status van PIM-configuratie en identificeer permanente toewijzingen. .EXAMPLE .\privileged-identity-management.ps1 -Remediation Genereer overzicht van permanente toewijzingen en handvatten voor conversie naar PIM. .EXAMPLE .\privileged-identity-management.ps1 -Remediation -WhatIf Toon welke acties zouden worden uitgevoerd zonder daadwerkelijk te wijzigen. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Identity.Governance, Az.Accounts, Az.Resources [CmdletBinding()] param( [Parameter(HelpMessage = "Monitor current PIM configuration status and identify permanent privileged assignments")] [switch]$Monitoring, [Parameter(HelpMessage = "Generate remediation overview and conversion guidance for PIM implementation")] [switch]$Remediation, [Parameter(HelpMessage = "Revert to previous configuration")] [switch]$Revert, [Parameter(HelpMessage = "Show what would happen without making changes")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' # ============================================================================ # HEADER # ============================================================================ Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Microsoft Entra Privileged Identity Management" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # ============================================================================ # FUNCTIONS # ============================================================================ function Test-Compliance { <# .SYNOPSIS Tests if current PIM configuration meets compliance requirements .DESCRIPTION Wrapper function that calls Invoke-Monitoring and returns compliance status .OUTPUTS Returns monitoring result object with isCompliant property #> [CmdletBinding()] param() return Invoke-Monitoring } 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-PIMConfigurationStatus { <# .SYNOPSIS Inventariseert de PIM-configuratiestatus voor Entra ID-rollen en Azure-resources. .OUTPUTS PSCustomObject met PIM-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 PIM-monitoring." return [pscustomobject]@{ AzureADConnected = $false AzureConnected = $false PIMEnabled = $null PermanentRoleAssignments = 0 EligibleRoleAssignments = 0 AzurePermanentAssignments = 0 AzureEligibleAssignments = 0 } } $permanentAssignments = 0 $eligibleAssignments = 0 $azurePermanentAssignments = 0 $azureEligibleAssignments = 0 $pimEnabled = $null if ($mgConnected) { try { Write-Verbose "Inventariseren van Entra ID-roltoewijzingen..." # Probeer PIM-roltoewijzingen op te halen try { $pimRoles = Get-MgRoleManagementDirectoryRoleEligibilitySchedule -ErrorAction SilentlyContinue $eligibleAssignments = $pimRoles.Count Write-Verbose "Gevonden $eligibleAssignments geschikte roltoewijzingen via PIM" } catch { Write-Verbose "Kon PIM-roltoewijzingen niet ophalen (mogelijk PIM niet ingeschakeld of onvoldoende rechten): $_" } # Probeer directory-rollen op te halen om permanente toewijzingen te identificeren 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 of PIM is ingeschakeld (dit is moeilijk programmatisch te bepalen) # In de praktijk moet dit handmatig worden gecontroleerd in de portal $pimEnabled = "Unknown - Manual verification required" } catch { Write-Warning "Fout bij inventariseren van Entra ID PIM-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 { # Haal roltoewijzingen op voor hoog-privilege rollen $highPrivilegeRoles = @("Owner", "User Access Administrator", "Contributor") $assignments = Get-AzRoleAssignment -ErrorAction SilentlyContinue | Where-Object { $highPrivilegeRoles -contains $_.RoleDefinitionName } foreach ($assignment in $assignments) { # Controleer of dit een permanente of tijdelijke toewijzing is # PIM-toewijzingen hebben typisch een expiration time if ($assignment.ExpiresOn) { $azureEligibleAssignments++ } else { $azurePermanentAssignments++ } } } catch { Write-Verbose "Kon roltoewijzingen niet ophalen voor subscription '$($sub.Name)': $_" } } Write-Verbose "Gevonden $azurePermanentAssignments permanente en $azureEligibleAssignments geschikte Azure RBAC-toewijzingen" } catch { Write-Warning "Fout bij inventariseren van Azure RBAC PIM-status: $_" } } return [pscustomobject]@{ AzureADConnected = $mgConnected AzureConnected = $azConnected PIMEnabled = $pimEnabled PermanentRoleAssignments = $permanentAssignments EligibleRoleAssignments = $eligibleAssignments AzurePermanentAssignments = $azurePermanentAssignments AzureEligibleAssignments = $azureEligibleAssignments } } function Invoke-Monitoring { <# .SYNOPSIS Monitors and reports current PIM configuration status .DESCRIPTION Checks current PIM configuration against security baseline requirements. Reports compliance status and identifies non-compliant settings. .OUTPUTS Returns hashtable with: - isCompliant: Boolean indicating overall compliance - PIMStatus: Detailed PIM configuration status - findings: Detailed findings #> [CmdletBinding()] param() try { Write-Host "`nMonitoring:" -ForegroundColor Yellow # Connect to services if needed if (-not (Test-AzureADConnection)) { Write-Host " Verbind met Microsoft Graph: Connect-MgGraph -Scopes 'RoleManagement.Read.All', 'Directory.Read.All'" -ForegroundColor Yellow } if (-not (Test-AzureConnection)) { Write-Host " Verbind met Azure: Connect-AzAccount" -ForegroundColor Yellow } Write-Host "Controleren PIM-configuratie..." -ForegroundColor Gray # Initialize result object $result = @{ isCompliant = $false timestamp = Get-Date findings = @() PIMStatus = $null } # Get PIM configuration status $pimStatus = Get-PIMConfigurationStatus $result.PIMStatus = $pimStatus if ($pimStatus.AzureADConnected) { Write-Host "`nEntra ID PIM-status:" -ForegroundColor Cyan Write-Host " PIM ingeschakeld: $($pimStatus.PIMEnabled)" -ForegroundColor Gray Write-Host " Permanente roltoewijzingen: $($pimStatus.PermanentRoleAssignments)" -ForegroundColor $(if ($pimStatus.PermanentRoleAssignments -gt 0) { "Red" } else { "Green" }) Write-Host " Geschikte roltoewijzingen (PIM): $($pimStatus.EligibleRoleAssignments)" -ForegroundColor Gray if ($pimStatus.PermanentRoleAssignments -gt 0) { Write-Host " [FAIL] Permanente toewijzingen gedetecteerd die moeten worden omgezet naar PIM" -ForegroundColor Red $result.findings += "Er zijn $($pimStatus.PermanentRoleAssignments) permanente roltoewijzingen gedetecteerd" } else { Write-Host " [OK] Geen permanente toewijzingen gedetecteerd" -ForegroundColor Green } } else { Write-Host "`n⚠️ Geen actieve Microsoft Graph-verbinding. Verbind met Connect-MgGraph voor Entra ID PIM-monitoring." -ForegroundColor Yellow } if ($pimStatus.AzureConnected) { Write-Host "`nAzure RBAC PIM-status:" -ForegroundColor Cyan Write-Host " Permanente toewijzingen: $($pimStatus.AzurePermanentAssignments)" -ForegroundColor $(if ($pimStatus.AzurePermanentAssignments -gt 0) { "Red" } else { "Green" }) Write-Host " Geschikte toewijzingen (PIM): $($pimStatus.AzureEligibleAssignments)" -ForegroundColor Gray if ($pimStatus.AzurePermanentAssignments -gt 0) { Write-Host " [FAIL] Permanente Azure RBAC-toewijzingen gedetecteerd" -ForegroundColor Red $result.findings += "Er zijn $($pimStatus.AzurePermanentAssignments) permanente Azure RBAC-toewijzingen gedetecteerd" } else { Write-Host " [OK] Geen permanente Azure RBAC-toewijzingen gedetecteerd" -ForegroundColor Green } } else { Write-Host "`n⚠️ Geen actieve Azure-verbinding. Verbind met Connect-AzAccount voor Azure RBAC PIM-monitoring." -ForegroundColor Yellow } Write-Host "`nHandmatige verificatie vereist:" -ForegroundColor Cyan Write-Host " Controleer in Entra ID portal:" -ForegroundColor Gray Write-Host " - Privileged Identity Management > Azure AD roles" -ForegroundColor Gray Write-Host " - Alle bevoorrechte rollen moeten geschikte toewijzingen hebben (geen permanente)" -ForegroundColor Gray Write-Host " - Rolinstellingen: goedkeuring, MFA, rechtvaardiging, maximale duur" -ForegroundColor Gray Write-Host " Controleer in Azure Portal:" -ForegroundColor Gray Write-Host " - Privileged Identity Management > Azure resources" -ForegroundColor Gray Write-Host " - Resources ontdekt en bevoorrechte rollen geconfigureerd" -ForegroundColor Gray Write-Host " - Permanente toewijzingen omgezet naar geschikte toewijzingen" -ForegroundColor Gray # Determine compliance if ($pimStatus.PermanentRoleAssignments -eq 0 -and $pimStatus.AzurePermanentAssignments -eq 0) { $result.isCompliant = $true } # ============================================= # SUMMARY # ============================================= Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "SUMMARY:" -ForegroundColor Cyan Write-Host " Entra ID permanente toewijzingen: $($pimStatus.PermanentRoleAssignments)" -ForegroundColor White Write-Host " Entra ID geschikte toewijzingen: $($pimStatus.EligibleRoleAssignments)" -ForegroundColor White Write-Host " Azure permanente toewijzingen: $($pimStatus.AzurePermanentAssignments)" -ForegroundColor White Write-Host " Azure geschikte toewijzingen: $($pimStatus.AzureEligibleAssignments)" -ForegroundColor White if ($result.isCompliant) { Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green } else { Write-Host "`n[FAIL] NON-COMPLIANT" -ForegroundColor Red Write-Host " Issues found: $($result.findings.Count)" -ForegroundColor Yellow foreach ($finding in $result.findings) { Write-Host " - $finding" -ForegroundColor Yellow } } return $result } catch { Write-Host "`n[FAIL] ERROR during monitoring: $_" -ForegroundColor Red throw } } function Invoke-Remediation { <# .SYNOPSIS Applies recommended PIM configuration .DESCRIPTION Provides guidance and remediation steps for implementing PIM. Note: PIM configuration typically requires manual steps in the portal. .PARAMETER WhatIf Shows what would be changed without making actual changes #> [CmdletBinding(SupportsShouldProcess)] param() try { Write-Host "`nRemediation:" -ForegroundColor Yellow if ($WhatIf) { Write-Host "WhatIf: Toon welke acties zouden worden uitgevoerd..." -ForegroundColor Cyan } Write-Host "Analyseren PIM-configuratie..." -ForegroundColor Gray # Get PIM status $pimStatus = Get-PIMConfigurationStatus $actions = @() Write-Host "`nPIM-implementatie analyse:" -ForegroundColor Cyan if ($pimStatus.PermanentRoleAssignments -gt 0) { $action = [pscustomobject]@{ Priority = "High" Issue = "Permanente Entra ID-roltoewijzingen gedetecteerd" Count = $pimStatus.PermanentRoleAssignments Recommendation = "Converteer permanente toewijzingen naar geschikte toewijzingen in PIM via Entra ID portal > Privileged Identity Management > Azure AD roles." } $actions += $action Write-Host " ❌ $($action.Issue): $($action.Count) toewijzingen" -ForegroundColor Red Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } if ($pimStatus.AzurePermanentAssignments -gt 0) { $action = [pscustomobject]@{ Priority = "High" Issue = "Permanente Azure RBAC-toewijzingen gedetecteerd" Count = $pimStatus.AzurePermanentAssignments Recommendation = "Converteer permanente toewijzingen naar geschikte toewijzingen in PIM via 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 ($pimStatus.PIMEnabled -eq "Unknown - Manual verification required") { $action = [pscustomobject]@{ Priority = "Medium" Issue = "PIM-status onbekend" Count = 0 Recommendation = "Controleer handmatig of PIM is ingeschakeld voor Entra ID-rollen en Azure-resources in respectievelijk Entra ID portal en Azure Portal." } $actions += $action Write-Host " ⚠️ $($action.Issue)" -ForegroundColor Yellow Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } Write-Host "`nVolgende stappen:" -ForegroundColor Cyan Write-Host "1. Schakel PIM in voor Entra ID-rollen via Entra ID portal" -ForegroundColor White Write-Host "2. Schakel PIM in voor Azure-resources via Azure Portal" -ForegroundColor White Write-Host "3. Converteer permanente toewijzingen naar geschikte toewijzingen" -ForegroundColor White Write-Host "4. Configureer rolinstellingen: goedkeuring, MFA, rechtvaardiging, maximale duur" -ForegroundColor White Write-Host "5. Wijs goedkeurders toe voor hoog-impact rollen" -ForegroundColor White Write-Host "6. Configureer PIM-waarschuwingen voor kritieke activeringen" -ForegroundColor White Write-Host "7. Stel periodieke toegangsbeoordelingen in" -ForegroundColor White if (-not $WhatIf) { Write-Host "`nNOTE: PIM-configuratie vereist handmatige stappen in de portals." -ForegroundColor Yellow Write-Host " Gebruik dit script om status te monitoren en gebruik de portals voor configuratie." -ForegroundColor Yellow } Write-Host "`n[OK] Remediation analyse voltooid" -ForegroundColor Green } catch { Write-Host "`n[FAIL] ERROR during remediation: $_" -ForegroundColor Red throw } } function Invoke-Revert { <# .SYNOPSIS Reverts configuration to previous state .DESCRIPTION Note: PIM-configuratie wordt typisch handmatig teruggedraaid in de portals. Deze functie biedt alleen informatie over hoe terugdraaiing kan worden uitgevoerd. #> [CmdletBinding(SupportsShouldProcess)] param() try { Write-Host "`nRevert:" -ForegroundColor Yellow Write-Host "NOTE: PIM-configuratie terugdraaien vereist handmatige stappen:" -ForegroundColor Yellow Write-Host "1. Navigeer naar Entra ID portal > Privileged Identity Management" -ForegroundColor White Write-Host "2. Verwijder geschikte toewijzingen indien nodig" -ForegroundColor White Write-Host "3. Herstel permanente toewijzingen indien vereist" -ForegroundColor White Write-Host "4. Pas rolinstellingen aan indien nodig" -ForegroundColor White Write-Host "`n[INFO] Revert voltooid" -ForegroundColor Cyan } catch { Write-Host "`n[FAIL] ERROR during revert: $_" -ForegroundColor Red throw } } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { # Determine which action to perform if ($Revert) { if ($WhatIf) { Write-Host "WhatIf: Would revert configuration" -ForegroundColor Yellow } else { Invoke-Revert } } elseif ($Remediation) { if ($WhatIf) { Write-Host "WhatIf: Would apply remediation guidance" -ForegroundColor Yellow } else { Invoke-Remediation } } elseif ($Monitoring) { $result = Invoke-Monitoring # Exit with appropriate code for automation if ($result.isCompliant) { exit 0 # Success - Compliant } else { exit 1 # Warning - Non-compliant } } else { # No parameters - show usage Write-Host "Available parameters:" -ForegroundColor Yellow Write-Host " -Monitoring : Check current PIM configuration status" -ForegroundColor Gray Write-Host " -Remediation : Generate remediation guidance for PIM implementation" -ForegroundColor Gray Write-Host " -Revert : Show information on reverting PIM configuration" -ForegroundColor Gray Write-Host " -WhatIf : Preview changes without applying" -ForegroundColor Gray Write-Host "`nExample: .\privileged-identity-management.ps1 -Monitoring" -ForegroundColor Cyan } } catch { Write-Error "Script execution failed: $_" exit 2 # Error } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan } # ============================================================================ # EXIT CODES # ============================================================================ # 0 = Success / Compliant # 1 = Warning / Non-compliant # 2 = Error / Execution failed

Risico zonder implementatie

Risico zonder implementatie
High: Zonder Privileged Identity Management blijft permanente bevoorrechte toegang een permanent beschikbaar aanvalsoppervlak. Als een beheerdersaccount wordt gecompromitteerd, heeft een aanvaller onmiddellijk onbeperkte toegang zonder detectie of controle. Dit leidt tot verhoogde kans op datalekken, ransomware-aanvallen en compliance-schendingen volgens BIO, ISO 27001 en NIS2.

Management Samenvatting

Implementeer Microsoft Entra Privileged Identity Management om permanente bevoorrechte toegang te elimineren en te vervangen door just-in-time, goedkeuringsgebaseerde rolactivering. Zorg voor geschikte toewijzingen in plaats van actieve toewijzingen, configureer rolinstellingen met passende beveiligingsvereisten, en implementeer monitoring en auditing voor volledige accountability en compliance.