ExpressRoute Configuratie: Dedicated Private Connectiviteit Voor Azure

💼 Management Samenvatting

ExpressRoute biedt Nederlandse overheidsorganisaties een dedicated private verbinding tussen on-premises infrastructuur en Azure cloud services, zonder gebruik te maken van het publieke internet. In tegenstelling tot VPN Gateway-verbindingen die via het internet lopen, creëert ExpressRoute een geïsoleerde, beveiligde verbinding via een connectiviteitsprovider of direct via Microsoft Edge-locaties. Deze dedicated connectiviteit biedt gegarandeerde bandbreedte, lage latentie, verhoogde beveiliging en betrouwbaarheid, wat essentieel is voor kritieke workloads, gevoelige gegevens en compliance-vereisten binnen de Nederlandse publieke sector. ExpressRoute is met name geschikt voor organisaties die grote hoeveelheden data moeten verplaatsen, real-time applicaties hosten, of strikte beveiligings- en compliance-eisen hebben die niet kunnen worden ingevuld met standaard internetgebaseerde verbindingen.

Aanbeveling
IMPLEMENTEER EXPRESSROUTE VOOR KRITIEKE WORKLOADS
Risico zonder
Medium
Risk Score
6/10
Implementatie
120u (tech: 80u)
Van toepassing op:
Azure
Azure Virtual Networks
Hybride Cloud Architecturen
Enterprise Connectiviteit

Zonder een goed geconfigureerde ExpressRoute-verbinding lopen Nederlandse overheidsorganisaties aanzienlijke risico's op het gebied van beveiliging, prestaties en compliance. VPN Gateway-verbindingen via het publieke internet zijn inherent kwetsbaar voor man-in-the-middle aanvallen, DDoS-aanvallen, interceptie van verkeer en onvoorspelbare latentie en bandbreedte. Voor kritieke overheidsdiensten zoals burgerzaken, belastingen, sociale zekerheid of veiligheidsprocessen is dit onacceptabel: uitval of vertraging van deze diensten heeft directe impact op burgers en bedrijven, en kan leiden tot maatschappelijke ontwrichting, reputatieschade en politieke druk. Daarnaast vereisen compliance-frameworks zoals de BIO, NIS2 en ISO 27001 dat organisaties passende technische maatregelen treffen om gegevens te beschermen tijdens transport, wat moeilijk te waarborgen is wanneer verkeer over het publieke internet wordt gerouteerd. ExpressRoute biedt een dedicated private verbinding die deze risico's aanzienlijk vermindert door verkeer volledig te isoleren van het publieke internet, gegarandeerde bandbreedte en lage latentie te bieden, en aanvullende beveiligingscontroles mogelijk te maken zoals private peering en geavanceerde routingconfiguraties. Voor Nederlandse overheidsorganisaties die moeten voldoen aan strenge beveiligings- en compliance-eisen is ExpressRoute vaak niet alleen een best practice, maar een noodzakelijke voorziening voor het veilig en betrouwbaar verbinden van on-premises infrastructuur met Azure cloud services.

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

Implementatie

Dit artikel beschrijft een gestructureerde aanpak voor het ontwerpen, implementeren en beheren van ExpressRoute-verbindingen binnen de Nederlandse Baseline voor Veilige Cloud. De implementatie omvat vijf hoofdcomponenten. Ten eerste architectuur en ontwerp: het bepalen van de juiste ExpressRoute-sku en bandbreedte op basis van workloadvereisten, het kiezen tussen verschillende connectiviteitsmodellen (provider, exchange provider of direct connect), het ontwerpen van een redundantie- en failoverstrategie met meerdere circuits en peering-locaties, en het plannen van routingconfiguraties met BGP voor optimale beschikbaarheid en prestaties. Ten tweede circuit provisioning: het aanvragen en configureren van ExpressRoute-circuits via Azure Portal of PowerShell, het configureren van peering-relaties (private, Microsoft en public peering), het instellen van BGP-sessies met juiste ASN-configuraties, en het valideren van connectiviteit en routing. Ten derde netwerkintegratie: het koppelen van ExpressRoute-circuits aan Azure Virtual Networks via ExpressRoute Gateways, het configureren van route filters voor Microsoft peering, het implementeren van netwerksegmentatie en beveiligingszones, en het integreren met bestaande on-premises netwerkarchitecturen. Ten vierde beveiliging en compliance: het implementeren van encryptie voor data in transit, het configureren van netwerkbeveiligingsgroepen en Azure Firewall voor verkeersfiltering, het implementeren van monitoring en logging voor compliance-audits, en het documenteren van configuraties voor auditdoeleinden. Ten vijfde monitoring en onderhoud: het configureren van Azure Monitor en Network Watcher voor proactieve monitoring, het implementeren van alerting voor circuitstatus en prestaties, het uitvoeren van regelmatige health checks en failover-tests, en het beheren van lifecycle en updates. Het bijbehorende PowerShell-script automatiseert het monitoren van ExpressRoute-circuitstatus, het valideren van routingconfiguraties, en het genereren van compliance-rapportages voor auditdoeleinden.

Architectuur en ontwerp van ExpressRoute-verbindingen

Het ontwerpen van een effectieve ExpressRoute-architectuur begint met het begrijpen van de verschillende ExpressRoute-sku's en connectiviteitsmodellen die beschikbaar zijn. ExpressRoute biedt verschillende sku's met bandbreedtes variërend van 50 Mbps tot 100 Gbps, waarbij de keuze afhankelijk is van de verwachte dataverkeersvolumes, het aantal workloads dat via de verbinding wordt afgenomen, en de beschikbaarheidseisen. Voor Nederlandse overheidsorganisaties met kritieke workloads is het aanbevolen om te starten met minimaal een Standard-sku met voldoende bandbreedte om piekbelastingen op te vangen, en te overwegen om Premium-sku's te gebruiken wanneer aanvullende features nodig zijn zoals verhoogde route limits, VNet-connectiviteit naar meerdere regio's, of Global Reach voor directe connectiviteit tussen ExpressRoute-circuits. Daarnaast moeten organisaties kiezen tussen drie connectiviteitsmodellen: provider connectiviteit waarbij een telecomprovider de verbinding verzorgt tussen on-premises en Microsoft Edge-locaties, exchange provider connectiviteit waarbij gebruik wordt gemaakt van een bestaande exchange provider-infrastructuur, of direct connect waarbij een directe fysieke verbinding wordt gelegd naar Microsoft Edge-locaties. De keuze hangt af van beschikbaarheid in de regio, kosten, implementatietijd en specifieke vereisten rond beveiliging en compliance.

Een cruciaal aspect van ExpressRoute-architectuur is het ontwerpen van redundantie en failover om hoge beschikbaarheid te waarborgen. Nederlandse overheidsorganisaties moeten minimaal twee ExpressRoute-circuits implementeren die via verschillende fysieke paden en peering-locaties lopen, zodat bij uitval van één circuit automatisch failover plaatsvindt naar het andere circuit. Deze circuits moeten worden geconfigureerd met actief-actief of actief-passief routing, waarbij BGP wordt gebruikt voor automatische failover en load balancing. Daarnaast moeten organisaties overwegen om ExpressRoute-circuits te combineren met VPN Gateway-verbindingen als backup-optie, zodat zelfs bij volledige uitval van ExpressRoute-circuits nog steeds connectiviteit beschikbaar is via het internet, zij het met lagere prestaties en beveiliging. Het is belangrijk om te realiseren dat redundantie niet alleen op circuitniveau moet worden geïmplementeerd, maar ook op netwerkniveau: ExpressRoute Gateways moeten worden geconfigureerd met meerdere instanties in verschillende beschikbaarheidszones, en on-premises routers moeten worden geconfigureerd met redundantie en failover-capaciteiten. Door deze multi-layer redundantie te implementeren, kunnen organisaties hoge beschikbaarheid waarborgen zelfs bij meerdere failure-scenario's.

Routingconfiguratie vormt een essentieel onderdeel van ExpressRoute-architectuur, waarbij BGP wordt gebruikt voor dynamische route-uitwisseling tussen on-premises netwerken en Azure. Organisaties moeten een duidelijk routingbeleid definiëren dat bepaalt welke routes worden geadverteerd naar Azure, welke routes worden geaccepteerd van Azure, en hoe routes worden gefilterd en geoptimaliseerd voor prestaties en beveiliging. Private peering wordt gebruikt voor connectiviteit tussen on-premises netwerken en Azure Virtual Networks, waarbij organisaties volledige controle hebben over welke IP-adresruimten worden geadverteerd en hoe routing plaatsvindt. Microsoft peering wordt gebruikt voor connectiviteit naar Microsoft cloud services zoals Office 365, Dynamics 365 of Azure PaaS-services, waarbij organisaties route filters kunnen configureren om te bepalen welke services toegankelijk zijn via ExpressRoute. Public peering is verouderd en wordt niet meer aanbevolen, maar kan nog steeds worden gebruikt voor legacy-configuraties. Het is belangrijk om te realiseren dat routingconfiguraties directe impact hebben op beveiliging: organisaties moeten ervoor zorgen dat alleen geautoriseerde routes worden geadverteerd, dat route filters correct zijn geconfigureerd om ongewenst verkeer te blokkeren, en dat BGP-sessies worden beveiligd met authenticatie en monitoring om route hijacking te voorkomen.

Gebruik PowerShell-script expressroute-configuration.ps1 (functie Invoke-Monitoring) – Controleert ExpressRoute-circuitstatus, routingconfiguraties en connectiviteit.

Circuit provisioning en configuratie

De provisioning van een ExpressRoute-circuit begint met het aanvragen van het circuit via Azure Portal, PowerShell of Azure Resource Manager templates. Tijdens het aanvraagproces moeten organisaties verschillende parameters specificeren: de peering-locatie waar het circuit moet worden geëindigd, de bandbreedte die nodig is, de sku die wordt gebruikt, en de connectiviteitsprovider of het connectiviteitsmodel. Het is belangrijk om te realiseren dat de peering-locatiekeuze impact heeft op latentie, kosten en beschikbaarheid: organisaties moeten een peering-locatie kiezen die geografisch dichtbij is bij zowel de on-premises datacenterlocatie als de Azure-regio's die worden gebruikt, om optimale prestaties te waarborgen. Na het aanvragen van het circuit ontvangt de organisatie een service key die moet worden gedeeld met de connectiviteitsprovider, die vervolgens de fysieke verbinding verzorgt tussen on-premises infrastructuur en de Microsoft Edge-locatie. Dit proces kan enkele weken tot maanden duren, afhankelijk van de gekozen connectiviteitsprovider en de complexiteit van de fysieke verbinding, waardoor het belangrijk is om provisioning vroegtijdig te plannen als onderdeel van cloudmigratie- of hybride cloud-projecten.

Na het voltooien van de fysieke verbinding door de connectiviteitsprovider moet het ExpressRoute-circuit worden geconfigureerd met peering-relaties. Private peering is de primaire peering-type voor connectiviteit tussen on-premises netwerken en Azure Virtual Networks, en moet worden geconfigureerd met de juiste IP-adresruimten en BGP-configuraties. Organisaties moeten een /30 subnet configureren voor de primaire link en een /30 subnet voor de secundaire link, waarbij elk subnet twee IP-adressen bevat: één voor de Microsoft-router en één voor de on-premises router. Daarnaast moeten organisaties een /29 subnet configureren voor de BGP-sessie, waarbij het eerste IP-adres wordt gebruikt voor de primaire BGP-sessie en het tweede IP-adres voor de secundaire BGP-sessie. Microsoft peering wordt gebruikt voor connectiviteit naar Microsoft cloud services en moet worden geconfigureerd met route filters om te bepalen welke services toegankelijk zijn. Organisaties moeten een /30 subnet configureren voor Microsoft peering en moeten route filters definiëren die specifieke service tags toestaan of blokkeren, zoals Office 365, Dynamics 365, of Azure services. Het is belangrijk om te realiseren dat peering-configuraties directe impact hebben op beveiliging en compliance: organisaties moeten ervoor zorgen dat alleen geautoriseerde routes worden geadverteerd, dat route filters correct zijn geconfigureerd, en dat BGP-sessies worden beveiligd met authenticatie en monitoring.

BGP-configuratie vormt een cruciaal onderdeel van ExpressRoute-circuit provisioning, waarbij BGP wordt gebruikt voor dynamische route-uitwisseling tussen on-premises netwerken en Azure. Organisaties moeten een Autonomous System Number (ASN) configureren voor zowel de on-premises router als de Azure ExpressRoute Gateway, waarbij het belangrijk is om te realiseren dat Microsoft ASN 12076 gebruikt voor ExpressRoute en dat organisaties een privé ASN moeten gebruiken voor on-premises routers (tussen 64512 en 65534) of een publiek ASN indien beschikbaar. BGP-sessies moeten worden geconfigureerd met de juiste BGP-parameters zoals hold time, keepalive interval, en BGP communities voor route filtering en optimalisatie. Daarnaast moeten organisaties BGP-route filtering implementeren om te bepalen welke routes worden geadverteerd en geaccepteerd, waarbij het principe van least privilege moet worden gevolgd: alleen routes die expliciet nodig zijn voor Azure-connectiviteit moeten worden geadverteerd, en alleen routes die expliciet zijn goedgekeurd moeten worden geaccepteerd van Azure. Het is belangrijk om te realiseren dat BGP-configuraties complex kunnen zijn en directe impact hebben op netwerkprestaties en beveiliging: organisaties moeten ervoor zorgen dat BGP-sessies correct zijn geconfigureerd, dat route filtering correct werkt, en dat monitoring en alerting zijn geïmplementeerd om BGP-sessie-uitval of route wijzigingen te detecteren.

Netwerkintegratie en Virtual Network koppeling

De integratie van ExpressRoute-circuits met Azure Virtual Networks gebeurt via ExpressRoute Gateways, die worden geconfigureerd binnen Virtual Networks om connectiviteit te bieden tussen on-premises netwerken en Azure workloads. ExpressRoute Gateways moeten worden geconfigureerd met de juiste sku en bandbreedte, waarbij de keuze afhankelijk is van de verwachte dataverkeersvolumes en beschikbaarheidseisen. Voor Nederlandse overheidsorganisaties met kritieke workloads is het aanbevolen om minimaal een Standard-sku te gebruiken met voldoende bandbreedte, en te overwegen om Premium-sku's te gebruiken wanneer aanvullende features nodig zijn zoals verhoogde route limits of multi-region connectiviteit. Daarnaast moeten ExpressRoute Gateways worden geconfigureerd met redundantie door meerdere instanties te deployen in verschillende beschikbaarheidszones, zodat bij uitval van één instantie automatisch failover plaatsvindt naar een andere instantie. Het is belangrijk om te realiseren dat ExpressRoute Gateways een kritiek onderdeel vormen van de netwerkarchitectuur en directe impact hebben op beschikbaarheid en prestaties: organisaties moeten ervoor zorgen dat gateways correct zijn geconfigureerd, dat monitoring en alerting zijn geïmplementeerd, en dat regelmatige health checks worden uitgevoerd om problemen proactief te detecteren.

Netwerksegmentatie en beveiligingszones vormen een essentieel onderdeel van ExpressRoute-netwerkintegratie, waarbij organisaties verschillende netwerksegmenten moeten creëren voor verschillende workloads, omgevingen en beveiligingsniveaus. Nederlandse overheidsorganisaties moeten een duidelijke netwerkarchitectuur definiëren die onderscheid maakt tussen productie-, test- en development-omgevingen, tussen verschillende afdelingen of diensten, en tussen verschillende beveiligingsniveaus zoals publiek, intern en vertrouwelijk. Deze segmentatie kan worden geïmplementeerd via Azure Virtual Networks met verschillende adresruimten, Network Security Groups voor verkeersfiltering, en Azure Firewall of Network Virtual Appliances voor geavanceerde beveiligingscontroles. ExpressRoute-circuits moeten worden geconfigureerd om alleen routes te adverteren voor geautoriseerde netwerksegmenten, en route filters moeten worden gebruikt om te bepalen welke segmenten toegankelijk zijn via ExpressRoute versus via VPN Gateway of andere connectiviteitsopties. Het is belangrijk om te realiseren dat netwerksegmentatie directe impact heeft op beveiliging en compliance: organisaties moeten ervoor zorgen dat segmentatie correct is geïmplementeerd, dat verkeersfiltering correct werkt, en dat monitoring en logging zijn geïmplementeerd om netwerkverkeer te analyseren en te auditen voor compliance-doeleinden.

Integratie met bestaande on-premises netwerkarchitecturen vereist zorgvuldige planning en coördinatie tussen Azure-beheerders en on-premises netwerkbeheerders. Nederlandse overheidsorganisaties moeten ervoor zorgen dat on-premises routers correct zijn geconfigureerd met BGP-sessies naar ExpressRoute-circuits, dat route filtering correct is geïmplementeerd, en dat failover en redundantie correct werken tussen on-premises en Azure-omgevingen. Daarnaast moeten organisaties overwegen om bestaande netwerkbeveiligingsapparaten zoals firewalls, intrusion detection systems of network monitoring tools te integreren met ExpressRoute-verbindingen, zodat beveiligingscontroles consistent blijven tussen on-premises en cloud-omgevingen. Het is belangrijk om te realiseren dat netwerkintegratie complex kan zijn en directe impact heeft op beschikbaarheid en prestaties: organisaties moeten ervoor zorgen dat integratie correct is geïmplementeerd, dat monitoring en alerting zijn geïmplementeerd, en dat regelmatige tests worden uitgevoerd om connectiviteit en failover te valideren.

Beveiliging en compliance voor ExpressRoute

Beveiliging van ExpressRoute-verbindingen begint met het implementeren van encryptie voor data in transit, waarbij organisaties ervoor moeten zorgen dat alle verkeer dat via ExpressRoute wordt gerouteerd wordt versleuteld om te voorkomen dat gevoelige gegevens kunnen worden onderschept of gemanipuleerd. Hoewel ExpressRoute zelf een private verbinding biedt die geïsoleerd is van het publieke internet, is het aanbevolen om aanvullende encryptie te implementeren op applicatieniveau of via IPsec VPN-tunnels over ExpressRoute voor extra beveiliging. Daarnaast moeten organisaties netwerkbeveiligingsgroepen en Azure Firewall configureren voor verkeersfiltering, waarbij het principe van least privilege wordt gevolgd: alleen verkeer dat expliciet is toegestaan moet kunnen passeren, terwijl alle ander verkeer standaard moet worden geblokkeerd. Route filters moeten worden gebruikt om te bepalen welke routes worden geadverteerd en geaccepteerd, en BGP-sessies moeten worden beveiligd met authenticatie en monitoring om route hijacking te voorkomen. Het is belangrijk om te realiseren dat beveiliging een continu proces is en regelmatige review en updates vereist: organisaties moeten ervoor zorgen dat beveiligingsconfiguraties up-to-date blijven, dat nieuwe bedreigingen worden geadresseerd, en dat beveiligingsincidenten worden gedetecteerd en gereageerd.

Monitoring en logging zijn cruciaal voor compliance-audits en voor het waarborgen van beveiliging van ExpressRoute-verbindingen. Nederlandse overheidsorganisaties moeten Azure Monitor en Network Watcher configureren voor proactieve monitoring van ExpressRoute-circuitstatus, prestaties en beschikbaarheid, waarbij alerting wordt geconfigureerd voor kritieke gebeurtenissen zoals circuit-uitval, BGP-sessie-uitval, of significante prestatievermindering. Daarnaast moeten organisaties logging configureren voor alle netwerkverkeer dat via ExpressRoute wordt gerouteerd, waarbij logs worden opgeslagen in een centrale Log Analytics-workspace met retentiebeleid volgens compliance-vereisten (typisch 7 jaar voor Nederlandse overheidsorganisaties volgens BIO). Deze logs moeten worden gebruikt voor compliance-audits, security incident response, en netwerkanalyse. Het is belangrijk om te realiseren dat monitoring en logging directe impact hebben op compliance en beveiliging: organisaties moeten ervoor zorgen dat monitoring correct is geconfigureerd, dat logs worden bewaard voor de vereiste periode, en dat regelmatige reviews worden uitgevoerd om afwijkingen of incidenten te detecteren.

Documentatie en auditbewijs vormen een essentieel onderdeel van compliance voor ExpressRoute-verbindingen, waarbij organisaties uitgebreide documentatie moeten bijhouden van alle ExpressRoute-configuraties, routingconfiguraties, beveiligingsinstellingen en wijzigingen. Deze documentatie moet worden gebruikt voor compliance-audits, waarbij auditors kunnen verifiëren dat ExpressRoute-verbindingen correct zijn geconfigureerd, dat beveiligingsmaatregelen correct zijn geïmplementeerd, en dat compliance-vereisten worden ingevuld. Het bijbehorende PowerShell-script kan worden gebruikt om technische compliance-rapportages te genereren die kunnen worden gebruikt als onderdeel van auditdocumentatie. Daarnaast moeten organisaties processen implementeren voor het reviewen en goedkeuren van ExpressRoute-configuratiewijzigingen, waarbij wijzigingen worden gedocumenteerd, gereviewd door security-teams, en goedgekeurd door verantwoordelijke personen voordat zij worden geïmplementeerd. Het is belangrijk om te realiseren dat documentatie en auditbewijs directe impact hebben op compliance: organisaties moeten ervoor zorgen dat documentatie up-to-date blijft, dat auditbewijs beschikbaar is wanneer nodig, en dat regelmatige reviews worden uitgevoerd om te waarborgen dat compliance-vereisten worden ingevuld.

Gebruik PowerShell-script expressroute-configuration.ps1 (functie Invoke-Remediation) – Genereert aanbevelingen voor het verbeteren van ExpressRoute-configuraties en beveiliging.

Monitoring, onderhoud en lifecycle management

Proactieve monitoring van ExpressRoute-verbindingen is essentieel voor het waarborgen van beschikbaarheid, prestaties en beveiliging. Nederlandse overheidsorganisaties moeten Azure Monitor en Network Watcher configureren voor continue monitoring van ExpressRoute-circuitstatus, waarbij metrische gegevens worden verzameld over beschikbaarheid, bandbreedtegebruik, latentie, packet loss en BGP-sessie-status. Alerting moet worden geconfigureerd voor kritieke gebeurtenissen zoals circuit-uitval, BGP-sessie-uitval, significante prestatievermindering, of ongebruikelijke verkeerspatronen die kunnen wijzen op beveiligingsincidenten. Daarnaast moeten organisaties dashboards implementeren die real-time inzicht bieden in ExpressRoute-status en prestaties, zodat beheerders snel kunnen reageren op problemen en trends kunnen identificeren voor capaciteitsplanning. Het is belangrijk om te realiseren dat monitoring een continu proces is en regelmatige review en optimalisatie vereist: organisaties moeten ervoor zorgen dat monitoring correct is geconfigureerd, dat alerting correct werkt, en dat regelmatige reviews worden uitgevoerd om monitoringconfiguraties te optimaliseren en nieuwe bedreigingen te adresseren.

Regelmatige health checks en failover-tests zijn cruciaal voor het waarborgen van beschikbaarheid en betrouwbaarheid van ExpressRoute-verbindingen. Nederlandse overheidsorganisaties moeten maandelijks of per kwartaal failover-tests uitvoeren waarbij één ExpressRoute-circuit wordt gesimuleerd als uitgevallen om te verifiëren dat automatische failover correct werkt naar backup-circuits of VPN Gateway-verbindingen. Daarnaast moeten organisaties regelmatig health checks uitvoeren waarbij connectiviteit wordt getest tussen on-premises netwerken en Azure Virtual Networks, waarbij routing wordt gevalideerd, en waarbij prestaties worden gemeten om te waarborgen dat ExpressRoute-verbindingen voldoen aan verwachtingen. Deze tests moeten worden gedocumenteerd en gerapporteerd aan management en compliance-teams, waarbij bevindingen worden vertaald naar concrete verbeteracties wanneer nodig. Het is belangrijk om te realiseren dat health checks en failover-tests directe impact hebben op beschikbaarheid: organisaties moeten ervoor zorgen dat tests regelmatig worden uitgevoerd, dat resultaten worden gedocumenteerd, en dat problemen worden geadresseerd voordat zij leiden tot daadwerkelijke uitval.

Lifecycle management en updates vormen een essentieel onderdeel van ExpressRoute-beheer, waarbij organisaties processen moeten implementeren voor het beheren van ExpressRoute-configuratiewijzigingen, het updaten van routingconfiguraties wanneer netwerkarchitecturen veranderen, en het plannen van capaciteitsuitbreidingen wanneer workloads groeien. Nederlandse overheidsorganisaties moeten een change management proces implementeren waarbij alle ExpressRoute-configuratiewijzigingen worden gedocumenteerd, gereviewd door security- en netwerkteams, en goedgekeurd door verantwoordelijke personen voordat zij worden geïmplementeerd. Daarnaast moeten organisaties regelmatig reviews uitvoeren van ExpressRoute-configuraties om te waarborgen dat zij up-to-date blijven en voldoen aan veranderende bedrijfsbehoeften en beveiligingsvereisten. Wanneer nieuwe Azure-regio's worden gebruikt of wanneer workloads worden gemigreerd, moeten ExpressRoute-configuraties worden bijgewerkt om nieuwe routes te adverteren en oude routes te verwijderen. Het is belangrijk om te realiseren dat lifecycle management directe impact heeft op beveiliging en compliance: organisaties moeten ervoor zorgen dat wijzigingen correct worden geïmplementeerd, dat documentatie up-to-date blijft, en dat regelmatige reviews worden uitgevoerd om te waarborgen dat ExpressRoute-configuraties voldoen aan huidige vereisten.

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
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS ExpressRoute Configuratie: Dedicated Private Connectiviteit voor Azure .DESCRIPTION Ondersteunt het beheren van ExpressRoute-circuits door: - Monitoring van circuitstatus en connectiviteit - Validatie van routingconfiguraties en BGP-sessies - Genereren van compliance-rapportages - Aanbevelingen voor circuit-verbeteringen .NOTES Filename: expressroute-configuration.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/network/expressroute-configuration.json CIS Control: 6.7 #> #Requires -Version 5.1 #Requires -Modules Az.Network, Az.Resources, Az.Accounts [CmdletBinding()] param( [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Validation, [Parameter()][switch]$DebugMode ) $ErrorActionPreference = 'Stop' $PolicyName = "ExpressRoute Configuratie" function Connect-RequiredServices { [CmdletBinding()] param( [switch]$DebugMode ) if ($DebugMode) { Write-Verbose "DebugMode is ingeschakeld: er wordt geen verbinding met Azure gemaakt." return } if (-not (Get-AzContext -ErrorAction SilentlyContinue)) { Write-Host "Verbinden met Azure..." -ForegroundColor Yellow Connect-AzAccount -ErrorAction Stop | Out-Null } } function Test-ExpressRouteCircuitStatus { <# .SYNOPSIS Controleert de status van ExpressRoute-circuits #> [CmdletBinding()] param( [switch]$DebugMode ) if ($DebugMode) { return [PSCustomObject]@{ Mode = "Debug" CircuitsFound = 2 CircuitsProvisioned = 2 CircuitsEnabled = 2 RedundancyConfigured = $true BgpSessionsActive = $true IsCompliant = $false } } try { $circuits = Get-AzExpressRouteCircuit -ErrorAction SilentlyContinue $circuitsProvisioned = 0 $circuitsEnabled = 0 $redundancyConfigured = $false $bgpSessionsActive = $true foreach ($circuit in $circuits) { if ($circuit.ServiceProviderProvisioningState -eq 'Provisioned') { $circuitsProvisioned++ } if ($circuit.CircuitProvisioningState -eq 'Enabled') { $circuitsEnabled++ } } # Check for redundancy (multiple circuits) if ($circuits.Count -gt 1) { $redundancyConfigured = $true } # Check BGP session status foreach ($circuit in $circuits) { $peerings = Get-AzExpressRouteCircuitPeeringConfig -ExpressRouteCircuit $circuit -ErrorAction SilentlyContinue foreach ($peering in $peerings) { if ($peering.State -ne 'Enabled') { $bgpSessionsActive = $false break } } } $isCompliant = ($circuits.Count -gt 0 -and $circuitsProvisioned -gt 0 -and $circuitsEnabled -gt 0) return [PSCustomObject]@{ Mode = "Live" CircuitsFound = $circuits.Count CircuitsProvisioned = $circuitsProvisioned CircuitsEnabled = $circuitsEnabled RedundancyConfigured = $redundancyConfigured BgpSessionsActive = $bgpSessionsActive IsCompliant = $isCompliant } } catch { Write-Error "Fout bij het controleren van circuit-status: $_" return [PSCustomObject]@{ Mode = "Error" CircuitsFound = 0 CircuitsProvisioned = 0 CircuitsEnabled = 0 RedundancyConfigured = $false BgpSessionsActive = $false IsCompliant = $false } } } function Invoke-Monitoring { <# .SYNOPSIS Monitort ExpressRoute-circuitstatus en connectiviteit .DESCRIPTION Controleert of circuits correct zijn geconfigureerd en operationeel zijn. #> [CmdletBinding()] param( [switch]$DebugMode ) Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Monitoring" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { Connect-RequiredServices -DebugMode:$DebugMode if ($DebugMode) { Write-Host "[DEBUG MODE] ExpressRoute monitoring validatie" -ForegroundColor Yellow Write-Host "`nAanbevelingen voor ExpressRoute-monitoring:" -ForegroundColor Yellow Write-Host " 1. Controleer of ExpressRoute-circuits zijn geprovisioneerd en ingeschakeld" -ForegroundColor White Write-Host " 2. Verifieer BGP-sessie-status en routingconfiguraties" -ForegroundColor White Write-Host " 3. Controleer of redundantie is geconfigureerd met meerdere circuits" -ForegroundColor White Write-Host " 4. Valideer ExpressRoute Gateway-configuraties en koppeling aan Virtual Networks" -ForegroundColor White Write-Host " 5. Controleer regelmatig circuitstatus en prestaties" -ForegroundColor White Write-Host "`nVoor gedetailleerde instructies, zie het bijbehorende artikel." -ForegroundColor Yellow return } $status = Test-ExpressRouteCircuitStatus -DebugMode:$DebugMode $circuits = Get-AzExpressRouteCircuit -ErrorAction SilentlyContinue Write-Host "ExpressRoute Status Overzicht:" -ForegroundColor Yellow Write-Host " Modus: $($status.Mode)" -ForegroundColor White Write-Host " Circuits gevonden: $($status.CircuitsFound)" -ForegroundColor White Write-Host " Circuits geprovisioneerd: $($status.CircuitsProvisioned)" -ForegroundColor White Write-Host " Circuits ingeschakeld: $($status.CircuitsEnabled)" -ForegroundColor White Write-Host " Redundantie geconfigureerd: $($status.RedundancyConfigured)" -ForegroundColor $(if ($status.RedundancyConfigured) { 'Green' } else { 'Yellow' }) Write-Host " BGP-sessies actief: $($status.BgpSessionsActive)" -ForegroundColor $(if ($status.BgpSessionsActive) { 'Green' } else { 'Yellow' }) if ($circuits.Count -gt 0) { Write-Host "`nCircuit Details:" -ForegroundColor Yellow foreach ($circuit in $circuits) { Write-Host "`n Circuit: $($circuit.Name)" -ForegroundColor Cyan Write-Host " Resource Group: $($circuit.ResourceGroupName)" -ForegroundColor White Write-Host " Service Provider: $($circuit.ServiceProviderName)" -ForegroundColor White Write-Host " Peering Locatie: $($circuit.ServiceProviderProperties.PeeringLocation)" -ForegroundColor White Write-Host " Bandbreedte: $($circuit.ServiceProviderProperties.BandwidthInMbps) Mbps" -ForegroundColor White Write-Host " SKU: $($circuit.Sku.Tier) / $($circuit.Sku.Family)" -ForegroundColor White Write-Host " Provisioning Status: $($circuit.ServiceProviderProvisioningState)" -ForegroundColor $(if ($circuit.ServiceProviderProvisioningState -eq 'Provisioned') { 'Green' } else { 'Yellow' }) Write-Host " Circuit Status: $($circuit.CircuitProvisioningState)" -ForegroundColor $(if ($circuit.CircuitProvisioningState -eq 'Enabled') { 'Green' } else { 'Yellow' }) # Check peering configurations $peerings = Get-AzExpressRouteCircuitPeeringConfig -ExpressRouteCircuit $circuit -ErrorAction SilentlyContinue if ($peerings) { Write-Host " Peering Configuraties:" -ForegroundColor White foreach ($peering in $peerings) { Write-Host " - $($peering.Name): $($peering.State)" -ForegroundColor $(if ($peering.State -eq 'Enabled') { 'Green' } else { 'Yellow' }) } } else { Write-Host " ⚠️ Geen peering-configuraties gevonden" -ForegroundColor Yellow } # Check gateway connections $connections = Get-AzVirtualNetworkGatewayConnection -ErrorAction SilentlyContinue | Where-Object { $_.ConnectionType -eq 'ExpressRoute' -and $_.ExpressRouteGatewayBypass -eq $false } $circuitConnections = $connections | Where-Object { $_.Peer.Id -eq $circuit.Id } if ($circuitConnections) { Write-Host " ✓ Gateway verbindingen: $($circuitConnections.Count)" -ForegroundColor Green } else { Write-Host " ⚠️ Geen gateway verbindingen gevonden" -ForegroundColor Yellow } } } if ($status.CircuitsFound -eq 0) { Write-Host "`n⚠️ Geen ExpressRoute-circuits gevonden" -ForegroundColor Yellow Write-Host " Aanbeveling: Overweeg ExpressRoute voor kritieke workloads die dedicated private connectiviteit vereisen" -ForegroundColor Yellow } if (-not $status.RedundancyConfigured -and $status.CircuitsFound -gt 0) { Write-Host "`n⚠️ Geen redundantie geconfigureerd (slechts één circuit)" -ForegroundColor Yellow Write-Host " Aanbeveling: Implementeer minimaal twee ExpressRoute-circuits via verschillende paden voor hoge beschikbaarheid" -ForegroundColor Yellow } if (-not $status.BgpSessionsActive) { Write-Host "`n⚠️ BGP-sessies niet actief voor alle circuits" -ForegroundColor Yellow Write-Host " Aanbeveling: Controleer BGP-configuraties en peering-status" -ForegroundColor Yellow } Write-Host "`nAanbevelingen:" -ForegroundColor Yellow Write-Host " 1. Zorg dat alle ExpressRoute-circuits zijn geprovisioneerd en ingeschakeld" -ForegroundColor White Write-Host " 2. Implementeer redundantie met minimaal twee circuits via verschillende paden" -ForegroundColor White Write-Host " 3. Configureer BGP-sessies correct en monitor regelmatig de status" -ForegroundColor White Write-Host " 4. Koppel circuits aan ExpressRoute Gateways in Virtual Networks" -ForegroundColor White Write-Host " 5. Implementeer monitoring en alerting voor circuitstatus en prestaties" -ForegroundColor White Write-Host " 6. Voer regelmatig failover-tests uit om redundantie te valideren" -ForegroundColor White Write-Host "`nVoor gedetailleerde instructies, zie het bijbehorende artikel." -ForegroundColor Yellow Write-Host "`n========================================" -ForegroundColor Cyan } catch { Write-Host "`nERROR: $_" -ForegroundColor Red exit 1 } } function Invoke-Remediation { <# .SYNOPSIS Genereert aanbevelingen voor het verbeteren van ExpressRoute-configuraties .DESCRIPTION Analyseert bestaande circuits en genereert concrete aanbevelingen voor verbetering. #> [CmdletBinding()] param( [switch]$DebugMode ) Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Remediatie" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { Connect-RequiredServices -DebugMode:$DebugMode $status = Test-ExpressRouteCircuitStatus -DebugMode:$DebugMode $circuits = Get-AzExpressRouteCircuit -ErrorAction SilentlyContinue Write-Host "Remediatie Aanbevelingen:" -ForegroundColor Yellow if ($status.CircuitsFound -eq 0) { Write-Host "`n1. IMPLEMENTEER EXPRESSROUTE VOOR KRITIEKE WORKLOADS" -ForegroundColor Cyan Write-Host " - Evalueer of ExpressRoute nodig is voor kritieke workloads met hoge beveiligings- of prestatie-eisen" -ForegroundColor White Write-Host " - Kies de juiste ExpressRoute-sku en bandbreedte op basis van workloadvereisten" -ForegroundColor White Write-Host " - Selecteer een connectiviteitsprovider en peering-locatie" -ForegroundColor White Write-Host " - Vraag ExpressRoute-circuits aan via Azure Portal of PowerShell" -ForegroundColor White } if ($status.CircuitsFound -gt 0 -and -not $status.RedundancyConfigured) { Write-Host "`n2. IMPLEMENTEER REDUNDANTIE MET MEERDERE CIRCUITS" -ForegroundColor Cyan Write-Host " - Creëer minimaal twee ExpressRoute-circuits via verschillende fysieke paden" -ForegroundColor White Write-Host " - Configureer circuits met verschillende peering-locaties voor geografische redundantie" -ForegroundColor White Write-Host " - Implementeer actief-actief of actief-passief routing met BGP voor automatische failover" -ForegroundColor White Write-Host " - Overweeg VPN Gateway als backup-optie voor extra redundantie" -ForegroundColor White } if ($status.CircuitsFound -gt 0 -and $status.CircuitsProvisioned -lt $status.CircuitsFound) { Write-Host "`n3. VOLTOOI CIRCUIT PROVISIONING" -ForegroundColor Cyan Write-Host " Circuits die nog niet zijn geprovisioneerd:" -ForegroundColor White foreach ($circuit in $circuits) { if ($circuit.ServiceProviderProvisioningState -ne 'Provisioned') { Write-Host " - $($circuit.Name) (Status: $($circuit.ServiceProviderProvisioningState))" -ForegroundColor White } } Write-Host " - Werk samen met connectiviteitsprovider om fysieke verbinding te voltooien" -ForegroundColor White Write-Host " - Verifieer dat service key correct is gedeeld met provider" -ForegroundColor White } if ($status.CircuitsFound -gt 0 -and -not $status.BgpSessionsActive) { Write-Host "`n4. CONFIGUREER BGP-SESSIES CORRECT" -ForegroundColor Cyan Write-Host " - Configureer BGP-sessies voor private peering tussen on-premises routers en Azure" -ForegroundColor White Write-Host " - Verifieer ASN-configuraties (Microsoft gebruikt ASN 12076)" -ForegroundColor White Write-Host " - Configureer route filtering om alleen geautoriseerde routes te adverteren" -ForegroundColor White Write-Host " - Monitor BGP-sessie-status regelmatig en configureer alerting voor uitval" -ForegroundColor White } $gateways = Get-AzVirtualNetworkGateway -ErrorAction SilentlyContinue | Where-Object { $_.GatewayType -eq 'ExpressRoute' } if ($status.CircuitsFound -gt 0 -and $gateways.Count -eq 0) { Write-Host "`n5. KOPPEL CIRCUITS AAN EXPRESSROUTE GATEWAYS" -ForegroundColor Cyan Write-Host " - Creëer ExpressRoute Gateways in Virtual Networks die connectiviteit nodig hebben" -ForegroundColor White Write-Host " - Configureer gateways met de juiste sku en bandbreedte" -ForegroundColor White Write-Host " - Koppel ExpressRoute-circuits aan gateways via gateway connections" -ForegroundColor White Write-Host " - Implementeer redundantie door meerdere gateway-instanties in verschillende beschikbaarheidszones" -ForegroundColor White } Write-Host "`n6. OPTIMALISEER BEVEILIGING EN COMPLIANCE" -ForegroundColor Cyan Write-Host " - Implementeer encryptie voor data in transit (IPsec over ExpressRoute of applicatieniveau)" -ForegroundColor White Write-Host " - Configureer netwerkbeveiligingsgroepen en Azure Firewall voor verkeersfiltering" -ForegroundColor White Write-Host " - Implementeer route filters voor Microsoft peering om toegang tot specifieke services te beheren" -ForegroundColor White Write-Host " - Configureer monitoring en logging voor compliance-audits" -ForegroundColor White Write-Host " - Documenteer alle ExpressRoute-configuraties voor auditdoeleinden" -ForegroundColor White Write-Host "`nVoor gedetailleerde implementatie-instructies, zie het bijbehorende artikel." -ForegroundColor Yellow Write-Host "`n========================================" -ForegroundColor Cyan } catch { Write-Host "`nERROR: $_" -ForegroundColor Red exit 1 } } function Invoke-Validation { <# .SYNOPSIS Valideert ExpressRoute-circuitconfiguraties .DESCRIPTION Voert validatietests uit op circuit-configuraties en connectiviteit. #> [CmdletBinding()] param( [switch]$DebugMode ) Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Validatie" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { Connect-RequiredServices -DebugMode:$DebugMode $status = Test-ExpressRouteCircuitStatus -DebugMode:$DebugMode Write-Host "Validatie Status:" -ForegroundColor Yellow Write-Host " Modus: $($status.Mode)" -ForegroundColor White Write-Host " Circuits gevonden: $($status.CircuitsFound)" -ForegroundColor White Write-Host " Circuits geprovisioneerd: $($status.CircuitsProvisioned)" -ForegroundColor White Write-Host " Circuits ingeschakeld: $($status.CircuitsEnabled)" -ForegroundColor White Write-Host " Redundantie geconfigureerd: $($status.RedundancyConfigured)" -ForegroundColor $(if ($status.RedundancyConfigured) { 'Green' } else { 'Yellow' }) Write-Host " BGP-sessies actief: $($status.BgpSessionsActive)" -ForegroundColor $(if ($status.BgpSessionsActive) { 'Green' } else { 'Yellow' }) if ($status.CircuitsFound -eq 0) { Write-Host "`n⚠️ Geen ExpressRoute-circuits gevonden" -ForegroundColor Yellow Write-Host " ExpressRoute is optioneel - overweeg implementatie voor kritieke workloads" -ForegroundColor Yellow Write-Host "`nVALIDATIE: OPTIONEEL - ExpressRoute niet geïmplementeerd" -ForegroundColor Yellow exit 0 } if ($status.CircuitsProvisioned -eq 0) { Write-Host "`n⚠️ Geen circuits zijn volledig geprovisioneerd" -ForegroundColor Yellow Write-Host " Werk samen met connectiviteitsprovider om provisioning te voltooien" -ForegroundColor Yellow Write-Host "`nVALIDATIE: ONVOLTOOID" -ForegroundColor Red exit 1 } if ($status.CircuitsEnabled -eq 0) { Write-Host "`n⚠️ Geen circuits zijn ingeschakeld" -ForegroundColor Yellow Write-Host " Schakel circuits in via Azure Portal of PowerShell" -ForegroundColor Yellow Write-Host "`nVALIDATIE: ONVOLTOOID" -ForegroundColor Red exit 1 } if (-not $status.RedundancyConfigured) { Write-Host "`n⚠️ Geen redundantie geconfigureerd" -ForegroundColor Yellow Write-Host " Overweeg minimaal twee circuits voor hoge beschikbaarheid" -ForegroundColor Yellow } if (-not $status.BgpSessionsActive) { Write-Host "`n⚠️ BGP-sessies niet actief voor alle circuits" -ForegroundColor Yellow Write-Host " Controleer BGP-configuraties en peering-status" -ForegroundColor Yellow } Write-Host "`nValidatie Aanbevelingen:" -ForegroundColor Yellow Write-Host " 1. Verifieer dat alle circuits correct zijn geprovisioneerd en ingeschakeld" -ForegroundColor White Write-Host " 2. Test connectiviteit tussen on-premises netwerken en Azure Virtual Networks" -ForegroundColor White Write-Host " 3. Valideer routingconfiguraties en BGP-sessie-status" -ForegroundColor White Write-Host " 4. Voer regelmatig failover-tests uit om redundantie te valideren" -ForegroundColor White Write-Host " 5. Monitor circuitstatus en prestaties regelmatig" -ForegroundColor White if ($status.IsCompliant) { Write-Host "`nVALIDATIE: GESLAAGD" -ForegroundColor Green exit 0 } else { Write-Host "`nVALIDATIE: ONVOLTOOID - Volg de aanbevelingen om de configuratie te verbeteren" -ForegroundColor Yellow exit 1 } } catch { Write-Host "`nERROR: $_" -ForegroundColor Red exit 1 } } # Main execution try { if ($Monitoring) { Invoke-Monitoring -DebugMode:$DebugMode } elseif ($Remediation) { Invoke-Remediation -DebugMode:$DebugMode } elseif ($Validation) { Invoke-Validation -DebugMode:$DebugMode } else { Write-Host "`nGebruik: -Monitoring | -Remediation | -Validation" -ForegroundColor Yellow Write-Host "`nVoeg -DebugMode toe voor lokale validatie zonder Azure-verbinding" -ForegroundColor Yellow Write-Host "`nVoorbeelden:" -ForegroundColor Cyan Write-Host " .\expressroute-configuration.ps1 -Monitoring" -ForegroundColor White Write-Host " .\expressroute-configuration.ps1 -Remediation" -ForegroundColor White Write-Host " .\expressroute-configuration.ps1 -Validation" -ForegroundColor White Write-Host " .\expressroute-configuration.ps1 -Validation -DebugMode" -ForegroundColor White } } catch { Write-Host "`nFATALE FOUT: $_" -ForegroundColor Red exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Medium: Zonder een goed geconfigureerde ExpressRoute-verbinding lopen Nederlandse overheidsorganisaties aanzienlijke risico's op het gebied van beveiliging, prestaties en compliance. VPN Gateway-verbindingen via het publieke internet zijn inherent kwetsbaar voor man-in-the-middle aanvallen, DDoS-aanvallen en onvoorspelbare latentie. Voor kritieke overheidsdiensten is dit onacceptabel: uitval of vertraging heeft directe impact op burgers en bedrijven, en kan leiden tot maatschappelijke ontwrichting en reputatieschade. Daarnaast vereisen compliance-frameworks zoals BIO, NIS2 en ISO 27001 passende technische maatregelen om gegevens te beschermen tijdens transport, wat moeilijk te waarborgen is wanneer verkeer over het publieke internet wordt gerouteerd.

Management Samenvatting

ExpressRoute biedt Nederlandse overheidsorganisaties een dedicated private verbinding tussen on-premises infrastructuur en Azure cloud services, zonder gebruik te maken van het publieke internet. Deze dedicated connectiviteit biedt gegarandeerde bandbreedte, lage latentie, verhoogde beveiliging en betrouwbaarheid, wat essentieel is voor kritieke workloads, gevoelige gegevens en compliance-vereisten. Het bijbehorende PowerShell-script automatiseert het monitoren van ExpressRoute-circuitstatus, het valideren van routingconfiguraties, en het genereren van compliance-rapportages voor auditdoeleinden. De benodigde inspanning is aanzienlijk (circa 120 uur initiële implementatie inclusief provisioning), maar de risicoreductie, prestatieverbetering en compliance-waarborging zijn essentieel voor kritieke overheidsdiensten.