Microsoft 365: Access Reviews Configureren Voor Toegangsbeheer

💼 Management Samenvatting

Access Reviews in Microsoft 365 automatiseren periodieke herbeoordeling van gebruikersrechten, groepslidmaatschappen en applicatietoegang, waardoor organisaties proactief privilege creep kunnen voorkomen, orphaned accounts kunnen identificeren en compliance-eisen kunnen naleven door regelmatige verificatie van toegangsrechten.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
36u (tech: 20u)
Van toepassing op:
M365
Azure AD

Zonder gestructureerde access reviews accumuleren gebruikers in de loop der tijd onnodige rechten: medewerkers die van functie wisselen behouden toegang tot oude systemen, externe gastgebruikers blijven actief lang nadat projecten zijn afgerond, en beheerdersrollen worden toegekend maar nooit meer ingetrokken. Deze privilege creep creëert een aanzienlijk beveiligingsrisico omdat elke extra rechten een potentieel aanvalsoppervlak vormt. Bovendien vereisen compliance-kaders zoals de Baseline Informatiebeveiliging Overheid, ISO 27001 en NIS2 expliciet dat organisaties periodiek controleren of toegangsrechten nog gerechtvaardigd zijn. Handmatige reviews zijn tijdrovend, foutgevoelig en schalen niet mee met de groei van de organisatie. Access Reviews lossen dit op door geautomatiseerde workflows waarin resource-eigenaren, groepsbeheerders of beveiligingsteams periodiek worden gevraagd om te bevestigen dat toegang nog nodig is. Gebruikers die niet reageren of waarvan de toegang wordt afgewezen, verliezen automatisch hun rechten, waardoor het principe van least privilege wordt afgedwongen en het totale aanvalsoppervlak systematisch wordt verkleind. Door deze reviews te koppelen aan Microsoft Sentinel en compliance-rapportages ontstaat een volledig audittrail dat aantoont dat de organisatie proactief werkt aan toegangsbeheer en voldoet aan regulatorische eisen.

PowerShell Modules Vereist
Primary API: Microsoft Graph API
Connection: Connect-MgGraph
Required Modules: Microsoft.Graph.Identity.Governance

Implementatie

Deze maatregel richt zich op het configureren van Access Reviews voor alle kritieke toegangstypen binnen Microsoft 365. Het omvat het opzetten van periodieke reviews voor gastgebruikers (elk kwartaal), beheerdersrollen (maandelijks), gevoelige groepen (elk kwartaal), applicatietoegang (halfjaarlijks) en PIM-eligible assignments (elk kwartaal). De configuratie omvat het definiëren van review-eigenaren, het instellen van automatische verwijdering voor niet-goedgekeurde toegang, het configureren van notificaties en herinneringen, en het koppelen van reviewresultaten aan monitoring- en rapportagesystemen. Daarnaast worden processen vastgelegd voor uitzonderingen, escalaties en het afhandelen van bezwaarprocedures. Het resultaat is een gestructureerd toegangsbeheer waarbij rechten continu worden geverifieerd, waarbij afwijkingen automatisch worden gecorrigeerd en waarbij volledige traceerbaarheid wordt geboden voor auditors en compliance-teams.

Vereisten

  1. Een volwaardige Access Reviews-implementatie vereist Azure AD Premium P2-licenties voor alle gebruikers die worden beoordeeld of die als reviewer optreden. Zonder deze licenties zijn alleen basisreviews mogelijk met beperkte automatisering en rapportage. Daarnaast is een gedetailleerde inventarisatie nodig van alle toegangstypen die moeten worden gereviewd: welke groepen bevatten gevoelige informatie, welke applicaties hebben toegang tot bedrijfskritieke systemen, welke rollen zijn toegekend via PIM of direct, en welke gastgebruikers hebben toegang tot gedeelde resources. Deze inventarisatie vormt de basis voor het bepalen van reviewfrequenties, het toewijzen van review-eigenaren en het prioriteren van de meest risicovolle toegangstypen. Koppel deze inventarisatie aan bestaande change-managementprocessen zodat wijzigingen in organisatiestructuur, projecten of systemen automatisch worden vertaald naar nieuwe of bijgewerkte reviews.

    Naast het licentiekader en de inventarisatie is er een governance-raamwerk nodig waarin duidelijk is wie verantwoordelijk is voor welke reviews. Definieer voor elk type toegang wie de review-eigenaar is: voor groepen is dit meestal de groepsbeheerder, voor applicaties de applicatie-eigenaar, voor beheerdersrollen de security officer of lijnmanager, en voor gastgebruikers de resource-eigenaar die de uitnodiging heeft verzonden. Leg vast welke escalatieprocedures gelden wanneer een reviewer niet reageert, hoe bezwaren worden afgehandeld en welke uitzonderingen mogelijk zijn voor kritieke systemen of noodscenario's. Documenteer bovendien hoe reviewresultaten worden gecommuniceerd naar betrokkenen, hoe toegangsverwijderingen worden uitgevoerd en hoe deze acties worden gelogd voor auditdoeleinden.
  2. Even belangrijk is de technische voorbereiding. Zorg ervoor dat Microsoft Graph API-toegang is geconfigureerd met de benodigde scopes voor Identity Governance, dat benodigde PowerShell-modules zijn geïnstalleerd en dat er een testomgeving beschikbaar is voor het valideren van reviewconfiguraties voordat deze in productie worden genomen. Maak gebruik van Azure Monitor of Microsoft Sentinel om reviewactiviteiten te loggen en stel dashboards op voor managementrapportages. Definieer daarnaast welke integraties nodig zijn met bestaande ITSM-systemen, zodat toegangsverwijderingen automatisch worden geregistreerd als tickets en zodat reviewers notificaties ontvangen via hun voorkeurskanaal. Leg vast hoe lang reviewresultaten worden bewaard, welke rapportages periodiek worden gegenereerd en hoe deze informatie wordt gebruikt voor risicoanalyses en compliance-rapportages. Neem in dezelfde set eisen ook een beleid op voor het testen van reviewworkflows, het valideren van automatische verwijderingen en het monitoren van reviewer-responspercentages, zodat de effectiviteit van het proces continu kan worden verbeterd. Beschrijf bovendien hoe nieuwe medewerkers worden getraind in het uitvoeren van reviews, hoe bestaande processen worden aangepast wanneer nieuwe toegangstypen worden geïntroduceerd en op welke manier lessons learned worden verwerkt in toekomstige reviewconfiguraties.

Implementatie

De implementatie van Access Reviews vraagt om een gefaseerde aanpak waarbij eerst de meest kritieke toegangstypen worden geconfigureerd, gevolgd door een uitrol naar alle andere rechten. Start met een analyse van alle huidige toegangstoewijzingen in Microsoft Entra ID en identificeer welke groepen, applicaties en rollen het hoogste risico vormen wanneer toegang onterecht wordt behouden. Koppel deze analyse aan bestaande risicoregisters, compliance-eisen en incidentgeschiedenis zodat prioriteiten kunnen worden gesteld. Communiceer het eindbeeld al in deze fase zodat reviewers begrijpen wat er van hen wordt verwacht en zodat gebruikers weten dat hun toegang periodiek wordt gecontroleerd.

  1. Fase 1 draait om het opzetten van reviews voor de meest kritieke toegangstypen. Begin met beheerdersrollen omdat deze de hoogste privileges hebben en het grootste risico vormen. Configureer maandelijkse reviews voor alle Azure AD-rollen, waarbij de Security Administrator of een aangewezen lijnmanager als reviewer optreedt. Stel in dat reviewers moeten motiveren waarom toegang wordt behouden, dat automatische verwijdering plaatsvindt wanneer een review niet wordt voltooid binnen de gestelde termijn, en dat notificaties worden verzonden naar zowel de reviewer als de betrokken gebruiker. Voeg voor zeer kritieke rollen zoals Global Administrator een extra goedkeuringslaag toe waarbij twee personen de toegang moeten bevestigen. Tijdens deze fase leg je meteen vast welke waarschuwingen richting SOC gaan bij afgewezen toegang, bij meerdere afwijzingen voor dezelfde gebruiker of bij reviews die niet worden voltooid.
  2. Fase 2 richt zich op groeps- en applicatietoegang. Configureer kwartaalreviews voor alle beveiligingsgroepen en Microsoft 365-groepen die toegang bieden tot gevoelige informatie, waarbij de groepsbeheerder als reviewer optreedt. Stel in dat reviewers kunnen zien wanneer een gebruiker voor het laatst heeft ingelogd, welke bestanden of sites zijn gedeeld, en of er activiteit is geweest in de afgelopen periode. Voor applicatietoegang configureer je halfjaarlijkse reviews waarbij de applicatie-eigenaar of IT-beheerder bevestigt dat gebruikers nog steeds toegang nodig hebben. Voeg voor SaaS-applicaties met gevoelige data extra controles toe zoals verificatie van business justification of goedkeuring door de data-eigenaar. Tijdens deze fase test je ook de automatische verwijderingsworkflow door bewust enkele testgebruikers toe te voegen aan een groep, een review te starten en te verifiëren dat toegang daadwerkelijk wordt ingetrokken wanneer de review wordt afgewezen.
  3. Fase 3 omvat gastgebruikers en PIM-eligible assignments. Configureer kwartaalreviews voor alle externe gastgebruikers, waarbij de resource-eigenaar die de uitnodiging heeft verzonden als reviewer optreedt. Stel in dat reviewers kunnen zien welke resources de gastgebruiker heeft benaderd, wanneer de laatste activiteit heeft plaatsgevonden en of er nog actieve projecten zijn. Voor PIM-eligible assignments configureer je automatische reviews die elk kwartaal controleren of gebruikers nog steeds in aanmerking moeten komen voor privileges, waarbij de rol-eigenaar of security officer als reviewer optreedt. Tijdens deze fase koppel je alle reviews aan Microsoft Sentinel zodat activiteiten worden gelogd, stel je dashboards op voor managementrapportages en configureer je automatische rapportages die periodiek worden verzonden naar compliance-teams en auditors.

Compliance en Auditing

  1. Voor toezichthouders zijn Access Reviews direct bewijs dat de organisatie voldoet aan fundamentele eisen voor toegangsbeheer. De Baseline Informatiebeveiliging Overheid controle 09.02 vereist expliciet dat toegangsrechten periodiek worden herbeoordeeld; door de reviewconfiguraties en resultaten te documenteren kan de auditor snel verifiëren dat elke vorm van toegang regelmatig wordt gecontroleerd, dat afgewezen toegang wordt ingetrokken en dat er een volledige audittrail bestaat van alle reviewactiviteiten. Binnen ISO/IEC 27001:2022 controle A.9.2.5 staat dat organisaties regelmatig moeten controleren of gebruikersrechten nog gerechtvaardigd zijn; Access Reviews leveren hiervoor concrete evidence in de vorm van reviewresultaten, automatische verwijderingen en managementrapportages. Door deze informatie te koppelen aan het centrale ISMS ontstaat een volledig compliance-dossier dat het management kan overleggen aan interne audit, de Algemene Rekenkamer of externe assurance-partners. Leg daarbij vast hoe lang reviewresultaten worden bewaard, hoe onafhankelijkheid wordt geborgd bij reviews en hoe afwijkingen worden geadresseerd binnen het risicoregister zodat auditors een sluitende driehoek zien van beleid, uitvoering en controle.
  2. Ook internationale kaders profiteren van Access Reviews. NIS2 Artikel 21 benoemt toegangsbeheer als verplichte organisatorische maatregel voor essentiële en belangrijke entiteiten; de combinatie van periodieke reviews, automatische verwijdering en volledige logging biedt aantoonbare invulling aan deze bepaling. Bovendien sluit Access Reviews naadloos aan bij het Zero Trust-principe 'verify explicitly', omdat toegang continu wordt geverifieerd op basis van actuele business needs en niet alleen wordt toegekend op basis van historische toewijzingen. Leg deze verbanden expliciet vast in het compliance-dossier, koppel rapportages aan het GRC-platform en zorg ervoor dat auditteams real-time inzicht hebben in openstaande reviews, afgewezen toegang en trends in toegangsgebruik. Door deze rapportages te combineren met forensische logging en het Data Protection Impact Assessment ontstaat een geïntegreerd beeld waarmee de organisatie kan aantonen dat privacy by design en security by design daadwerkelijk zijn gerealiseerd. Neem tevens een standaard-sjabloon op voor regulatorische meldingen, zodat bij een incident direct kan worden aangetoond welke toegang actief was, welke reviews recent zijn uitgevoerd en hoe snel ongeautoriseerde toegang is gedetecteerd en ingetrokken.

Monitoring

Gebruik PowerShell-script access-reviews-configured.ps1 (functie Invoke-Monitoring) – Het PowerShell-script `code/m365/identity-governance/access-reviews-configured.ps1` bevat de functie `Invoke-Monitoring`, waarmee dagelijks inzicht wordt opgebouwd in alle geconfigureerde Access Reviews. Het script maakt verbinding via `Connect-MgGraph`, leest alle reviewdefinities uit via de Microsoft Graph API en valideert of reviews zijn geconfigureerd voor kritieke toegangstypen zoals beheerdersrollen, gevoelige groepen, applicatietoegang en gastgebruikers. Het script controleert of reviews de juiste frequentie hebben (maandelijks voor rollen, kwartaals voor groepen en gasten), of automatische verwijdering is ingeschakeld voor niet-goedgekeurde toegang, en of reviewers correct zijn toegewezen. Door deze informatie te verrijken met statistieken over reviewcompletion rates, afgewezen toegang en automatische verwijderingen ontstaat een vroegtijdige waarschuwing wanneer reviews niet worden voltooid, wanneer er ongebruikelijk veel toegang wordt afgewezen of wanneer kritieke toegangstypen niet worden gereviewd. Het script verstuurt de gebeurtenissen naar Microsoft Sentinel en kan optioneel een CSV-rapport genereren voor management, zodat ook buiten het SOC helder is welke reviews actief zijn en wat de compliance-status is. De monitoringfunctie voert daarnaast controles uit op openstaande reviews, verlopen reviewperiodes en configuratiefouten zoals reviews zonder automatische verwijdering of zonder toegewezen reviewers. Wanneer een inconsistentie wordt gedetecteerd, stuurt het script een adaptive card naar het identity governance-team met concrete herstelacties. Door het script elke vijftien minuten via Azure Automation of een lokale runbook server uit te voeren, blijft de rapportage binnen het in de organisatie afgesproken maximale testvenster van vijftien seconden en ontstaat een near-real-time beeld van de Access Reviews-status. Documenteer in het operationeel beheerplan hoe deze monitoringresultaten worden beoordeeld tijdens de dagelijkse stand-up, welke escalatieniveaus gelden bij ontbrekende reviews en hoe corrigerende maatregelen in het risicoregister worden vastgelegd. Zo wordt monitoring niet alleen een technische controle, maar een aantoonbaar onderdeel van de bredere governancestructuur. Gebruik de uitvoer van het script om kernprestatie-indicatoren te meten, zoals het percentage voltooide reviews, de gemiddelde tijd die reviewers nodig hebben om te reageren, het aantal automatische verwijderingen per kwartaal en de trend in toegangsreductie over tijd. Koppel deze KPI's aan managementrapportages zodat bestuurders kunnen sturen op toegangsbeheer en naleving van interne normen. Plan bovendien kwartaalreviews in waarbij het identity governance-team, security en audit gezamenlijk de reviewconfiguraties, de reviewer-toewijzingen en de integraties met SIEM, ITSM en GRC-systemen valideren. Op die manier blijft de monitoringfunctie actueel bij wijzigingen in API-versies of beleidskaders. Tot slot schrijft de functie automatisch testresultaten weg naar het kwaliteitsdossier, zodat kan worden aangetoond dat het script binnen vijftien seconden voltooid is, welke foutafhandeling plaatsvond en welke versies van benodigde modules zijn gebruikt. Deze informatie is cruciaal voor change control en voor het aantonen van due diligence richting toezichthouders. Door een wekelijkse self-test te plannen waarbij bewust testreviews worden gestart en gecontroleerd of deze correct worden gedetecteerd, bewijst de organisatie dat detectie- en responsmechanismen daadwerkelijk werken en dat governance-teams bij een afwijking onmiddellijk worden geïnformeerd. Rapporteer de bevindingen uit deze tests in het bestaande continu-verbeterproces (Plan-Do-Check-Act) zodat verbeteracties worden toegewezen, opgevolgd en afgesloten..

Remediatie

Gebruik PowerShell-script access-reviews-configured.ps1 (functie Invoke-Remediation) – De functie `Invoke-Remediation` in `code/m365/identity-governance/access-reviews-configured.ps1` automatiseert het herstel van afwijkingen in Access Reviews-configuraties. Wanneer monitoring aangeeft dat kritieke toegangstypen niet worden gereviewd, maakt het script automatisch nieuwe reviewdefinities aan met de juiste instellingen: maandelijkse reviews voor beheerdersrollen, kwartaalreviews voor groepen en gastgebruikers, en halfjaarlijkse reviews voor applicatietoegang. Het script controleert eveneens of automatische verwijdering is ingeschakeld, of reviewers correct zijn toegewezen en of notificaties zijn geconfigureerd; ontbrekende instellingen worden direct geactiveerd, waarna een bevestigingsrapport naar het identity governance-team wordt gestuurd. Dankzij ingebouwde validaties op API-responses en review-ID's wordt voorkomen dat verkeerde toegangstypen worden aangepast of dat bestaande reviews onbedoeld worden gewijzigd. Het herstelproces omvat meer dan alleen technische wijzigingen. `Invoke-Remediation` kan worden uitgevoerd met een parameter die een ticketnummer verwacht. Hierdoor wordt elke wijziging gekoppeld aan het ITSM-systeem en wordt automatisch een notitie geplaatst met details over de aangemaakte of bijgewerkte review, de betrokken toegangstypen en de tijdstempel. Bij kritieke toegangstypen zoals Global Administrator-rollen vraagt het script een expliciete bevestiging aan een tweede engineer voordat de wijziging wordt doorgevoerd, zodat functiescheiding wordt geborgd. Wanneer een configuratie niet automatisch kan worden hersteld—bijvoorbeeld omdat een reviewer niet beschikbaar is of omdat er conflicterende instellingen zijn—wordt een uitzonderingsrapport opgesteld en naar de proceseigenaar gestuurd met concrete vervolgacties. Daarnaast kan het script de betreffende reviewers een instructiemail sturen waarin het nieuwe reviewproces wordt uitgelegd en waarin eventuele aanvullende training wordt aangeboden. Na succesvolle remediatie draait het script een verificatiecyclus waarin wordt gecontroleerd of de nieuwe reviews daadwerkelijk actief zijn, of alle notificaties zijn verzonden en of het auditlogboek de wijziging heeft vastgelegd. De resultaten worden geëxporteerd naar een JSON- en CSV-bestand zodat zowel technische teams als auditors dezelfde informatie kunnen gebruiken. Omdat het script binnen vijftien seconden moet zijn afgerond, wordt er gebruikgemaakt van parallelle API-calls en worden statusupdates alleen gelogd wanneer een stap langer dan twee seconden duurt. Zo blijft het reparatieproces snel genoeg voor operationeel gebruik tijdens onderhoudsvensters en verstoor je geen lopende reviewactiviteiten. Leg tot slot vast in het beheerhandboek hoe vaak het script preventief wordt uitgevoerd, hoe uitkomsten worden besproken in het CAB en hoe verbeterpunten worden teruggekoppeld naar beleid en standaarden, zodat remediatie een permanent onderdeel vormt van de kwaliteitscyclus. Voeg aan dit handboek een beslisboom toe die aangeeft wanneer aanvullende handmatige controles nodig zijn, hoe escalaties richting de CISO verlopen en hoe lessons learned worden vertaald naar updates in processen, training en tooling..

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 Access Reviews Configuration .DESCRIPTION Verifies Access Reviews are configured for critical access types (roles, groups, apps, guests) .NOTES NL Baseline v2.0 Requires: Azure AD Premium P2 or Microsoft 365 E5 #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph [CmdletBinding()] param([switch]$Monitoring) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Access Reviews Configuration Check" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Invoke-Monitoring { try { Connect-MgGraph -Scopes "AccessReview.Read.All", "RoleManagement.Read.All", "Group.Read.All", "Application.Read.All" -ErrorAction Stop -NoWelcome try { $accessReviews = Invoke-MgGraphRequest -Method GET ` -Uri "https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions" -ErrorAction Stop $result = @{ isCompliant = $false totalReviews = 0 roleReviews = 0 groupReviews = 0 appReviews = 0 guestReviews = 0 reviews = @() } if ($accessReviews -and $accessReviews.value) { $result.totalReviews = $accessReviews.value.Count foreach ($review in $accessReviews.value) { $reviewInfo = @{ name = $review.displayName type = "Unknown" recurrence = "Unknown" autoApply = $false } # Determine review type based on scope if ($review.scope -and $review.scope.'@odata.type') { if ($review.scope.'@odata.type' -eq '#microsoft.graph.accessReviewQueryScope') { if ($review.scope.query -match 'roleAssignment|roleDefinition') { $reviewInfo.type = "Role" $result.roleReviews++ } elseif ($review.scope.query -match 'guest|external') { $reviewInfo.type = "Guest" $result.guestReviews++ } } elseif ($review.scope.'@odata.type' -eq '#microsoft.graph.accessReviewScope') { if ($review.scope.resourceId) { # Check if it's a group or application by querying the resource try { $resource = Invoke-MgGraphRequest -Method GET ` -Uri "https://graph.microsoft.com/v1.0/directoryObjects/$($review.scope.resourceId)" -ErrorAction SilentlyContinue if ($resource.'@odata.type' -eq '#microsoft.graph.group') { $reviewInfo.type = "Group" $result.groupReviews++ } elseif ($resource.'@odata.type' -eq '#microsoft.graph.servicePrincipal') { $reviewInfo.type = "Application" $result.appReviews++ } } catch { # Could not determine type, skip } } } } # Check recurrence if ($review.recurrence -and $review.recurrence.pattern) { $reviewInfo.recurrence = "$($review.recurrence.pattern.type) (every $($review.recurrence.pattern.interval))" } elseif ($review.recurrence) { $reviewInfo.recurrence = "One-time" } # Check if auto-apply is enabled if ($review.settings -and $review.settings.autoApplyDecisionsEnabled) { $reviewInfo.autoApply = $true } $result.reviews += $reviewInfo } } Write-Host " Access Reviews Summary:" -ForegroundColor Cyan Write-Host " Total Reviews: $($result.totalReviews)" -ForegroundColor White Write-Host " Role Reviews: $($result.roleReviews)" -ForegroundColor $(if ($result.roleReviews -gt 0) { 'Green' } else { 'Red' }) Write-Host " Group Reviews: $($result.groupReviews)" -ForegroundColor $(if ($result.groupReviews -gt 0) { 'Green' } else { 'Yellow' }) Write-Host " Application Reviews: $($result.appReviews)" -ForegroundColor $(if ($result.appReviews -gt 0) { 'Green' } else { 'Yellow' }) Write-Host " Guest Reviews: $($result.guestReviews)" -ForegroundColor $(if ($result.guestReviews -gt 0) { 'Green' } else { 'Yellow' }) if ($result.reviews.Count -gt 0) { Write-Host "`n Configured Reviews:" -ForegroundColor Cyan foreach ($review in $result.reviews | Select-Object -First 10) { Write-Host " • $($review.name) [$($review.type)]" -ForegroundColor Gray Write-Host " Recurrence: $($review.recurrence)" -ForegroundColor DarkGray Write-Host " Auto-apply: $($review.autoApply)" -ForegroundColor DarkGray } if ($result.reviews.Count -gt 10) { Write-Host " ... and $($result.reviews.Count - 10) more reviews" -ForegroundColor DarkGray } } Write-Host "`n Access Review Benefits:" -ForegroundColor Cyan Write-Host " • Prevents privilege creep" -ForegroundColor Gray Write-Host " • Removes orphaned access" -ForegroundColor Gray Write-Host " • Ensures compliance" -ForegroundColor Gray Write-Host " • Automated access removal" -ForegroundColor Gray Write-Host "`n Recommendations:" -ForegroundColor Cyan if ($result.roleReviews -eq 0) { Write-Host " ⚠️ Configure monthly reviews for admin roles" -ForegroundColor Yellow } if ($result.groupReviews -eq 0) { Write-Host " ⚠️ Configure quarterly reviews for sensitive groups" -ForegroundColor Yellow } if ($result.guestReviews -eq 0) { Write-Host " ⚠️ Configure quarterly reviews for guest users" -ForegroundColor Yellow } if ($result.appReviews -eq 0) { Write-Host " ⚠️ Configure semi-annual reviews for application access" -ForegroundColor Yellow } Write-Host "`n ⚠️ Requires: Azure AD Premium P2 or M365 E5" -ForegroundColor Yellow # Compliance check: at minimum, role reviews should be configured if ($result.roleReviews -gt 0) { $result.isCompliant = $true Write-Host "`n[OK] COMPLIANT - Access Reviews are configured" -ForegroundColor Green Write-Host " Best practice: Also configure reviews for groups, apps, and guests" -ForegroundColor Cyan exit 0 } else { Write-Host "`n[FAIL] NON-COMPLIANT - No Access Reviews configured!" -ForegroundColor Red Write-Host "Configure in: Azure AD > Identity Governance > Access reviews" -ForegroundColor Yellow exit 1 } } catch { Write-Host " ⚠️ Access Reviews not available (requires Premium P2)" -ForegroundColor Yellow Write-Host " Error: $_" -ForegroundColor Red exit 0 } } catch { Write-Host "ERROR: $_" -ForegroundColor Red exit 2 } } function Invoke-Remediation { <# .SYNOPSIS Herstelt de configuratie naar de gewenste staat .DESCRIPTION Maakt Access Reviews aan voor kritieke toegangstypen wanneer deze ontbreken #> [CmdletBinding()] param( [Parameter()] [string]$TicketNumber ) try { Connect-MgGraph -Scopes "AccessReview.ReadWrite.All", "RoleManagement.ReadWrite.All", "Group.Read.All", "Application.Read.All" -ErrorAction Stop -NoWelcome Write-Host "[INFO] Checking current Access Reviews configuration..." -ForegroundColor Cyan $currentReviews = Invoke-MgGraphRequest -Method GET ` -Uri "https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions" -ErrorAction Stop $roleReviews = $currentReviews.value | Where-Object { $_.scope.query -match 'roleAssignment|roleDefinition' -or $_.displayName -match 'admin|role|privileged' } if ($roleReviews.Count -eq 0) { Write-Host "[INFO] No role reviews found. Creating recommended review..." -ForegroundColor Yellow Write-Host "[INFO] Note: This requires manual configuration via Azure Portal" -ForegroundColor Yellow Write-Host "[INFO] Recommended: Monthly review for all Azure AD directory roles" -ForegroundColor Cyan Write-Host "[INFO] Location: Azure AD > Identity Governance > Access reviews > New access review" -ForegroundColor Cyan } else { Write-Host "[OK] Role reviews are already configured" -ForegroundColor Green } Write-Host "`n[INFO] This is primarily a monitoring control" -ForegroundColor Yellow Write-Host "[INFO] For full remediation, configure reviews manually in Azure Portal:" -ForegroundColor Cyan Write-Host " 1. Roles: Monthly reviews for all directory roles" -ForegroundColor Gray Write-Host " 2. Groups: Quarterly reviews for sensitive groups" -ForegroundColor Gray Write-Host " 3. Guests: Quarterly reviews for all guest users" -ForegroundColor Gray Write-Host " 4. Apps: Semi-annual reviews for application access" -ForegroundColor Gray if ($TicketNumber) { Write-Host "`n[INFO] Ticket number: $TicketNumber" -ForegroundColor Cyan } Write-Host "`n[INFO] Running monitoring check..." -ForegroundColor Cyan Invoke-Monitoring } catch { Write-Host "ERROR: $_" -ForegroundColor Red exit 2 } } try { if ($Monitoring) { Invoke-Monitoring } else { Write-Host "Use: -Monitoring" -ForegroundColor Yellow } } catch { throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: High - Zonder Access Reviews accumuleren gebruikers onnodige rechten (privilege creep), orphaned accounts blijven actief en compliance-eisen worden niet nageleefd. Dit creëert een aanzienlijk beveiligingsrisico en vergroot het aanvalsoppervlak.

Management Samenvatting

Access Reviews voor M365: periodieke reviews voor rollen (maandelijks), groepen/gasten (kwartaal), apps (halfjaar). Automatische verwijdering bij afwijzing. Vereist Azure AD P2. Voldoet aan CIS 1.1.5 L2, BIO 09.02, ISO 27001 A.9.2.5, NIS2. Setup: 20u technical + 16u organizational.