Azure Identity Governance: Meervoudige Authenticatie Vereisen Via Conditional Access

💼 Management Samenvatting

Meervoudige authenticatie (MFA) via Conditional Access vormt de fundamentele beveiligingslaag voor moderne cloudomgevingen door wachtwoordgebaseerde aanvallen te blokkeren en identiteitsverificatie te versterken. Voor Nederlandse overheidsorganisaties is MFA niet alleen een best practice, maar een essentiële beveiligingsmaatregel die direct bijdraagt aan compliance met BIO, NIS2 en ISO 27001 door het aanvalsoppervlak te minimaliseren en identiteitsverificatie te versterken voor alle cloudtoegang.

Aanbeveling
IMPLEMENTEER CONDITIONAL ACCESS MFA VOOR ALLE GEBRUIKERS
Risico zonder
Critical
Risk Score
10/10
Implementatie
12u (tech: 4u)
Van toepassing op:
Azure AD
Entra ID
Microsoft 365
Alle Cloud Applicaties

Wachtwoorden alleen zijn fundamenteel onveilig als enige vorm van authenticatie in moderne cloudomgevingen. Zelfs sterke wachtwoorden kunnen worden gecompromitteerd via phishing-aanvallen, credential stuffing, datalekken of keyloggers, waardoor aanvallers toegang krijgen tot gevoelige systemen en gegevens. Zonder meervoudige authenticatie heeft een gecompromitteerd wachtwoord onmiddellijk volledige toegang tot alle cloudapplicaties, e-mail, documenten en gevoelige gegevens. Phishing-aanvallen zijn bijzonder effectief tegen organisaties zonder MFA, omdat aanvallers alleen een wachtwoord hoeven te stelen om volledige toegang te verkrijgen. Ransomware-actoren richten zich specifiek op organisaties zonder MFA omdat deze eenvoudiger te compromitteren zijn. Bovendien kunnen insider threats misbruik maken van gedeelde of zwakke wachtwoorden wanneer MFA niet is vereist. Meervoudige authenticatie blokkeert meer dan 99,9 procent van de accountovername-aanvallen door te vereisen dat gebruikers hun identiteit verifiëren met een tweede factor die fysiek in hun bezit moet zijn, zoals een mobiele telefoon, hardware-token of biometrische verificatie. Deze extra beveiligingslaag zorgt ervoor dat zelfs als een wachtwoord wordt gecompromitteerd, aanvallers niet direct toegang kunnen krijgen zonder de tweede authenticatiefactor.

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

Implementatie

Deze beveiligingscontrole configureert een Conditional Access-beleid dat meervoudige authenticatie vereist voor alle gebruikers bij toegang tot alle cloudapplicaties in de Azure AD-tenant. Het beleid is van toepassing op alle gebruikers, alle cloudapplicaties en alle client-applicatietypen, waardoor een universele MFA-vereiste wordt gecreëerd die alle toegang beschermt ongeacht de applicatie of het apparaat. Het beleid gebruikt de grant control 'Require multi-factor authentication' om te garanderen dat gebruikers hun identiteit moeten verifiëren met een tweede factor voordat toegang wordt verleend. Break-glass accounts moeten expliciet worden uitgesloten van dit beleid om te voorkomen dat noodgevallenaccounts worden geblokkeerd tijdens een crisis. Het beleid kan worden geconfigureerd in report-only modus voor een testperiode voordat het volledig wordt geactiveerd, waardoor organisaties de impact kunnen monitoren en eventuele problemen kunnen identificeren voordat volledige enforcement wordt ingeschakeld.

Conditional Access en Meervoudige Authenticatie

Conditional Access vormt de kern van moderne identity governance in Azure AD-omgevingen 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. Meervoudige authenticatie via Conditional Access combineert deze dynamische evaluatie met sterke identiteitsverificatie, waardoor organisaties een evenwicht kunnen vinden tussen beveiliging en gebruikerservaring.

Het concept van Conditional Access gaat verder dan alleen het vereisen van MFA voor alle toegang. Het stelt organisaties in staat om geavanceerde beveiligingsscenario's te implementeren waarbij MFA wordt vereist op basis van specifieke voorwaarden, zoals toegang vanaf onbekende locaties, gebruik van niet-beheerde apparaten, of detectie van risicovolle aanmeldingspatronen. Echter, voor de meeste organisaties, en zeker voor Nederlandse overheidsorganisaties die werken met gevoelige gegevens, vormt een universeel MFA-beleid de meest veilige en eenvoudigste benadering omdat het alle toegang beschermt zonder complexe configuraties die fouten kunnen introduceren.

Meervoudige authenticatie zelf is gebaseerd op het principe dat authenticatie moet worden gebaseerd op iets dat de gebruiker weet (wachtwoord), iets dat de gebruiker heeft (mobiele telefoon, hardware-token) of iets dat de gebruiker is (biometrische verificatie). Door meerdere factoren te combineren, wordt het aanzienlijk moeilijker voor aanvallers om toegang te verkrijgen, zelfs wanneer één factor wordt gecompromitteerd. Moderne MFA-implementaties ondersteunen verschillende authenticatiemethoden, waaronder push-meldingen via de Microsoft Authenticator-app, SMS-verificatiecodes, telefonische verificatie, hardware-tokens zoals FIDO2-security keys, en biometrische verificatie via Windows Hello of mobiele apparaten.

Voor Nederlandse overheidsorganisaties biedt Conditional Access MFA ook belangrijke compliance-voordelen omdat het direct bijdraagt aan het voldoen aan verschillende wettelijke en normatieve vereisten. De BIO vereist bijvoorbeeld meervoudige authenticatie voor toegang tot gevoelige systemen en gegevens, wat precies is wat een universeel MFA-beleid implementeert. De NIS2-richtlijn vereist passende technische maatregelen voor cybersecurity-risicobeheer, waarbij MFA een essentiële technische maatregel is. ISO 27001 bevat controles voor toegangsrechtenbeheer en authenticatie die direct worden geadresseerd door MFA-implementaties. Door Conditional Access MFA te implementeren kunnen organisaties niet alleen hun beveiligingspostuur verbeteren, maar ook aantoonbaar voldoen aan deze compliance-vereisten tijdens audits en assessments.

Implementatievereisten en Voorbereiding

De implementatie van een Conditional Access-beleid dat meervoudige authenticatie vereist voor alle gebruikers vereist een grondige voorbereiding waarbij zowel technische als organisatorische aspecten zorgvuldig moeten worden geëvalueerd en geadresseerd. Het succes van deze beveiligingsmaatregel hangt direct samen met de volledigheid van de voorbereiding, omdat het ontbreken van essentiële componenten kan leiden tot vertragingen, operationele verstoringen of onvolledige implementaties die de beveiligingsdoelstellingen niet volledig realiseren. Nederlandse overheidsorganisaties dienen daarom een gestructureerde aanpak te volgen waarbij alle vereisten systematisch worden geïnventariseerd, geëvalueerd en geadresseerd voordat de daadwerkelijke implementatie wordt gestart.

De primaire technische vereiste betreft Azure AD Premium P1 licenties, die verplicht zijn voor het gebruik van Conditional Access functionaliteit. Deze licenties vormen de fundamentele basis waarop het gehele Conditional Access-systeem draait, en zonder deze licenties is het onmogelijk om het MFA-beleid te implementeren. Organisaties moeten ervoor zorgen dat voldoende licenties beschikbaar zijn voor alle gebruikers die toegang nodig hebben tot cloudapplicaties. Het is essentieel om een grondige analyse uit te voeren waarbij het huidige aantal gebruikers wordt vergeleken met het aantal beschikbare licenties, zodat duidelijk wordt hoeveel extra licenties moeten worden aangeschaft. Deze analyse moet ook rekening houden met toekomstige groei en de mogelijkheid dat aanvullende gebruikers in de toekomst toegang nodig hebben. Bovendien moeten organisaties overwegen om licenties te koppelen aan specifieke gebruikersgroepen of afdelingen om kostenbeheer te faciliteren en om te kunnen rapporteren over licentiegebruik per organisatieonderdeel.

Voor de configuratie van Conditional Access zijn specifieke beheerdersrechten vereist. De persoon die de implementatie uitvoert moet beschikken over globale beheerdersrechten of Conditional Access Administrator rechten in Azure Active Directory, omdat Conditional Access-configuratie wijzigingen aan beleidsregels vereist die niet beschikbaar zijn voor standaard beheerders of gebruikers met beperkte rechten. Deze rechten zijn noodzakelijk om Conditional Access-beleidsregels te maken, te wijzigen en te activeren. Het is sterk aanbevolen om deze configuratietaken uit te voeren vanuit een beveiligd beheerdersaccount dat specifiek is toegewezen voor beveiligingsimplementaties, in plaats van dagelijkse beheerdersaccounts te gebruiken. Dit beveiligde account moet worden beschermd met meervoudige authenticatie, regelmatige wachtwoordrotatie en beperkte toegang tot alleen de benodigde Azure-services. Bovendien moet alle activiteit op dit account worden geauditeerd en gemonitord om te detecteren wanneer het account wordt gebruikt en voor welke doeleinden.

Voordat het MFA-beleid wordt geconfigureerd, moet een volledige en gedetailleerde inventarisatie worden uitgevoerd van alle gebruikers die toegang nodig hebben tot cloudapplicaties. Deze inventarisatie vormt de basis voor alle verdere beslissingen en moet daarom uiterst nauwkeurig en compleet zijn. De inventarisatie moet alle actieve gebruikers documenteren, inclusief reguliere gebruikers, beheerders, service accounts en gastgebruikers. Voor elke gebruiker moet worden vastgelegd of zij al zijn geregistreerd voor meervoudige authenticatie, welke authenticatiemethoden zij hebben geconfigureerd, en of zij toegang hebben tot de benodigde apparaten of methoden om MFA te voltooien. Tijdens deze inventarisatie moeten organisaties ook nagaan of gebruikers daadwerkelijk regelmatig toegang nodig hebben tot cloudapplicaties, of dat sommige accounts mogelijk inactief zijn geworden door wijzigingen in verantwoordelijkheden of organisatiestructuren.

Een kritieke voorbereidingsstap is het registreren van alle gebruikers voor meervoudige authenticatie voordat het beleid wordt geactiveerd. Gebruikers moeten hun authenticatiemethoden configureren, zoals de Microsoft Authenticator-app, SMS-verificatie, of hardware-tokens, zodat zij kunnen voldoen aan de MFA-vereiste wanneer het beleid wordt ingeschakeld. Organisaties moeten een gestructureerd registratieproces opzetten waarbij alle betrokken gebruikers worden begeleid bij het instellen van hun MFA-methoden. Dit proces moet duidelijke instructies bevatten, ondersteuning bieden voor gebruikers die hulp nodig hebben, en verificatie dat alle gebruikers succesvol zijn geregistreerd. Het is belangrijk om te voorkomen dat gebruikers worden uitgesloten van toegang omdat zij nog niet zijn geregistreerd wanneer het beleid wordt geactiveerd. Break-glass accounts vormen een uitzondering op deze regel en moeten expliciet worden uitgesloten van het MFA-beleid om te voorkomen dat deze noodgevallenaccounts worden geblokkeerd tijdens een crisis. Deze accounts moeten echter worden beveiligd met sterke wachtwoorden en moeten worden gemonitord op ongebruikelijke activiteit.

Configuratiestappen en Implementatie

De implementatie van een Conditional Access-beleid dat meervoudige authenticatie vereist voor alle gebruikers 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 voorbereiding en planning, waarin alle technische en organisatorische vereisten worden geïnventariseerd en geadresseerd. Deze fase vormt de fundamentele basis voor alle verdere beslissingen en moet daarom uiterst grondig worden uitgevoerd. De fase begint met het verifiëren dat alle benodigde Azure AD Premium P1 licenties beschikbaar zijn en correct zijn toegewezen aan gebruikers. Vervolgens moet een volledige inventarisatie worden uitgevoerd van alle gebruikers die toegang nodig hebben tot cloudapplicaties, waarbij wordt gedocumenteerd welke gebruikers al zijn geregistreerd voor MFA en welke nog moeten worden geregistreerd. Break-glass accounts moeten worden geïdentificeerd en gedocumenteerd zodat zij kunnen worden uitgesloten van het MFA-beleid. Tijdens deze fase moeten ook alle geautomatiseerde processen worden geïdentificeerd die gebruikersaccounts gebruiken voor toegang tot cloudapplicaties, omdat deze mogelijk moeten worden gemigreerd naar service principals of managed identities voordat het MFA-beleid wordt geactiveerd.

De tweede fase omvat de gebruikersregistratie voor meervoudige authenticatie, waarbij alle gebruikers worden begeleid bij het instellen van hun MFA-methoden. Deze fase is kritiek omdat gebruikers die niet zijn geregistreerd voor MFA zullen worden geblokkeerd wanneer het beleid wordt geactiveerd. Het registratieproces moet worden gestructureerd met duidelijke communicatie naar gebruikers over waarom MFA wordt geïmplementeerd, welke stappen zij moeten volgen, en waar zij hulp kunnen krijgen als zij problemen ondervinden. Organisaties moeten verschillende authenticatiemethoden ondersteunen om ervoor te zorgen dat alle gebruikers een methode kunnen kiezen die voor hen werkt, zoals de Microsoft Authenticator-app voor gebruikers met smartphones, SMS-verificatie voor gebruikers zonder smartphones, of hardware-tokens voor gebruikers met specifieke beveiligingsvereisten. Het is belangrijk om tijdens deze fase te monitoren welke gebruikers succesvol zijn geregistreerd en welke nog ondersteuning nodig hebben, zodat niemand wordt achtergelaten wanneer het beleid wordt geactiveerd.

De derde fase betreft de technische configuratie van het Conditional Access-beleid in de Azure AD-omgeving. Deze fase begint met het navigeren naar de Azure Portal, waar beheerders naar Azure Active Directory gaan, de sectie Conditional Access selecteren en klikken op nieuwe beleidsregel. Bij het configureren van de beleidsnaam is het belangrijk om een duidelijke en beschrijvende naam te kiezen die direct aangeeft wat het beleid doet, zoals 'MFA vereisen voor alle gebruikers'. De gebruikersconfiguratie moet worden ingesteld op 'Alle gebruikers' om ervoor te zorgen dat niemand wordt uitgesloten van de MFA-vereiste, met uitzondering van break-glass accounts die expliciet moeten worden uitgesloten. De cloud-applicatie selectie moet worden ingesteld op 'Alle cloud-apps' om ervoor te zorgen dat het beleid van toepassing is op alle toegang tot cloudapplicaties. De client-applicatietypen moeten worden ingesteld op 'Alle' om alle toegangspunten te dekken, inclusief browsers, mobiele apps en desktop-apps. Bij de toekenningsconfiguratie moet de optie 'Require multi-factor authentication' worden geselecteerd om te garanderen dat gebruikers hun identiteit moeten verifiëren met een tweede factor voordat toegang wordt verleend.

Voor de eerste implementatie wordt sterk aanbevolen om het beleid in te schakelen in de report-only modus, ook wel bekend als 'enabledForReportingButNotEnforced'. Deze modus evalueert alle toegangspogingen tegen het beleid zonder daadwerkelijk toegang te blokkeren of MFA te vereisen. Dit geeft organisaties de mogelijkheid om te monitoren welke gebruikers worden beïnvloed door het beleid en om te identificeren of er onverwachte problemen zijn voordat het beleid volledig wordt geactiveerd. Tijdens deze testperiode, die minimaal één week zou moeten duren, moeten beheerders de sign-in logs monitoren om te zien welke gebruikers MFA zouden moeten gebruiken en of er gebruikers zijn die nog niet zijn geregistreerd voor MFA. Eventuele geïdentificeerde problemen moeten worden opgelost voordat het beleid volledig wordt geactiveerd.

De vierde fase omvat de volledige activatie van het beleid na de monitoringperiode en na het oplossen van eventuele geïdentificeerde problemen. Het beleid moet worden overgeschakeld van report-only naar volledig ingeschakeld ('enabled'). Deze overgang moet zorgvuldig worden gepland, bij voorkeur tijdens een onderhoudsvenster of een periode met lage activiteit, om eventuele verstoringen te minimaliseren. Zodra het beleid is geactiveerd, moeten alle gebruikers meervoudige authenticatie gebruiken bij elke poging tot toegang tot cloudapplicaties. Het is belangrijk om tijdens de eerste dagen na activatie extra monitoring uit te voeren om te verzekeren dat het beleid correct functioneert en dat gebruikers geen onverwachte problemen ondervinden. Een helpdesk moet worden voorbereid om gebruikers te ondersteunen die problemen ondervinden met MFA, en er moeten duidelijke procedures worden opgesteld voor scenario's waarin gebruikers hun MFA-methoden niet kunnen gebruiken.

Monitoring, Governance en Continue Verbetering

Gebruik PowerShell-script conditional-access-require-mfa.ps1 (functie Invoke-Monitoring) – Controleert de Conditional Access MFA-configuratie en identificeert gebruikers die nog niet zijn geregistreerd voor MFA..

Continue monitoring en alerting zijn essentieel voor het waarborgen van de effectiviteit van het Conditional Access MFA-beleid en voor het detecteren van beveiligingsincidenten, misbruik en compliance-afwijkingen. Conditional Access-waarschuwingen moeten worden geconfigureerd voor kritieke gebeurtenissen die onmiddellijke aandacht vereisen, zoals meerdere mislukte MFA-pogingen van hetzelfde account, toegangspogingen van onbekende locaties, of pogingen om het MFA-beleid te omzeilen. 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 MFA-pogingen moeten ook worden gecontroleerd en geauditeerd omdat deze kunnen wijzen op brute-force aanvallen of op gecompromitteerde accounts die proberen toegang te krijgen zonder de tweede authenticatiefactor.

Wekelijkse reviews moeten worden uitgevoerd waarbij wordt geanalyseerd wie MFA heeft gebruikt, welke authenticatiemethoden zijn gebruikt, en of er patronen zijn die wijzen op ongebruikelijk gedrag zoals MFA-verificaties buiten normale werkuren, meerdere mislukte MFA-pogingen van dezelfde gebruiker, of toegangspogingen vanaf onbekende locaties. 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 MFA-beleid. Bovendien moeten periodieke controles worden uitgevoerd om te verifiëren dat alle gebruikers nog steeds zijn geregistreerd voor MFA en dat hun authenticatiemethoden nog steeds actief en bruikbaar zijn.

Governance van Conditional Access MFA vereist duidelijke rollen en verantwoordelijkheden binnen de organisatie. Een Conditional Access-beheerder moet worden aangewezen die verantwoordelijk is voor de dagelijkse configuratie en het onderhoud van het beleid, inclusief het toewijzen van uitzonderingen, het configureren van aanvullende voorwaarden en het beheren van gebruikersregistraties. Het beveiligingsteam moet verantwoordelijk zijn voor het monitoren van MFA-gebruik, het analyseren van patronen en het reageren op verdachte activiteiten. De helpdesk moet worden getraind in het ondersteunen van gebruikers die problemen ondervinden met MFA en in het resetten van authenticatiemethoden wanneer nodig. 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 MFA-beheer.

Compliance en Auditing

Meervoudige authenticatie via Conditional Access 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.04 betreft meervoudige authenticatie en vereist specifiek dat organisaties meervoudige authenticatie implementeren voor toegang tot gevoelige systemen en gegevens. Deze vereiste is gebaseerd op het principe dat wachtwoorden alleen onvoldoende zijn voor het beschermen van gevoelige informatie en dat aanvullende authenticatiefactoren nodig zijn om de beveiliging te versterken. Conditional Access MFA is een directe implementatie van dit thema, omdat het universeel meervoudige authenticatie vereist voor alle toegang tot cloudapplicaties, waardoor alle gevoelige systemen en gegevens worden beschermd.

ISO 27001:2022 bevat verschillende controles die relevant zijn voor meervoudige authenticatie, waaronder A.9.4.2 en A.9.4.3, die beide betrekking hebben op toegangsbeheer en authenticatie. Controle A.9.4.2 betreft gebruikersauthenticatie en vereist dat organisaties passende authenticatiemechanismen implementeren voor gebruikers, waarbij meervoudige authenticatie wordt aanbevolen voor toegang tot gevoelige systemen. Controle A.9.4.3 betreft toegangscontrole voor beheersystemen en vereist dat organisaties passende authenticatiemechanismen implementeren voor toegang tot beheersystemen. Conditional Access MFA implementeert beide controles door universeel meervoudige authenticatie te vereisen voor alle gebruikers en alle toegang, waardoor organisaties kunnen aantonen dat zij passende authenticatiemechanismen hebben geïmplementeerd voor zowel reguliere gebruikers als beheerders.

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 authenticatie en 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. Meervoudige authenticatie is een belangrijke technische maatregel die organisaties helpen te voldoen aan deze vereisten door het aanvalsoppervlak te minimaliseren en identiteitsverificatie te versterken. Conditional Access MFA is een directe implementatie van deze maatregel omdat het universeel meervoudige authenticatie vereist voor alle toegang, waardoor alle gebruikers en alle systemen worden beschermd.

Voor auditdoeleinden moeten organisaties kunnen aantonen dat het Conditional Access MFA-beleid correct is geconfigureerd en actief is. Dit vereist het bijhouden van screenshots van de beleidsconfiguratie, sign-in logs die MFA-verificatie tonen voor alle toegangspogingen, en documentatie van de implementatieprocedure. Auditoren zullen controleren of het beleid daadwerkelijk wordt toegepast op alle gebruikers en of er geen uitzonderingen zijn gemaakt die de beveiliging kunnen compromitteren. Het is belangrijk om regelmatig te controleren of het beleid nog actief is en of er geen wijzigingen zijn aangebracht die de effectiviteit kunnen verminderen. Bovendien moeten organisaties kunnen aantonen dat alle gebruikers zijn geregistreerd voor MFA en dat hun authenticatiemethoden actief en bruikbaar zijn.

Remediatie

Gebruik PowerShell-script conditional-access-require-mfa.ps1 (functie Invoke-Remediation) – Ondersteunt het identificeren en configureren van Conditional Access MFA-beleid voor alle gebruikers..

Remediatie binnen het Conditional Access MFA-domein betekent in de praktijk dat u gaten dicht tussen de gewenste compliance-status en de werkelijkheid. In veel organisaties bestaan al wel beleidsdocumenten over meervoudige authenticatie, maar ontbreekt concrete vastlegging van hoe deze worden vertaald naar Conditional Access-configuraties, welke gebruikers daadwerkelijk zijn geregistreerd voor MFA, en hoe het MFA-beleid wordt gemonitord en verbeterd. Het remediatiescript ondersteunt dit proces door automatisch te inventariseren waar Conditional Access MFA-beleid ontbreekt, waar gebruikers nog niet zijn geregistreerd voor MFA, en waar documentatie verouderd of incompleet is. Op basis van deze inventarisatie kunnen gerichte verbeteracties worden gepland en uitgevoerd, waarbij prioriteit wordt gegeven aan de meest kritieke hiaten die de grootste impact hebben op risico's en wettelijke naleving.

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 Conditional Access MFA .DESCRIPTION Controleert de Conditional Access MFA-configuratie voor alle gebruikers, identificeert gebruikers die nog niet zijn geregistreerd voor MFA, en biedt handvatten voor implementatie. .NOTES Filename: conditional-access-require-mfa.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/conditional-access-require-mfa.json .LINK https://github.com/[org]/m365-tenant-best-practise .EXAMPLE .\conditional-access-require-mfa.ps1 -Monitoring Toont een overzicht van Conditional Access MFA-configuratie en identificeert gebruikers zonder MFA-registratie. .EXAMPLE .\conditional-access-require-mfa.ps1 -Remediation Genereert een overzicht van ontbrekende MFA-configuraties en biedt handvatten voor implementatie. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Identity.SignIns [CmdletBinding()] param( [Parameter(HelpMessage = "Voer monitoring uit van de Conditional Access MFA-configuratie en identificeer gebruikers zonder MFA-registratie.")] [switch]$Monitoring, [Parameter(HelpMessage = "Genereer remediatie-overzichten en handvatten voor Conditional Access MFA-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 Get-ConditionalAccessMFAStatus { <# .SYNOPSIS Inventariseert de Conditional Access MFA-configuratiestatus. .OUTPUTS PSCustomObject met Conditional Access MFA-configuratiestatus. #> [CmdletBinding()] param() $mgConnected = Test-AzureADConnection if (-not $mgConnected) { Write-Warning "Geen actieve verbinding. Verbind met Connect-MgGraph voor Conditional Access MFA-monitoring." return [pscustomobject]@{ AzureADConnected = $false MFARequiredPolicyExists = $null UsersWithoutMFA = 0 TotalUsers = 0 MFAEnrollmentRate = 0 } } $mfaPolicyExists = $false $usersWithoutMFA = 0 $totalUsers = 0 $mfaEnrollmentRate = 0 try { Write-Verbose "Inventariseren van Conditional Access-beleidsregels..." # Haal Conditional Access-beleidsregels op try { $caPolicies = Get-MgIdentityConditionalAccessPolicy -ErrorAction SilentlyContinue # Zoek naar MFA-beleidsregels foreach ($policy in $caPolicies) { if ($policy.State -eq "enabled" -or $policy.State -eq "enabledForReportingButNotEnforced") { # Controleer of het beleid MFA vereist if ($policy.GrantControls -and $policy.GrantControls.BuiltInControls -contains "mfa") { # Controleer of het beleid van toepassing is op alle gebruikers if ($policy.Conditions -and $policy.Conditions.Users -and $policy.Conditions.Users.IncludeUsers -contains "All") { $mfaPolicyExists = $true Write-Verbose "Gevonden MFA-beleid: $($policy.DisplayName) (Status: $($policy.State))" } } } } } catch { Write-Verbose "Kon Conditional Access-beleidsregels niet ophalen: $_" } # Haal gebruikers op en controleer MFA-registratie try { Write-Verbose "Inventariseren van gebruikers en MFA-registratiestatus..." $users = Get-MgUser -All -Property Id, DisplayName, UserPrincipalName, AccountEnabled -ErrorAction SilentlyContinue $totalUsers = $users.Count foreach ($user in $users) { if (-not $user.AccountEnabled) { continue } # Controleer MFA-registratie try { $authMethods = Get-MgUserAuthenticationMethod -UserId $user.Id -ErrorAction SilentlyContinue # Controleer of gebruiker geregistreerd is voor MFA $hasMFA = $false if ($authMethods) { foreach ($method in $authMethods) { # Controleer op verschillende MFA-methoden if ($method.AdditionalProperties.'@odata.type' -like '*PhoneAuthenticationMethod*' -or $method.AdditionalProperties.'@odata.type' -like '*MicrosoftAuthenticatorAuthenticationMethod*' -or $method.AdditionalProperties.'@odata.type' -like '*Fido2AuthenticationMethod*' -or $method.AdditionalProperties.'@odata.type' -like '*WindowsHelloForBusinessAuthenticationMethod*') { $hasMFA = $true break } } } if (-not $hasMFA) { $usersWithoutMFA++ } } catch { Write-Verbose "Kon MFA-status niet ophalen voor gebruiker $($user.UserPrincipalName): $_" $usersWithoutMFA++ } } if ($totalUsers -gt 0) { $mfaEnrollmentRate = [math]::Round((($totalUsers - $usersWithoutMFA) / $totalUsers) * 100, 2) } } catch { Write-Verbose "Kon gebruikers niet ophalen: $_" } } catch { Write-Warning "Fout bij inventariseren van Conditional Access MFA-status: $_" } return [pscustomobject]@{ AzureADConnected = $mgConnected MFARequiredPolicyExists = $mfaPolicyExists UsersWithoutMFA = $usersWithoutMFA TotalUsers = $totalUsers MFAEnrollmentRate = $mfaEnrollmentRate } } function Invoke-Monitoring { <# .SYNOPSIS Voert monitoring uit van Conditional Access MFA-configuratie en identificeert gebruikers zonder MFA-registratie. .OUTPUTS PSCustomObject met monitoringresultaten. #> [CmdletBinding()] param() Write-Host "`nMonitoring: Azure Identity Governance Conditional Access MFA" -ForegroundColor Yellow Write-Host "=============================================================" -ForegroundColor Yellow $mfaStatus = Get-ConditionalAccessMFAStatus if ($mfaStatus.AzureADConnected) { Write-Host "`nConditional Access MFA-status:" -ForegroundColor Cyan Write-Host " MFA-beleid aanwezig: $($mfaStatus.MFARequiredPolicyExists)" -ForegroundColor $(if ($mfaStatus.MFARequiredPolicyExists) { "Green" } else { "Red" }) Write-Host " Totaal gebruikers: $($mfaStatus.TotalUsers)" -ForegroundColor Gray Write-Host " Gebruikers zonder MFA: $($mfaStatus.UsersWithoutMFA)" -ForegroundColor $(if ($mfaStatus.UsersWithoutMFA -eq 0) { "Green" } else { "Yellow" }) Write-Host " MFA-registratiepercentage: $($mfaStatus.MFAEnrollmentRate)%" -ForegroundColor $(if ($mfaStatus.MFAEnrollmentRate -ge 95) { "Green" } elseif ($mfaStatus.MFAEnrollmentRate -ge 80) { "Yellow" } else { "Red" }) } else { Write-Host "`n⚠️ Geen actieve Microsoft Graph-verbinding. Verbind met Connect-MgGraph voor Conditional Access MFA-monitoring." -ForegroundColor Yellow } Write-Host "`nHandmatige verificatie vereist:" -ForegroundColor Cyan Write-Host " Controleer in Entra ID portal:" -ForegroundColor Gray Write-Host " - Conditional Access > Policies" -ForegroundColor Gray Write-Host " - Zoek naar beleid dat MFA vereist voor alle gebruikers" -ForegroundColor Gray Write-Host " - Verifieer dat beleid is ingesteld op 'On' of 'Report-only'" -ForegroundColor Gray Write-Host " - Controleer gebruikersscope: moet 'All users' zijn (met uitzondering break-glass accounts)" -ForegroundColor Gray Write-Host " - Controleer cloud-apps scope: moet 'All cloud apps' zijn" -ForegroundColor Gray Write-Host " - Controleer grant controls: moet 'Require multi-factor authentication' bevatten" -ForegroundColor Gray Write-Host " Controleer MFA-registratie:" -ForegroundColor Gray Write-Host " - Entra ID > Users > Per-user MFA" -ForegroundColor Gray Write-Host " - Verifieer dat alle gebruikers zijn geregistreerd voor MFA" -ForegroundColor Gray Write-Host " - Controleer authenticatiemethoden per gebruiker" -ForegroundColor Gray $isCompliant = $true if (-not $mfaStatus.MFARequiredPolicyExists) { $isCompliant = $false Write-Host "`n⚠️ Geen Conditional Access MFA-beleid gevonden dat MFA vereist voor alle gebruikers." -ForegroundColor Yellow Write-Host " Gebruik -Remediation voor gedetailleerde analyse en implementatiehandvatten." -ForegroundColor Yellow } if ($mfaStatus.UsersWithoutMFA -gt 0) { $isCompliant = $false Write-Host "`n⚠️ Er zijn $($mfaStatus.UsersWithoutMFA) gebruikers zonder MFA-registratie gedetecteerd." -ForegroundColor Yellow Write-Host " Zorg ervoor dat alle gebruikers zijn geregistreerd voor MFA voordat het beleid wordt geactiveerd." -ForegroundColor Yellow } return [pscustomobject]@{ MFAStatus = $mfaStatus IsCompliant = $isCompliant } } function Invoke-Remediation { <# .SYNOPSIS Ondersteunt remediatie door Conditional Access MFA-configuratie te analyseren en handvatten te bieden voor implementatie. .OUTPUTS PSCustomObject met remediatieadvies. #> [CmdletBinding()] param() Write-Host "`nRemediatie: Azure Identity Governance Conditional Access MFA Implementatie" -ForegroundColor Yellow Write-Host "========================================================================" -ForegroundColor Yellow $mfaStatus = Get-ConditionalAccessMFAStatus $actions = @() Write-Host "`nConditional Access MFA-implementatie analyse:" -ForegroundColor Cyan if (-not $mfaStatus.MFARequiredPolicyExists) { $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, State: Report-only (voor testperiode) of On (voor productie)." } $actions += $action Write-Host " ❌ $($action.Issue)" -ForegroundColor Red Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } if ($mfaStatus.UsersWithoutMFA -gt 0) { $action = [pscustomobject]@{ Priority = "High" Issue = "Gebruikers zonder MFA-registratie" Count = $mfaStatus.UsersWithoutMFA Recommendation = "Registreer alle gebruikers voor MFA voordat het Conditional Access-beleid wordt geactiveerd. Gebruik Entra ID > Users > Per-user MFA of forceer MFA-registratie via security defaults of Conditional Access-registratiebeleid." } $actions += $action Write-Host " ❌ $($action.Issue): $($action.Count) gebruikers" -ForegroundColor Red Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } if ($mfaStatus.MFAEnrollmentRate -lt 95) { $action = [pscustomobject]@{ Priority = "Medium" Issue = "MFA-registratiepercentage onder 95%" Count = $mfaStatus.MFAEnrollmentRate Recommendation = "Verhoog MFA-registratiepercentage naar minimaal 95% door gebruikers te begeleiden bij MFA-registratie en communicatie over het belang van MFA." } $actions += $action Write-Host " ⚠️ $($action.Issue): $($action.Count)%" -ForegroundColor Yellow Write-Host " → $($action.Recommendation)" -ForegroundColor Gray } Write-Host "`nVolgende stappen:" -ForegroundColor Cyan Write-Host "1. Verifieer Azure AD Premium P1 licenties voor alle gebruikers" -ForegroundColor White Write-Host "2. Identificeer en documenteer break-glass accounts (uitsluiten van MFA-beleid)" -ForegroundColor White Write-Host "3. Registreer alle gebruikers voor MFA (Microsoft Authenticator, FIDO2, Windows Hello)" -ForegroundColor White Write-Host "4. Maak Conditional Access-beleid aan: MFA vereisen voor alle gebruikers" -ForegroundColor White Write-Host "5. Test beleid in Report-only modus gedurende minimaal 1 week" -ForegroundColor White Write-Host "6. Monitor sign-in logs voor MFA-verificaties en geblokkeerde aanmeldingen" -ForegroundColor White Write-Host "7. Activeer beleid volledig na succesvolle testperiode" -ForegroundColor White Write-Host "8. Configureer waarschuwingen voor mislukte MFA-pogingen en verdachte activiteiten" -ForegroundColor White return [pscustomobject]@{ Actions = $actions MFAStatus = $mfaStatus } } try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Azure Identity Governance CA MFA 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 Conditional Access MFA 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 conditional-access-require-mfa.ps1: $_" exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Critical: Zonder meervoudige authenticatie betekent een gecompromitteerd wachtwoord volledige toegang tot alle cloudapplicaties, e-mail, documenten en gevoelige gegevens. Phishing-aanvallen zijn bijzonder effectief tegen organisaties zonder MFA, omdat aanvallers alleen een wachtwoord hoeven te stelen. Ransomware-actoren richten zich specifiek op organisaties zonder MFA omdat deze eenvoudiger te compromitteren zijn. Meervoudige authenticatie blokkeert meer dan 99,9 procent van de accountovername-aanvallen. Compliancevereisten: CIS 1.4, BIO 9.04, ISO 27001 A.9.4.2, NIS2. Het risico is KRITIEK voor alle organisaties.

Management Samenvatting

Conditional Access MFA: Vereis meervoudige authenticatie voor alle gebruikers bij toegang tot alle cloudapplicaties. Activatie: Conditional Access → Nieuwe beleidsregel → Gebruikers: Alle gebruikers → Cloud-apps: Alle cloud-apps → Grant: Require MFA. Break-glass accounts uitsluiten. Vereist: Azure AD P1. Verplicht CIS 1.4, BIO 9.04, NIS2. Implementatie: 4 uur technisch + 8 uur organisatorisch. Reduceert accountovername-aanvallen met 99,9 procent.