Micro-segmentatie In Azure: Granulaire Netwerkbeveiliging Op Workload-niveau

💼 Management Samenvatting

Micro-segmentatie vertegenwoordigt de volgende evolutie in netwerkbeveiliging door beveiligingscontroles te verplaatsen van netwerkperimeter naar individuele workloads, waardoor organisaties een Zero Trust-architectuur kunnen implementeren waarbij elk systeem wordt behandeld als onbetrouwbaar totdat zijn identiteit en autorisatie zijn geverifieerd. In tegenstelling tot traditionele netwerksegmentatie die verkeer controleert op subnet- of netwerkniveau, maakt micro-segmentatie het mogelijk om beveiligingsregels te definiëren op het niveau van individuele virtuele machines, containers of applicaties, waardoor laterale beweging door aanvallers wordt voorkomen zelfs wanneer zij toegang krijgen tot een deel van het netwerk. Voor Nederlandse overheidsorganisaties die moeten voldoen aan strikte beveiligingsvereisten en compliance-frameworks zoals BIO, NIS2 en ISO 27001 biedt micro-segmentatie een krachtige manier om netwerkbeveiliging te versterken en de impact van beveiligingsincidenten te beperken door ervoor te zorgen dat aanvallers niet vrijelijk tussen systemen kunnen bewegen, zelfs wanneer zij toegang krijgen tot één gecompromitteerd systeem.

Aanbeveling
IMPLEMENTEER MICRO-SEGMENTATIE VOOR GRANULAIRE NETWERKBEVEILIGING
Risico zonder
High
Risk Score
8/10
Implementatie
24u (tech: 16u)
Van toepassing op:
Azure Virtual Networks
Virtuele Machines
Network Security Groups
Application Security Groups
Azure Firewall

Traditionele netwerksegmentatie op subnet-niveau biedt onvoldoende bescherming tegen moderne bedreigingen waarbij aanvallers die toegang krijgen tot één systeem binnen een subnet vervolgens vrijelijk kunnen communiceren met alle andere systemen in datzelfde subnet zonder aanvullende beveiligingscontroles. Dit creëert aanzienlijke beveiligingsrisico's: een gecompromitteerde webserver kan direct communiceren met databaseservers in hetzelfde subnet, een geïnfecteerde applicatieserver kan lateraal bewegen naar andere applicatieservers zonder detectie, en een aanvaller die toegang krijgt tot één virtuele machine kan potentiële toegang krijgen tot alle workloads binnen hetzelfde netwerksegment. Deze laterale beweging vormt een van de grootste uitdagingen in moderne cybersecurity, omdat aanvallers vaak beginnen met toegang tot een minder kritiek systeem en vervolgens hun privileges escaleren door zich lateraal door het netwerk te bewegen naar meer waardevolle doelen. Micro-segmentatie lost dit probleem op door beveiligingscontroles te implementeren op het niveau van individuele workloads, waardoor elke virtuele machine, container of applicatie zijn eigen beveiligingsperimeter heeft die wordt gecontroleerd door Network Security Groups, Application Security Groups of Azure Firewall-regels. Zelfs wanneer een aanvaller toegang krijgt tot één systeem, kunnen zij niet automatisch communiceren met andere systemen omdat elke workload expliciete toestemming vereist voor netwerkcommunicatie. Dit beperkt de impact van beveiligingsincidenten aanzienlijk en maakt het voor aanvallers veel moeilijker om lateraal door het netwerk te bewegen naar kritieke systemen of gevoelige data. Voor Nederlandse overheidsorganisaties die moeten voldoen aan BIO-normen voor netwerkbeveiliging en NIS2-vereisten voor risicobeheersing is micro-segmentatie niet alleen een best practice, maar vaak een verplicht onderdeel van een effectieve beveiligingsarchitectuur die kan worden aangetoond tijdens audits en toezicht-inspecties.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Network, Az.Resources, Az.Compute, Az.Accounts

Implementatie

Dit artikel beschrijft hoe organisaties binnen de Nederlandse Baseline voor Veilige Cloud micro-segmentatie implementeren in Azure-omgevingen om granulaire netwerkbeveiliging te bereiken op workload-niveau. De focus ligt op zes hoofdcomponenten. Ten eerste conceptuele basis: het begrijpen van wat micro-segmentatie is, hoe het verschilt van traditionele netwerksegmentatie, en welke voordelen het biedt voor beveiliging en compliance. Ten tweede architectuur en ontwerp: het plannen van micro-segmentatie-strategieën op basis van workload-rollen, applicatie-afhankelijkheden en beveiligingsvereisten, het ontwerpen van beveiligingsregels die communicatie tussen individuele workloads controleren, en het integreren van micro-segmentatie in bestaande netwerkarchitecturen. Ten derde implementatie met Network Security Groups: het configureren van NSG-regels op netwerkinterface-niveau voor individuele virtuele machines, het gebruik van Application Security Groups voor workload-gebaseerde regels, en het combineren van subnet- en interface-niveau regels voor gelaagde beveiliging. Ten vierde implementatie met Azure Firewall: het gebruik van Azure Firewall voor geavanceerde micro-segmentatie met applicatie- en FQDN-gebaseerde regels, het integreren van threat intelligence voor automatische blokkering van kwaadaardig verkeer, en het implementeren van gedistribueerde firewall-regels voor verschillende workloads. Ten vijfde monitoring en verificatie: het monitoren van netwerkverkeer tussen workloads om te verifiëren dat micro-segmentatie effectief werkt, het identificeren van ongeautoriseerde communicatiepaden, en het gebruik van Azure Network Watcher en Log Analytics voor diepgaande netwerkanalyse. Ten zesde governance en compliance: het opzetten van processen voor het beheren van micro-segmentatie-regels, het documenteren van workload-afhankelijkheden en communicatiepatronen, en het borgen van compliance met relevante frameworks. Het bijbehorende PowerShell-script inventariseert alle workloads en hun netwerkconfiguraties, controleert of micro-segmentatie correct is geïmplementeerd, valideert beveiligingsregels op workload-niveau, en identificeert workloads die onvoldoende bescherming hebben tegen laterale beweging.

Concepten en fundamenten van micro-segmentatie

Micro-segmentatie vertegenwoordigt een fundamentele verschuiving in netwerkbeveiligingsfilosofie van perimeter-gebaseerde beveiliging naar workload-gebaseerde beveiliging, waarbij beveiligingscontroles worden geïmplementeerd op het niveau van individuele workloads in plaats van op netwerkperimeters. In traditionele netwerksegmentatie worden netwerken opgedeeld in subnetten of zones, en beveiligingsregels worden toegepast op het niveau van deze subnetten, waarbij alle systemen binnen een subnet dezelfde beveiligingsregels delen. Dit betekent dat wanneer een aanvaller toegang krijgt tot één systeem binnen een subnet, zij theoretisch kunnen communiceren met alle andere systemen in dat subnet zonder aanvullende beveiligingscontroles. Micro-segmentatie lost dit probleem op door beveiligingsregels te verplaatsen naar het niveau van individuele netwerkinterfaces, virtuele machines of applicaties, waardoor elke workload zijn eigen beveiligingsperimeter heeft die wordt gecontroleerd door specifieke Network Security Group-regels, Application Security Group-toewijzingen of Azure Firewall-regels. Deze aanpak maakt het mogelijk om zeer granulaire beveiligingscontroles te implementeren waarbij bijvoorbeeld een webserver alleen kan communiceren met specifieke applicatieservers op specifieke poorten, en applicatieservers alleen kunnen communiceren met specifieke databaseservers, zelfs wanneer al deze workloads zich in hetzelfde subnet bevinden. Door beveiligingscontroles te verplaatsen naar workload-niveau wordt laterale beweging door aanvallers aanzienlijk beperkt, omdat elke communicatiepoging tussen workloads expliciet moet worden toegestaan door beveiligingsregels, en ongeautoriseerde communicatie automatisch wordt geblokkeerd.

Het verschil tussen traditionele netwerksegmentatie en micro-segmentatie kan het beste worden geïllustreerd aan de hand van een praktisch voorbeeld. In een traditionele drie-lagen applicatie-architectuur met webservers, applicatieservers en databaseservers in aparte subnetten, worden beveiligingsregels typisch toegepast op subnet-niveau: alle webservers kunnen communiceren met alle applicatieservers, en alle applicatieservers kunnen communiceren met alle databaseservers. Wanneer een aanvaller toegang krijgt tot één webserver, kunnen zij theoretisch alle applicatieservers benaderen, en wanneer zij toegang krijgen tot één applicatieserver, kunnen zij alle databaseservers benaderen. In een micro-segmenteerde architectuur worden beveiligingsregels gedefinieerd op het niveau van individuele workloads: webserver A kan alleen communiceren met applicatieserver B op poort 443, applicatieserver B kan alleen communiceren met databaseserver C op poort 1433, en alle andere communicatie wordt geblokkeerd. Dit betekent dat zelfs wanneer een aanvaller toegang krijgt tot webserver A, zij alleen kunnen communiceren met applicatieserver B, en niet met andere applicatieservers. Wanneer zij toegang krijgen tot applicatieserver B, kunnen zij alleen communiceren met databaseserver C, en niet met andere databaseservers. Deze granulaire controle beperkt de impact van beveiligingsincidenten aanzienlijk en maakt het voor aanvallers veel moeilijker om lateraal door het netwerk te bewegen naar kritieke systemen of gevoelige data. Micro-segmentatie is daarom een essentieel onderdeel van Zero Trust-architecturen, waarbij het principe 'never trust, always verify' wordt toegepast op elk niveau van de netwerkarchitectuur, niet alleen op de perimeter.

Azure biedt verschillende technologieën voor het implementeren van micro-segmentatie, elk met hun eigen voordelen en use cases. Network Security Groups (NSG's) vormen de meest fundamentele technologie voor micro-segmentatie en kunnen worden toegepast op netwerkinterfaces van individuele virtuele machines, waardoor zeer specifieke beveiligingsregels kunnen worden gedefinieerd per workload. NSG's maken het mogelijk om verkeer te filteren op basis van bron- en doel-IP-adressen, poorten, protocollen en servicetags, en kunnen zowel inkomend als uitgaand verkeer controleren. Application Security Groups (ASG's) breiden NSG-functionaliteit uit door workloads logisch te groeperen op basis van hun functionele rol in plaats van hun IP-adres, waardoor beveiligingsregels kunnen worden gedefinieerd in termen van workload-rollen zoals 'WebServers' of 'DatabaseServers' in plaats van specifieke IP-adressen. Dit maakt beveiligingsregels schaalbaarder en onderhoudbaarder, omdat wanneer nieuwe workloads worden toegevoegd aan een rol, zij automatisch de juiste beveiligingsregels krijgen door eenvoudigweg te worden toegewezen aan de juiste ASG. Azure Firewall biedt geavanceerde micro-segmentatie-mogelijkheden met applicatie- en FQDN-gebaseerde regels, threat intelligence-integratie, en gedistribueerde firewall-regels die kunnen worden toegepast op verschillende workloads. Azure Firewall is met name geschikt voor complexe scenario's waarbij geavanceerde filtering nodig is op basis van applicatie-identiteit in plaats van alleen IP-adressen en poorten, en voor scenario's waarbij gecentraliseerd beheer van firewall-regels gewenst is. De keuze tussen deze technologieën hangt af van de specifieke beveiligingsvereisten, de complexiteit van de workload-architectuur, en de operationele voorkeuren van de organisatie.

Voor Nederlandse overheidsorganisaties biedt micro-segmentatie belangrijke voordelen voor compliance met relevante beveiligingsframeworks. De Baseline Informatiebeveiliging Overheid (BIO) vereist in norm 13.01 dat organisaties hun netwerken segmenteren om de impact van beveiligingsincidenten te beperken en om te voorkomen dat aanvallers zich lateraal door het netwerk kunnen bewegen. Micro-segmentatie gaat verder dan traditionele netwerksegmentatie door deze bescherming te bieden op workload-niveau, waardoor organisaties kunnen aantonen dat zij niet alleen netwerken hebben gesegmenteerd, maar ook dat individuele workloads zijn beschermd tegen laterale beweging. ISO 27001 vereist in controle A.8.20 dat organisaties passende netwerkbeveiligingsmaatregelen implementeren, en micro-segmentatie biedt een concrete manier om aan te tonen dat netwerkbeveiliging is geïmplementeerd op het meest granulaire niveau. NIS2 vereist in artikel 21 dat organisaties passende technische maatregelen nemen voor netwerkbeveiliging, en micro-segmentatie helpt organisaties om aan te tonen dat zij geavanceerde beveiligingsmaatregelen hebben geïmplementeerd die verder gaan dan basis netwerksegmentatie. Tijdens audits en toezicht-inspecties kunnen organisaties aantonen dat micro-segmentatie is geïmplementeerd door documentatie te tonen van workload-specifieke beveiligingsregels, door monitoring-data te tonen die aantoont dat laterale beweging wordt geblokkeerd, en door testresultaten te tonen die verifiëren dat micro-segmentatie effectief werkt.

Architectuur en ontwerp van micro-segmentatie

Het ontwerpen van een effectieve micro-segmentatie-architectuur vereist een grondige analyse van workload-afhankelijkheden, communicatiepatronen en beveiligingsvereisten. Organisaties moeten beginnen met het in kaart brengen van alle workloads in hun Azure-omgeving, het identificeren van welke workloads met elkaar communiceren, welke protocollen en poorten worden gebruikt voor deze communicatie, en welke data wordt uitgewisseld tussen workloads. Deze analyse vormt de basis voor het ontwerpen van micro-segmentatie-regels die alleen noodzakelijke communicatie toestaan en alle andere communicatie blokkeren volgens het principe van minimale privileges. Het is belangrijk om te realiseren dat micro-segmentatie niet betekent dat alle communicatie tussen workloads moet worden geblokkeerd; in plaats daarvan moeten organisaties een balans vinden tussen beveiliging en functionaliteit door alleen die communicatie toe te staan die daadwerkelijk nodig is voor bedrijfsprocessen, terwijl alle andere communicatie wordt geblokkeerd. Deze balans vereist nauwe samenwerking tussen netwerkarchitecten, beveiligingsfunctionarissen en applicatie-eigenaren om te begrijpen welke communicatie legitiem is en welke mogelijk kwaadaardig of onnodig is.

Een belangrijke overweging bij het ontwerpen van micro-segmentatie is het kiezen tussen verschillende implementatiebenaderingen. De eerste benadering is interface-niveau NSG-regels, waarbij Network Security Groups worden toegepast op netwerkinterfaces van individuele virtuele machines met zeer specifieke regels die communicatie tussen specifieke workloads controleren. Deze benadering biedt de meeste granulariteit en controle, maar kan complex worden om te beheren wanneer er veel workloads zijn, omdat elke workload zijn eigen set NSG-regels heeft. De tweede benadering is Application Security Groups, waarbij workloads worden gegroepeerd op basis van hun functionele rol en NSG-regels worden gedefinieerd in termen van deze groepen. Deze benadering is schaalbaarder en onderhoudbaarder, omdat wanneer nieuwe workloads worden toegevoegd aan een rol, zij automatisch de juiste beveiligingsregels krijgen door eenvoudigweg te worden toegewezen aan de juiste ASG. De derde benadering is Azure Firewall met gedistribueerde regels, waarbij Azure Firewall wordt gebruikt voor geavanceerde filtering op basis van applicatie-identiteit, FQDN's en threat intelligence. Deze benadering is met name geschikt voor complexe scenario's waarbij geavanceerde filtering nodig is, en voor scenario's waarbij gecentraliseerd beheer gewenst is. In de praktijk gebruiken organisaties vaak een combinatie van deze benaderingen, waarbij NSG's worden gebruikt voor basis filtering op interface-niveau, ASG's worden gebruikt voor workload-gebaseerde groepering, en Azure Firewall wordt gebruikt voor geavanceerde filtering waar nodig.

Het ontwerpen van micro-segmentatie-regels vereist een diepgaand begrip van applicatie-afhankelijkheden en communicatiepatronen. Organisaties moeten beginnen met het documenteren van alle applicatie-afhankelijkheden, waarbij wordt vastgelegd welke workloads met elkaar communiceren, welke protocollen en poorten worden gebruikt, en welke data wordt uitgewisseld. Deze documentatie kan worden gebruikt om een communicatiematrix te maken die duidelijk toont welke workloads met elkaar mogen communiceren en welke niet. Deze matrix vormt de basis voor het ontwerpen van micro-segmentatie-regels die alleen noodzakelijke communicatie toestaan. Het is belangrijk om te realiseren dat applicatie-afhankelijkheden kunnen veranderen wanneer applicaties worden bijgewerkt, nieuwe functionaliteit wordt toegevoegd, of wanneer workloads worden verplaatst of geschaald. Daarom moet de communicatiematrix regelmatig worden bijgewerkt en gevalideerd om ervoor te zorgen dat micro-segmentatie-regels nog steeds accuraat zijn en dat legitieme communicatie niet onnodig wordt geblokkeerd. Organisaties moeten ook procedures hebben voor het beoordelen en goedkeuren van wijzigingen aan micro-segmentatie-regels, waarbij wordt geëvalueerd of nieuwe communicatie legitiem is en of deze moet worden toegestaan, of dat deze mogelijk kwaadaardig is en moet worden geblokkeerd.

Voor Nederlandse overheidsorganisaties is het belangrijk om micro-segmentatie te integreren in bestaande netwerkarchitecturen zonder de functionaliteit te belemmeren. Veel organisaties hebben al hub-spoke netwerkarchitecturen, drie-lagen applicatie-architecturen, of andere netwerkstructuren die zijn ontworpen voor traditionele netwerksegmentatie. Micro-segmentatie kan worden geïmplementeerd binnen deze bestaande architecturen door beveiligingsregels toe te voegen op workload-niveau zonder de bestaande netwerkstructuur te wijzigen. Dit betekent dat organisaties de voordelen van micro-segmentatie kunnen realiseren zonder grote herstructurering van hun netwerkarchitectuur, wat belangrijk is voor het minimaliseren van risico's en verstoringen. Organisaties moeten echter wel rekening houden met de impact van micro-segmentatie op bestaande processen en procedures, omdat het beheren van beveiligingsregels op workload-niveau complexer kan zijn dan het beheren van regels op subnet-niveau. Daarom moeten organisaties investeren in training, automatisering en tooling om ervoor te zorgen dat micro-segmentatie effectief kan worden beheerd zonder de operationele last te veel te verhogen.

Implementatie met Network Security Groups

Network Security Groups vormen de meest fundamentele technologie voor het implementeren van micro-segmentatie in Azure, en kunnen worden toegepast op netwerkinterfaces van individuele virtuele machines om zeer specifieke beveiligingsregels te definiëren per workload. De implementatie begint met het maken van NSG's die specifiek zijn ontworpen voor micro-segmentatie, waarbij regels worden gedefinieerd die communicatie tussen specifieke workloads controleren in plaats van communicatie tussen subnetten. Voor elke workload moet een NSG worden gemaakt met regels die alleen noodzakelijke inkomend en uitgaand verkeer toestaan, waarbij alle andere verkeer standaard wordt geblokkeerd volgens het principe van deny-by-default. NSG-regels worden geëvalueerd in volgorde van prioriteit, waarbij regels met lagere nummers eerst worden geëvalueerd, en zodra een regel matcht wordt de actie (toestaan of weigeren) uitgevoerd en worden verdere regels niet meer geëvalueerd. Dit betekent dat de volgorde van regels cruciaal is, en dat specifieke regels die specifiek verkeer moeten blokkeren moeten worden geplaatst vóór algemene regels die veel verkeer toestaan.

Een effectieve aanpak voor het implementeren van micro-segmentatie met NSG's is het gebruik van Application Security Groups (ASG's) in combinatie met NSG-regels. ASG's maken het mogelijk om workloads logisch te groeperen op basis van hun functionele rol, en NSG-regels kunnen vervolgens worden gedefinieerd in termen van deze ASG's in plaats van specifieke IP-adressen. Dit maakt beveiligingsregels schaalbaarder en onderhoudbaarder, omdat wanneer nieuwe workloads worden toegevoegd aan een rol, zij automatisch de juiste beveiligingsregels krijgen door eenvoudigweg te worden toegewezen aan de juiste ASG. Bijvoorbeeld, wanneer een organisatie webservers heeft die alleen moeten kunnen communiceren met applicatieservers op poort 443, kunnen alle webservers worden toegewezen aan een ASG genaamd 'WebServers', alle applicatieservers kunnen worden toegewezen aan een ASG genaamd 'AppServers', en NSG-regels kunnen worden gedefinieerd die verkeer toestaan van 'WebServers' naar 'AppServers' op poort 443. Wanneer nieuwe webservers of applicatieservers worden toegevoegd, hoeven alleen de netwerkinterfaces te worden toegewezen aan de juiste ASG's, en alle bestaande NSG-regels werken automatisch zonder wijzigingen.

Het implementeren van micro-segmentatie met NSG's vereist zorgvuldige planning en testing om ervoor te zorgen dat legitieme communicatie niet wordt geblokkeerd. Organisaties moeten beginnen met het implementeren van micro-segmentatie in niet-productieomgevingen, waarbij regels worden getest om te verifiëren dat alle noodzakelijke communicatie werkt en dat ongeautoriseerde communicatie wordt geblokkeerd. Het is belangrijk om te realiseren dat het implementeren van micro-segmentatie geleidelijk moet gebeuren, waarbij eerst kritieke workloads worden beschermd, en vervolgens andere workloads worden toegevoegd naarmate ervaring wordt opgedaan en processen worden verfijnd. Organisaties moeten ook procedures hebben voor het snel aanpassen van regels wanneer legitieme communicatie onbedoeld wordt geblokkeerd, omdat dit kan leiden tot service-onderbrekingen die gebruikers en bedrijfsprocessen beïnvloeden. Daarom moeten organisaties beschikken over monitoringtools die kunnen identificeren wanneer communicatie wordt geblokkeerd, en moeten zij procedures hebben voor het snel diagnosticeren en oplossen van problemen.

Gebruik PowerShell-script micro-segmentation.ps1 (functie Invoke-Monitoring) – Controleert of micro-segmentatie correct is geïmplementeerd met NSG's en ASG's op workload-niveau.

Implementatie met Azure Firewall

Azure Firewall biedt geavanceerde micro-segmentatie-mogelijkheden met applicatie- en FQDN-gebaseerde regels, threat intelligence-integratie, en gedistribueerde firewall-regels die kunnen worden toegepast op verschillende workloads. In tegenstelling tot NSG's die werken op basis van IP-adressen, poorten en protocollen, kan Azure Firewall verkeer filteren op basis van applicatie-identiteit, FQDN's (Fully Qualified Domain Names), en threat intelligence-feeds, waardoor meer geavanceerde beveiligingscontroles mogelijk zijn. Azure Firewall is met name geschikt voor scenario's waarbij workloads moeten communiceren met externe services of internet, omdat firewall-regels kunnen worden gedefinieerd die alleen specifieke FQDN's toestaan en alle andere verkeer blokkeren. Dit maakt het mogelijk om bijvoorbeeld te controleren dat workloads alleen kunnen communiceren met goedgekeurde Microsoft-services of andere vertrouwde services, terwijl communicatie met onbekende of verdachte domeinen wordt geblokkeerd.

Een belangrijke toepassing van Azure Firewall voor micro-segmentatie is het gebruik van gedistribueerde firewall-regels die kunnen worden toegepast op verschillende workloads of workload-groepen. Azure Firewall Manager maakt het mogelijk om firewall-policies te definiëren die kunnen worden toegepast op verschillende workloads, waardoor gecentraliseerd beheer van firewall-regels mogelijk is terwijl regels nog steeds worden toegepast op workload-niveau. Dit is met name nuttig voor organisaties met veel workloads die vergelijkbare beveiligingsregels nodig hebben, omdat firewall-regels eenmaal kunnen worden gedefinieerd in een policy en vervolgens kunnen worden toegepast op meerdere workloads. Azure Firewall biedt ook geavanceerde logging en monitoring-mogelijkheden die kunnen worden gebruikt om netwerkverkeer tussen workloads te analyseren en te identificeren wanneer ongeautoriseerde communicatie wordt geprobeerd, wat belangrijk is voor het verifiëren dat micro-segmentatie effectief werkt en voor het detecteren van potentiële beveiligingsincidenten.

Threat intelligence-integratie is een essentieel onderdeel van Azure Firewall voor micro-segmentatie, omdat het automatisch verkeer kan blokkeren van bekende kwaadaardige IP-adressen en domeinen zonder dat organisaties handmatig regels hoeven te definiëren voor elke bekende bedreiging. Azure Firewall maakt gebruik van Microsoft Threat Intelligence-feeds om verkeer te analyseren en automatisch te blokkeren wanneer het verkeer afkomstig is van of naar bekende kwaadaardige bronnen. Dit is met name belangrijk voor micro-segmentatie omdat het helpt om te voorkomen dat gecompromitteerde workloads kunnen communiceren met externe command-and-control servers of andere kwaadaardige services, zelfs wanneer NSG-regels deze communicatie technisch gezien zouden toestaan. Voor productieomgevingen moet threat intelligence zijn ingeschakeld met de modus 'Deny', waarbij bedreigingen daadwerkelijk worden geblokkeerd, in plaats van de modus 'Alert' waarbij bedreigingen alleen worden gelogd maar niet geblokkeerd.

Monitoring en verificatie van micro-segmentatie

Het monitoren en verifiëren van micro-segmentatie is essentieel om ervoor te zorgen dat beveiligingsregels effectief werken en dat laterale beweging daadwerkelijk wordt geblokkeerd. Organisaties moeten regelmatig netwerkverkeer analyseren tussen workloads om te verifiëren dat alleen toegestaan verkeer volgens de gedefinieerde regels kan passeren en dat ongeautoriseerd verkeer daadwerkelijk wordt geblokkeerd. Azure Network Watcher biedt functionaliteiten zoals Network Topology die een visuele weergave geeft van de netwerkarchitectuur inclusief NSG-regels en ASG-toewijzingen, en Connection Monitor die de connectiviteit tussen workloads kan testen en monitoren. Log Analytics kan worden gebruikt om NSG-flow logs en Azure Firewall-logs te analyseren om te identificeren wanneer verkeer wordt geblokkeerd of toegestaan, en om patronen te identificeren die mogelijk wijzen op beveiligingsproblemen of configuratiefouten.

Een belangrijk aspect van monitoring is het identificeren van workloads die onvoldoende bescherming hebben tegen laterale beweging. Dit kan gebeuren wanneer workloads geen NSG-regels hebben op interface-niveau, wanneer NSG-regels te permissief zijn ingesteld en veel verkeer toestaan, of wanneer workloads niet zijn toegewezen aan de juiste ASG's. Organisaties moeten regelmatig audits uitvoeren om te identificeren welke workloads micro-segmentatie hebben geïmplementeerd en welke niet, en om te identificeren welke workloads mogelijk kwetsbaar zijn voor laterale beweging. Het bijbehorende PowerShell-script kan worden gebruikt om deze audits te automatiseren door alle workloads te inventariseren, hun netwerkconfiguraties te analyseren, en te identificeren welke workloads onvoldoende bescherming hebben.

Penetratietests vormen een belangrijke manier om te verifiëren dat micro-segmentatie effectief werkt door te simuleren hoe aanvallers zouden proberen lateraal door het netwerk te bewegen. Deze tests moeten worden uitgevoerd door ervaren security professionals die begrijpen hoe aanvallers werken en die kunnen identificeren of micro-segmentatie daadwerkelijk laterale beweging blokkeert zoals bedoeld. Testresultaten moeten worden gedocumenteerd en gebruikt om micro-segmentatie te verbeteren waar nodig, en moeten worden gedeeld met relevante teams om lessen te trekken en best practices te identificeren.

Gebruik PowerShell-script micro-segmentation.ps1 (functie Invoke-Remediation) – Identificeert workloads die onvoldoende micro-segmentatie hebben en biedt aanbevelingen voor verbetering.

Governance en compliance

Effectieve governance van micro-segmentatie vereist duidelijke processen voor het beheren van beveiligingsregels, het documenteren van workload-afhankelijkheden en communicatiepatronen, en het borgen van compliance met relevante frameworks. Organisaties moeten procedures hebben voor het beoordelen en goedkeuren van wijzigingen aan micro-segmentatie-regels, waarbij wordt geëvalueerd of nieuwe communicatie legitiem is en of deze moet worden toegestaan, of dat deze mogelijk kwaadaardig is en moet worden geblokkeerd. Deze procedures moeten worden gedocumenteerd en moeten duidelijk specificeren wie verantwoordelijk is voor welke activiteiten, welke goedkeuringen nodig zijn voordat wijzigingen worden doorgevoerd, en hoe wijzigingen worden getest en geverifieerd voordat zij in productie worden geïmplementeerd.

Voor Nederlandse overheidsorganisaties is het belangrijk om te kunnen aantonen dat micro-segmentatie voldoet aan relevante compliance-frameworks zoals BIO, ISO 27001 en NIS2. Dit vereist uitgebreide documentatie van workload-specifieke beveiligingsregels, communicatiematrices die aantonen welke workloads met elkaar mogen communiceren, en monitoring-data die aantoont dat laterale beweging wordt geblokkeerd. Tijdens audits en toezicht-inspecties moeten organisaties kunnen aantonen dat micro-segmentatie actief wordt beheerd als een levend proces, dat regelmatige evaluaties plaatsvinden om te verifiëren dat beveiligingsregels nog steeds effectief zijn, en dat procedures bestaan voor het identificeren en corrigeren van afwijkingen. Organisaties moeten ook kunnen aantonen dat zij regelmatig testen uitvoeren om te verifiëren dat micro-segmentatie effectief werkt, en dat testresultaten worden gebruikt om beveiligingsregels te verbeteren waar nodig.

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 Azure Micro-segmentatie validatie en implementatie .DESCRIPTION Dit script ondersteunt Nederlandse overheidsorganisaties bij het valideren en implementeren van micro-segmentatie in Azure-omgevingen. Het script controleert of workloads zijn beschermd tegen laterale beweging door NSG-regels op interface-niveau, Application Security Groups, en Azure Firewall-regels voor granulaire netwerkbeveiliging. Het script is ontworpen om veilig lokaal of vanuit een beheerde automation-runner te draaien met READ-ONLY rechten voor monitoring, en met beperkte schrijfrechten voor remediatie. Het voert configuratiewijzigingen alleen uit na expliciete bevestiging of in WhatIf-modus. .NOTES Filename: micro-segmentation.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-15 Version: 1.0 Related JSON: content/azure/network/micro-segmentation.json Category: network Workload: azure .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\micro-segmentation.ps1 -Monitoring Voert een read-only validatie uit van micro-segmentatie en toont een samenvatting van de huidige status. .EXAMPLE .\micro-segmentation.ps1 -Remediation -WhatIf Genereert een rapport met concrete aanbevelingen zonder wijzigingen aan te brengen. .EXAMPLE .\micro-segmentation.ps1 -ExportPath .\micro-segmentation-report.json Exporteert de validatie- en aanbevelingsgegevens naar een JSON-bestand. #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Network, Az.Compute, Az.Resources [CmdletBinding()] param( [Parameter(HelpMessage = "Voer een read-only validatie uit van micro-segmentatie")] [switch]$Monitoring, [Parameter(HelpMessage = "Genereer aanbevelingen voor micro-segmentatie-implementatie")] [switch]$Remediation, [Parameter(HelpMessage = "Draai implementatiewijzigingen terug (indien mogelijk)")] [switch]$Revert, [Parameter(HelpMessage = "Toon welke acties zouden worden uitgevoerd zonder deze echt uit te voeren")] [switch]$WhatIf, [Parameter(HelpMessage = "Optioneel pad om resultaten als JSON te exporteren")] [string]$ExportPath ) $ErrorActionPreference = 'Stop' # ============================================================================ # HEADER # ============================================================================ Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Azure Micro-segmentatie – Validatie" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # ============================================================================ # HULPFUNCTIES # ============================================================================ function Connect-NbvvcAzContext { <# .SYNOPSIS Zorgt voor een geldige Az-context voor leesacties .DESCRIPTION Probeert eerst een bestaande context te gebruiken. Als er geen context is, wordt Connect-AzAccount aangeroepen. Dit is geschikt voor lokale debug- scenario's met een interactieve sessie of een managed identity. #> [CmdletBinding()] param() try { $context = Get-AzContext -ErrorAction SilentlyContinue if (-not $context) { Write-Host "Geen actieve Azure-context gevonden. Probeer te verbinden..." -ForegroundColor Yellow Connect-AzAccount -ErrorAction Stop | Out-Null $context = Get-AzContext -ErrorAction Stop } Write-Host "Actieve Azure-context: $($context.Subscription.Name) [$($context.Subscription.Id)]" -ForegroundColor Gray return $context } catch { Write-Host "[FAIL] Kon geen geldige Azure-context verkrijgen: $_" -ForegroundColor Red throw } } function Get-NbvvcMicroSegmentationStatus { <# .SYNOPSIS Verzamelt de status van micro-segmentatie-implementatie .DESCRIPTION Haalt de status op van workloads, NSG-regels op interface-niveau, ASG-toewijzingen, en Azure Firewall-regels. De validatie is read-only en bedoeld als input voor verder architectuur- en compliancewerk. .OUTPUTS Hashtable met micro-segmentatie-status per component #> [CmdletBinding()] param() $status = @{ timestamp = Get-Date subscriptionId = (Get-AzContext).Subscription.Id virtualMachines = @{ totalCount = 0 withInterfaceNsg = 0 withoutInterfaceNsg = 0 withAsgAssignment = 0 withoutAsgAssignment = 0 vmDetails = @() findings = @() } networkInterfaces = @{ totalCount = 0 withNsg = 0 withoutNsg = 0 withAsg = 0 withoutAsg = 0 interfaceDetails = @() findings = @() } nsgRules = @{ totalCount = 0 interfaceLevelRules = 0 subnetLevelRules = 0 usingAsg = 0 findings = @() } overallScore = 0 } Write-Host "`nValidatie van micro-segmentatie (read-only)..." -ForegroundColor Yellow # Virtuele Machines - Controleer NSG's en ASG's op interface-niveau try { $vms = Get-AzVM -ErrorAction SilentlyContinue $status.virtualMachines.totalCount = $vms.Count Write-Host " Virtuele Machines: $($vms.Count) gevonden" -ForegroundColor Gray foreach ($vm in $vms) { $vmDetail = @{ name = $vm.Name resourceGroup = $vm.ResourceGroupName location = $vm.Location hasInterfaceNsg = $false hasAsgAssignment = $false networkInterfaceIds = @() } # Haal netwerkinterfaces op voor deze VM $nics = Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -ErrorAction SilentlyContinue | Where-Object { $_.VirtualMachine.Id -eq $vm.Id } foreach ($nic in $nics) { $vmDetail.networkInterfaceIds += $nic.Id # Controleer of NSG is toegewezen aan interface if ($nic.NetworkSecurityGroup) { $vmDetail.hasInterfaceNsg = $true } # Controleer of ASG is toegewezen aan interface if ($nic.ApplicationSecurityGroups -and $nic.ApplicationSecurityGroups.Count -gt 0) { $vmDetail.hasAsgAssignment = $true } } if ($vmDetail.hasInterfaceNsg) { $status.virtualMachines.withInterfaceNsg++ } else { $status.virtualMachines.withoutInterfaceNsg++ } if ($vmDetail.hasAsgAssignment) { $status.virtualMachines.withAsgAssignment++ } else { $status.virtualMachines.withoutAsgAssignment++ } $status.virtualMachines.vmDetails += $vmDetail } if ($status.virtualMachines.withoutInterfaceNsg -gt 0) { $percentage = [math]::Round(($status.virtualMachines.withInterfaceNsg / $status.virtualMachines.totalCount) * 100, 1) $status.virtualMachines.findings += "$($status.virtualMachines.withoutInterfaceNsg) VM(s) ($([math]::Round(100 - $percentage, 1))%) hebben geen NSG op interface-niveau; overweeg micro-segmentatie voor bescherming tegen laterale beweging." } if ($status.virtualMachines.withoutAsgAssignment -gt 0) { $percentage = [math]::Round(($status.virtualMachines.withAsgAssignment / $status.virtualMachines.totalCount) * 100, 1) $status.virtualMachines.findings += "$($status.virtualMachines.withoutAsgAssignment) VM(s) ($([math]::Round(100 - $percentage, 1))%) zijn niet toegewezen aan een ASG; overweeg ASG-toewijzing voor workload-gebaseerde netwerkbeveiliging." } } catch { Write-Host " [WARN] Kon VM-status niet volledig valideren: $_" -ForegroundColor Yellow $status.virtualMachines.findings += "Kon VM-status niet volledig valideren; controleer rechten en Az.Compute-module." } # Netwerkinterfaces - Controleer NSG's en ASG's try { $allNics = Get-AzNetworkInterface -ErrorAction SilentlyContinue $status.networkInterfaces.totalCount = $allNics.Count Write-Host " Netwerkinterfaces: $($allNics.Count) gevonden" -ForegroundColor Gray foreach ($nic in $allNics) { $interfaceDetail = @{ name = $nic.Name resourceGroup = $nic.ResourceGroupName hasNsg = $false hasAsg = $false nsgName = $null asgNames = @() } if ($nic.NetworkSecurityGroup) { $status.networkInterfaces.withNsg++ $interfaceDetail.hasNsg = $true try { $nsg = Get-AzNetworkSecurityGroup -ResourceId $nic.NetworkSecurityGroup.Id -ErrorAction SilentlyContinue if ($nsg) { $interfaceDetail.nsgName = $nsg.Name } } catch { $interfaceDetail.nsgName = "NSG ID: $($nic.NetworkSecurityGroup.Id)" } } else { $status.networkInterfaces.withoutNsg++ } if ($nic.ApplicationSecurityGroups -and $nic.ApplicationSecurityGroups.Count -gt 0) { $status.networkInterfaces.withAsg++ $interfaceDetail.hasAsg = $true foreach ($asgRef in $nic.ApplicationSecurityGroups) { try { $asg = Get-AzApplicationSecurityGroup -ResourceId $asgRef.Id -ErrorAction SilentlyContinue if ($asg) { $interfaceDetail.asgNames += $asg.Name } else { $interfaceDetail.asgNames += "ASG ID: $($asgRef.Id)" } } catch { $interfaceDetail.asgNames += "ASG ID: $($asgRef.Id)" } } } else { $status.networkInterfaces.withoutAsg++ } $status.networkInterfaces.interfaceDetails += $interfaceDetail } if ($status.networkInterfaces.withoutNsg -gt 0) { $percentage = [math]::Round(($status.networkInterfaces.withNsg / $status.networkInterfaces.totalCount) * 100, 1) $status.networkInterfaces.findings += "$($status.networkInterfaces.withoutNsg) netwerkinterface(s) ($([math]::Round(100 - $percentage, 1))%) hebben geen NSG; overweeg NSG-toewijzing voor micro-segmentatie." } } catch { Write-Host " [WARN] Kon netwerkinterface-status niet volledig valideren: $_" -ForegroundColor Yellow $status.networkInterfaces.findings += "Kon netwerkinterface-status niet volledig valideren; controleer rechten en Az.Network-module." } # NSG-regels - Controleer interface-niveau regels en ASG-gebruik try { $nsgs = Get-AzNetworkSecurityGroup -ErrorAction SilentlyContinue $totalRules = 0 $interfaceLevelRules = 0 $subnetLevelRules = 0 $rulesUsingAsg = 0 foreach ($nsg in $nsgs) { # Bepaal of NSG is gekoppeld aan interfaces of subnetten $nsgOnInterfaces = $false $nsgOnSubnets = $false $nicsWithNsg = Get-AzNetworkInterface -ErrorAction SilentlyContinue | Where-Object { $_.NetworkSecurityGroup.Id -eq $nsg.Id } if ($nicsWithNsg.Count -gt 0) { $nsgOnInterfaces = $true } $vnets = Get-AzVirtualNetwork -ErrorAction SilentlyContinue foreach ($vnet in $vnets) { foreach ($subnet in $vnet.Subnets) { if ($subnet.NetworkSecurityGroup -and $subnet.NetworkSecurityGroup.Id -eq $nsg.Id) { $nsgOnSubnets = $true break } } if ($nsgOnSubnets) { break } } if ($nsg.SecurityRules) { foreach ($rule in $nsg.SecurityRules) { $totalRules++ if ($nsgOnInterfaces) { $interfaceLevelRules++ } if ($nsgOnSubnets) { $subnetLevelRules++ } # Controleer of regel ASG gebruikt if (($rule.SourceApplicationSecurityGroups -and $rule.SourceApplicationSecurityGroups.Count -gt 0) -or ($rule.DestinationApplicationSecurityGroups -and $rule.DestinationApplicationSecurityGroups.Count -gt 0)) { $rulesUsingAsg++ } } } } $status.nsgRules.totalCount = $totalRules $status.nsgRules.interfaceLevelRules = $interfaceLevelRules $status.nsgRules.subnetLevelRules = $subnetLevelRules $status.nsgRules.usingAsg = $rulesUsingAsg Write-Host " NSG-regels: $totalRules totaal, $interfaceLevelRules op interface-niveau, $rulesUsingAsg gebruiken ASG's" -ForegroundColor Gray if ($totalRules -gt 0 -and $rulesUsingAsg -eq 0) { $status.nsgRules.findings += "Geen NSG-regels gevonden die ASG's gebruiken; overweeg migratie naar ASG-gebaseerde regels voor betere micro-segmentatie." } elseif ($totalRules -gt 0) { $percentageUsingAsg = [math]::Round(($rulesUsingAsg / $totalRules) * 100, 1) if ($percentageUsingAsg -lt 30) { $status.nsgRules.findings += "Slechts $percentageUsingAsg% van NSG-regels gebruikt ASG's; overweeg migratie naar ASG-gebaseerde regels voor betere micro-segmentatie." } } } catch { Write-Host " [WARN] Kon NSG-regel-status niet volledig valideren: $_" -ForegroundColor Yellow $status.nsgRules.findings += "Kon NSG-regel-status niet volledig valideren; controleer rechten en Az.Network-module." } # Bereken overall score $scoreComponents = 0 $scoreTotal = 0 if ($status.virtualMachines.totalCount -gt 0) { $percentageWithNsg = ($status.virtualMachines.withInterfaceNsg / $status.virtualMachines.totalCount) * 100 if ($percentageWithNsg -ge 80) { $scoreComponents++ } $scoreTotal++ $percentageWithAsg = ($status.virtualMachines.withAsgAssignment / $status.virtualMachines.totalCount) * 100 if ($percentageWithAsg -ge 60) { $scoreComponents++ } $scoreTotal++ } if ($status.networkInterfaces.totalCount -gt 0) { $percentageWithNsg = ($status.networkInterfaces.withNsg / $status.networkInterfaces.totalCount) * 100 if ($percentageWithNsg -ge 80) { $scoreComponents++ } $scoreTotal++ } if ($status.nsgRules.totalCount -gt 0) { $percentageUsingAsg = ($status.nsgRules.usingAsg / $status.nsgRules.totalCount) * 100 if ($percentageUsingAsg -ge 30) { $scoreComponents++ } $scoreTotal++ } if ($scoreTotal -gt 0) { $status.overallScore = [math]::Round(($scoreComponents / $scoreTotal) * 100, 1) } return $status } function Invoke-Monitoring { <# .SYNOPSIS Voert een read-only micro-segmentatie-validatie uit .DESCRIPTION Gebruikt statuscontroles om inzicht te geven in de huidige micro-segmentatie-implementatie per component. Dit helpt bij het prioriteren van implementatietrajecten en het identificeren van gaten in de beveiliging. .OUTPUTS Hashtable met samenvattende metrics en status per component #> [CmdletBinding()] param() $null = Connect-NbvvcAzContext $status = Get-NbvvcMicroSegmentationStatus Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "SAMENVATTING MICRO-SEGMENTATIE STATUS" -ForegroundColor Cyan Write-Host " Overall Score : $($status.overallScore)%" -ForegroundColor White Write-Host "`n Virtuele Machines:" -ForegroundColor Yellow Write-Host " Totaal aantal : $($status.virtualMachines.totalCount)" -ForegroundColor Gray Write-Host " Met NSG op interface : $($status.virtualMachines.withInterfaceNsg)" -ForegroundColor Gray Write-Host " Zonder NSG : $($status.virtualMachines.withoutInterfaceNsg)" -ForegroundColor Gray Write-Host " Met ASG-toewijzing : $($status.virtualMachines.withAsgAssignment)" -ForegroundColor Gray Write-Host " Zonder ASG : $($status.virtualMachines.withoutAsgAssignment)" -ForegroundColor Gray Write-Host "`n Netwerkinterfaces:" -ForegroundColor Yellow Write-Host " Totaal aantal : $($status.networkInterfaces.totalCount)" -ForegroundColor Gray Write-Host " Met NSG : $($status.networkInterfaces.withNsg)" -ForegroundColor Gray Write-Host " Zonder NSG : $($status.networkInterfaces.withoutNsg)" -ForegroundColor Gray Write-Host " Met ASG : $($status.networkInterfaces.withAsg)" -ForegroundColor Gray Write-Host " Zonder ASG : $($status.networkInterfaces.withoutAsg)" -ForegroundColor Gray Write-Host "`n NSG-regels:" -ForegroundColor Yellow Write-Host " Totaal aantal regels : $($status.nsgRules.totalCount)" -ForegroundColor Gray Write-Host " Op interface-niveau : $($status.nsgRules.interfaceLevelRules)" -ForegroundColor Gray Write-Host " Op subnet-niveau : $($status.nsgRules.subnetLevelRules)" -ForegroundColor Gray Write-Host " Met ASG-gebruik : $($status.nsgRules.usingAsg)" -ForegroundColor Gray $allFindings = @() $allFindings += $status.virtualMachines.findings $allFindings += $status.networkInterfaces.findings $allFindings += $status.nsgRules.findings if ($allFindings.Count -gt 0) { Write-Host "`nAandachtspunten:" -ForegroundColor Yellow foreach ($f in $allFindings) { Write-Host " - $f" -ForegroundColor Yellow } } else { Write-Host "`nGeen specifieke aandachtspunten gedetecteerd op basis van deze scan." -ForegroundColor Green } return @{ status = $status } } function Invoke-Remediation { <# .SYNOPSIS Genereert micro-segmentatie-aanbevelingen .DESCRIPTION Op basis van de statusvalidatie worden concrete aanbevelingen gegenereerd voor vervolgstappen zoals het implementeren van NSG's op interface-niveau, het toewijzen van workloads aan ASG's, of het migreren van IP-gebaseerde regels naar ASG-gebaseerde regels. Het script voert configuratiewijzigingen alleen uit na expliciete bevestiging of in WhatIf-modus. #> [CmdletBinding(SupportsShouldProcess)] param( [string]$ReportPath ) if ($WhatIf) { Write-Host "`nWhatIf: er wordt een aanbevelingsrapport gegenereerd op basis van statusvalidatie, maar er vinden geen wijzigingen plaats." -ForegroundColor Yellow } $result = Invoke-Monitoring $status = $result.status $recommendations = @() if ($status.virtualMachines.withoutInterfaceNsg -gt 0) { $percentage = [math]::Round(($status.virtualMachines.withInterfaceNsg / $status.virtualMachines.totalCount) * 100, 1) $recommendations += "Wijs NSG's toe aan netwerkinterfaces van $($status.virtualMachines.withoutInterfaceNsg) VM(s) ($([math]::Round(100 - $percentage, 1))%) voor micro-segmentatie en bescherming tegen laterale beweging." } if ($status.virtualMachines.withoutAsgAssignment -gt 0) { $percentage = [math]::Round(($status.virtualMachines.withAsgAssignment / $status.virtualMachines.totalCount) * 100, 1) $recommendations += "Wijs $($status.virtualMachines.withoutAsgAssignment) VM(s) ($([math]::Round(100 - $percentage, 1))%) toe aan passende Application Security Groups op basis van workload-rollen voor workload-gebaseerde netwerkbeveiliging." } if ($status.networkInterfaces.withoutNsg -gt 0) { $percentage = [math]::Round(($status.networkInterfaces.withNsg / $status.networkInterfaces.totalCount) * 100, 1) $recommendations += "Wijs NSG's toe aan $($status.networkInterfaces.withoutNsg) netwerkinterface(s) ($([math]::Round(100 - $percentage, 1))%) voor micro-segmentatie." } if ($status.nsgRules.totalCount -gt 0 -and $status.nsgRules.usingAsg -eq 0) { $recommendations += "Migreer IP-gebaseerde NSG-regels naar ASG-gebaseerde regels voor betere micro-segmentatie en onderhoudbaarheid." } elseif ($status.nsgRules.totalCount -gt 0) { $percentageUsingAsg = [math]::Round(($status.nsgRules.usingAsg / $status.nsgRules.totalCount) * 100, 1) if ($percentageUsingAsg -lt 30) { $recommendations += "Overweeg migratie van IP-gebaseerde NSG-regels naar ASG-gebaseerde regels (momenteel gebruikt $percentageUsingAsg% ASG's) voor betere micro-segmentatie." } } if ($recommendations.Count -eq 0) { $recommendations += "Geen specifieke aanbevelingen op basis van deze scan; voer een diepgaand netwerkarchitectuur-assessment uit voor optimalisatie van micro-segmentatie." } Write-Host "`nAanbevolen vervolgstappen:" -ForegroundColor Cyan foreach ($rec in $recommendations) { Write-Host " - $rec" -ForegroundColor White } $report = @{ generatedAt = Get-Date subscriptionId = $status.subscriptionId overallScore = $status.overallScore microSegmentationStatus = @{ status = $status recommendations = $recommendations } } $targetPath = $null if ($PSBoundParameters.ContainsKey("ReportPath") -and $ReportPath) { $targetPath = $ReportPath } elseif ($ExportPath) { $targetPath = $ExportPath } if ($targetPath) { if ($PSCmdlet.ShouldProcess($targetPath, "Schrijf micro-segmentatie-rapport naar JSON-bestand")) { $report | ConvertTo-Json -Depth 6 | Out-File -FilePath $targetPath -Encoding UTF8 Write-Host "`n[OK] Rapport geschreven naar: $targetPath" -ForegroundColor Green } } } function Invoke-Revert { <# .SYNOPSIS Draai implementatiewijzigingen terug .DESCRIPTION Dit script voert configuratiewijzigingen alleen uit na expliciete bevestiging. Revert-functionaliteit is beperkt omdat micro-segmentatie-implementaties complex zijn en handmatige interventie vereisen. De functie is aanwezig voor consistentie met andere scripts binnen de Nederlandse Baseline voor Veilige Cloud. #> [CmdletBinding(SupportsShouldProcess)] param() Write-Host "`nMicro-segmentatie-implementaties vereisen handmatige interventie voor revert-operaties." -ForegroundColor Yellow Write-Host "Raadpleeg de documentatie en Azure-portal voor specifieke revert-stappen per component." -ForegroundColor Gray } function Invoke-Implementation { <# .SYNOPSIS Implementeert micro-segmentatie .DESCRIPTION Deze functie is een alias voor Invoke-Remediation voor consistentie met andere scripts binnen de Nederlandse Baseline voor Veilige Cloud. #> [CmdletBinding()] param() Invoke-Remediation } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { if ($Revert) { Invoke-Revert } elseif ($Remediation) { Invoke-Remediation -ReportPath $ExportPath } elseif ($Monitoring) { $null = Invoke-Monitoring } else { Write-Host "Beschikbare parameters:" -ForegroundColor Yellow Write-Host " -Monitoring : Voer een read-only micro-segmentatie-validatie uit" -ForegroundColor Gray Write-Host " -Remediation : Genereer micro-segmentatie-aanbevelingen (geen wijzigingen)" -ForegroundColor Gray Write-Host " -Revert : Beperkte revert-functionaliteit (handmatige interventie vereist)" -ForegroundColor Gray Write-Host " -WhatIf : Toon welke acties logisch zouden zijn zonder uitvoer" -ForegroundColor Gray Write-Host " -ExportPath : Optioneel pad voor JSON-rapport" -ForegroundColor Gray Write-Host "`nVoorbeeld: .\micro-segmentation.ps1 -Monitoring" -ForegroundColor Cyan } } catch { Write-Error "Scriptuitvoering mislukt: $_" exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan } # Exitcodes: # 0 = Succesvolle uitvoering # 2 = Fout tijdens uitvoering

Risico zonder implementatie

Risico zonder implementatie
High: Zonder micro-segmentatie kunnen aanvallers die toegang krijgen tot één systeem lateraal door het netwerk bewegen naar andere systemen zonder aanvullende beveiligingscontroles. Dit creëert aanzienlijke beveiligingsrisico's waarbij een gecompromitteerde webserver direct kan communiceren met databaseservers, of waarbij een geïnfecteerde applicatieserver lateraal kan bewegen naar andere applicatieservers zonder detectie. Deze laterale beweging vormt een van de grootste uitdagingen in moderne cybersecurity, omdat aanvallers vaak beginnen met toegang tot een minder kritiek systeem en vervolgens hun privileges escaleren door zich lateraal door het netwerk te bewegen naar meer waardevolle doelen. Voor Nederlandse overheidsorganisaties die moeten voldoen aan BIO-normen voor netwerkbeveiliging en NIS2-vereisten voor risicobeheersing is micro-segmentatie niet alleen een best practice, maar vaak een verplicht onderdeel van een effectieve beveiligingsarchitectuur.

Management Samenvatting

Micro-segmentatie biedt granulaire netwerkbeveiliging op workload-niveau door beveiligingscontroles te verplaatsen van netwerkperimeter naar individuele workloads, waardoor laterale beweging door aanvallers wordt voorkomen. Door NSG's, ASG's en Azure Firewall te gebruiken kunnen organisaties zeer specifieke beveiligingsregels definiëren die communicatie tussen individuele workloads controleren, waardoor de impact van beveiligingsincidenten aanzienlijk wordt beperkt. De benodigde inspanning is matig (circa 24 uur initiële implementatie), terwijl de beveiligingswinst aanzienlijk is.