Adaptive Security Architecture In Azure

💼 Management Samenvatting

Adaptive security architecture in Azure vertegenwoordigt een fundamentele verschuiving van statische, regelgebaseerde beveiliging naar een dynamisch systeem dat continu reageert op bedreigingen, gebruikersgedrag en omgevingsveranderingen. Voor Nederlandse overheidsorganisaties biedt deze aanpak de mogelijkheid om beveiliging proactief en contextbewust te maken, waarbij toegangsbeslissingen worden genomen op basis van real-time risico-evaluaties in plaats van vooraf gedefinieerde regels.

Aanbeveling
IMPLEMENTEER ADAPTIVE SECURITY ARCHITECTURE VOOR KRITIEKE AZURE-WORKLOADS
Risico zonder
High
Risk Score
7/10
Implementatie
120u (tech: 80u)
Van toepassing op:
Azure Tenant

Traditionele beveiligingsarchitecturen zijn gebaseerd op statische regels en policies die handmatig worden geconfigureerd en periodiek worden bijgewerkt. Deze aanpak heeft fundamentele beperkingen in een moderne cloudomgeving waar bedreigingen zich snel ontwikkelen, gebruikerspatronen veranderen en nieuwe services continu worden toegevoegd. Zonder adaptieve beveiliging lopen organisaties het risico dat zij reageren op bedreigingen nadat deze al hebben plaatsgevonden, dat toegangsbeslissingen worden genomen zonder rekening te houden met contextuele risico's, en dat beveiligingsmaatregelen niet meegroeien met de dynamiek van de organisatie. Voor Nederlandse overheidsorganisaties kan dit leiden tot onnodige blootstelling aan cyberbedreigingen, inefficiënte toegangscontroles die de productiviteit belemmeren, en het onvermogen om adequaat te reageren op geavanceerde persistent threats (APT's) die zich langzaam ontwikkelen en moeilijk te detecteren zijn met traditionele methoden. Daarnaast stellen frameworks zoals de Baseline Informatiebeveiliging Overheid (BIO) en de NIS2-richtlijn expliciete eisen aan risicogestuurd beveiligingsbeheer, waarbij organisaties moeten kunnen aantonen dat zij passende maatregelen hebben getroffen die zijn afgestemd op de werkelijke bedreigingen en risico's.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Accounts, Az.Security, Az.Monitor, Az.PolicyInsights

Implementatie

Adaptive security architecture in Azure combineert verschillende technologieën en benaderingen om een dynamisch, contextbewust beveiligingssysteem te creëren. Dit omvat het gebruik van Azure Active Directory Conditional Access met risk-based policies die toegangsbeslissingen nemen op basis van gebruikersgedrag, apparaatstatus, locatie en andere risico-indicatoren. Azure Security Center en Microsoft Defender for Cloud leveren continu threat intelligence en security recommendations die automatisch worden geëvalueerd en geïmplementeerd via Azure Policy en Azure Automation. Machine learning-modellen analyseren gebruikers- en entiteitsgedrag om anomalieën te detecteren die kunnen wijzen op gecompromitteerde accounts, insider threats of ongebruikelijke toegangspatronen. Azure Sentinel fungeert als Security Information and Event Management (SIEM) platform dat security events van verschillende bronnen verzamelt, correleert en analyseert met behulp van kunstmatige intelligentie om bedreigingen te identificeren die anders onopgemerkt zouden blijven. Het adaptieve karakter komt tot uiting doordat het systeem continu leert van nieuwe bedreigingen, gebruikersgedrag aanpast aan veranderende patronen, en automatisch security policies bijwerkt op basis van risico-evaluaties. Deze architectuur maakt het mogelijk om beveiliging te schalen naar duizenden resources en gebruikers zonder dat handmatige configuratie voor elke nieuwe workload nodig is, terwijl tegelijkertijd de beveiligingspostuur wordt verbeterd door proactieve detectie en respons op bedreigingen.

Architectuurprincipes en Componenten

Een effectieve adaptive security architecture in Azure is gebouwd op een aantal fundamentele principes die ervoor zorgen dat beveiliging dynamisch, contextbewust en schaalbaar is. Het eerste principe is risk-based decision making, waarbij alle toegangs- en beveiligingsbeslissingen worden genomen op basis van een real-time evaluatie van risico's in plaats van statische regels. Dit betekent dat het systeem continu factoren zoals gebruikersgedrag, apparaatcompliance, netwerklocatie, tijdstip van toegang en historische patronen evalueert om een risicoscore te berekenen die bepaalt of toegang wordt verleend, wordt geblokkeerd, of aanvullende authenticatie vereist. Azure Active Directory Conditional Access met risk-based policies is de primaire technologie voor het implementeren van dit principe, waarbij Identity Protection continu gebruikers- en aanmeldingsrisico's evalueert en automatisch acties onderneemt zoals het vereisen van multi-factor authentication, het blokkeren van verdachte aanmeldingen, of het forceren van wachtwoordwijzigingen. Het tweede principe is continuous monitoring and learning, waarbij het beveiligingssysteem continu nieuwe informatie verzamelt, analyseert en gebruikt om zijn detectie- en responscapaciteiten te verbeteren. Azure Sentinel speelt hierin een centrale rol door security events van Azure Monitor, Microsoft 365 Defender, Azure Active Directory, en andere bronnen te verzamelen en te analyseren met behulp van machine learning-algoritmen. Deze algoritmen leren van historische incidenten, identificeren patronen die wijzen op bedreigingen, en genereren automatisch detection rules die nieuwe aanvallen kunnen identificeren voordat zij schade veroorzaken. Het systeem past zich aan door te leren van false positives en false negatives, waardoor de nauwkeurigheid van bedreigingsdetectie continu verbetert. Het derde principe is automated response and remediation, waarbij het systeem niet alleen bedreigingen detecteert, maar ook automatisch acties onderneemt om risico's te mitigeren zonder dat handmatige interventie nodig is. Azure Automation en Azure Logic Apps maken het mogelijk om playbooks te creëren die automatisch worden geactiveerd wanneer specifieke bedreigingen worden gedetecteerd. Deze playbooks kunnen acties uitvoeren zoals het isoleren van gecompromitteerde resources, het blokkeren van verdachte IP-adressen, het resetten van wachtwoorden, of het escaleren van incidenten naar security teams. Door deze automatisering kunnen organisaties sneller reageren op bedreigingen, de impact van incidenten minimaliseren, en de werklast van security teams verminderen zodat zij zich kunnen focussen op complexere bedreigingen die menselijke expertise vereisen. Het vierde principe is contextual awareness, waarbij het systeem niet alleen kijkt naar individuele events, maar naar de volledige context waarin deze plaatsvinden. Dit betekent dat het systeem correleert tussen verschillende signalen, zoals ongebruikelijke aanmeldingslocaties gecombineerd met toegang tot gevoelige data, of verdachte netwerkactiviteit gecombineerd met wijzigingen in security policies. Azure Sentinel's correlation engine en User and Entity Behavior Analytics (UEBA) maken het mogelijk om deze contextuele analyses uit te voeren en complexe bedreigingsscenario's te identificeren die anders onopgemerkt zouden blijven. Door deze contextuele benadering kunnen organisaties niet alleen individuele events detecteren, maar ook geavanceerde multi-stage attacks identificeren waarbij aanvallers verschillende technieken combineren om hun doelen te bereiken.

Implementatie en Configuratie

De implementatie van een adaptive security architecture in Azure begint met het opzetten van de fundamentele monitoring- en detectie-infrastructuur. Dit omvat het inschakelen van Azure Security Center of Microsoft Defender for Cloud voor alle relevante Azure subscriptions, het configureren van Azure Sentinel als centrale SIEM-oplossing, en het inschakelen van Azure Active Directory Identity Protection voor risk-based access control. Voor Nederlandse overheidsorganisaties is het belangrijk om te beginnen met een duidelijk gedefinieerd scope, waarbij eerst de meest kritieke workloads en identiteiten worden beschermd voordat de architectuur wordt uitgebreid naar de volledige omgeving. Dit gefaseerde aanpak maakt het mogelijk om lessen te leren en de configuratie te verfijnen voordat de volledige organisatie wordt omvat. Een cruciaal onderdeel van de implementatie is het configureren van Azure Active Directory Conditional Access policies die risk-based decisions maken. Deze policies moeten worden ontworpen om verschillende risiconiveaus te adresseren, waarbij lage risico's resulteren in normale toegang, middelmatige risico's aanvullende authenticatie vereisen, en hoge risico's toegang blokkeren of wachtwoordwijzigingen forceren. Identity Protection moet worden geconfigureerd om automatisch gebruikers- en aanmeldingsrisico's te detecteren op basis van factoren zoals ongebruikelijke locaties, gecompromitteerde referenties, of verdacht gebruikersgedrag. Het is belangrijk om deze policies geleidelijk te implementeren, te beginnen met monitoring mode waarin acties worden gelogd maar niet worden geëxecuteerd, zodat organisaties kunnen leren welke impact de policies hebben voordat zij volledig worden geactiveerd. Azure Sentinel configuratie omvat het instellen van data connectors voor alle relevante bronnen, het configureren van analytics rules voor bedreigingsdetectie, en het creëren van automation playbooks voor incident response. Data connectors moeten worden ingesteld voor Azure Monitor, Microsoft 365 Defender, Azure Active Directory, en andere relevante services om ervoor te zorgen dat alle security events worden verzameld. Analytics rules moeten worden geconfigureerd om zowel bekende bedreigingspatronen te detecteren als anomalieën te identificeren die kunnen wijzen op nieuwe aanvallen. Automation playbooks moeten worden ontworpen om automatisch te reageren op veelvoorkomende bedreigingen, zoals het isoleren van gecompromitteerde resources of het blokkeren van verdachte IP-adressen, terwijl complexere incidenten worden geëscaleerd naar security teams voor verdere analyse. Voor geavanceerde organisaties kan de implementatie worden uitgebreid met custom machine learning-modellen die zijn getraind op organisatie-specifieke data om bedreigingen te detecteren die uniek zijn voor de organisatie. Azure Machine Learning kan worden gebruikt om deze modellen te ontwikkelen en te trainen, waarna zij kunnen worden geïntegreerd in Azure Sentinel voor real-time bedreigingsdetectie. Daarnaast kunnen organisaties gebruikmaken van Azure Policy om automatisch security best practices te implementeren voor nieuwe resources, waarbij het systeem automatisch security configuraties toepast wanneer nieuwe workloads worden geïmplementeerd. Deze geautomatiseerde aanpak zorgt ervoor dat beveiliging niet alleen adaptief is, maar ook proactief nieuwe risico's voorkomt voordat zij kunnen worden geëxploiteerd.

Monitoring en Bedreigingsdetectie

Gebruik PowerShell-script adaptive-security-architecture.ps1 (functie Invoke-Monitoring) – Controleert de status van adaptive security componenten en risico-indicatoren.

Effectieve monitoring van een adaptive security architecture vereist een gelaagde aanpak waarbij verschillende niveaus van bedreigingsdetectie en -analyse worden gecombineerd. Op het eerste niveau worden real-time security events gemonitord via Azure Monitor en Azure Sentinel, waarbij automatische alerts worden gegenereerd wanneer verdachte activiteiten worden gedetecteerd. Deze alerts moeten worden geprioriteerd op basis van risico en impact, zodat security teams zich kunnen focussen op de meest kritieke bedreigingen. Azure Sentinel's incident management functionaliteit maakt het mogelijk om gerelateerde alerts te groeperen in incidents, waardoor security analisten een compleet beeld krijgen van multi-stage attacks en kunnen reageren op de volledige bedreiging in plaats van individuele events. Op het tweede niveau worden gebruikers- en entiteitsgedrag geanalyseerd met behulp van User and Entity Behavior Analytics (UEBA) technologieën die zijn ingebouwd in Azure Sentinel en Azure Active Directory Identity Protection. Deze analyses identificeren afwijkingen in gebruikerspatronen, zoals ongebruikelijke toegangstijden, toegang tot resources die normaal niet worden gebruikt, of activiteiten die afwijken van historische patronen. Door deze gedragsanalyses kunnen organisaties niet alleen bekende bedreigingen detecteren, maar ook nieuwe aanvallen identificeren die gebruikmaken van technieken die nog niet eerder zijn gezien. Het is belangrijk om regelmatig de UEBA-modellen te evalueren en bij te werken om ervoor te zorgen dat zij blijven aansluiten bij de werkelijke gebruikerspatronen en bedreigingslandschap. Op het derde niveau worden security metrics en key performance indicators (KPI's) gemonitord om de algehele effectiviteit van de adaptive security architecture te meten. Deze metrics omvatten onder andere de gemiddelde tijd tot detectie (MTTD) van bedreigingen, de gemiddelde tijd tot respons (MTTR) op incidenten, het aantal false positives en false negatives, en de mate waarin risk-based policies effectief zijn in het blokkeren van bedreigingen zonder legitieme gebruikers te hinderen. Deze metrics moeten regelmatig worden gerapporteerd aan bestuur en management om te demonstreren dat de adaptive security architecture daadwerkelijk bijdraagt aan verbeterde beveiliging en compliance. Voor Nederlandse overheidsorganisaties is het belangrijk om deze metrics expliciet te koppelen aan BIO- en NIS2-vereisten, zodat auditors kunnen verifiëren dat de organisatie voldoet aan de eisen voor bedreigingsdetectie en incident response.

Compliance en Auditing

Adaptive security architecture in Azure moet worden gepositioneerd binnen het bredere compliance- en auditkader van de organisatie. Voor Nederlandse overheidsorganisaties betekent dit dat de architectuur moet voldoen aan de Baseline Informatiebeveiliging Overheid (BIO), waarbij met name de normen rond risicomanagement, bedreigingsdetectie en incident response relevant zijn. BIO vereist dat organisaties een risicogestuurde aanpak hanteren voor informatiebeveiliging, waarbij beveiligingsmaatregelen zijn afgestemd op de werkelijke bedreigingen en risico's. Adaptive security architecture sluit hier perfect bij aan door risico's continu te evalueren en beveiligingsmaatregelen dynamisch aan te passen op basis van deze evaluaties. Tijdens BIO-audits moeten organisaties kunnen aantonen dat zij beschikken over adequate bedreigingsdetectie, dat risico's worden gemonitord en geëvalueerd, en dat er processen zijn voor het reageren op beveiligingsincidenten. De NIS2-richtlijn en de bijbehorende Nederlandse implementatiewet stellen specifieke eisen aan essentiële en belangrijke entiteiten met betrekking tot bedreigingsdetectie, incident response en risicomanagement. Organisaties die onder de reikwijdte van NIS2 vallen, moeten kunnen aantonen dat zij beschikken over adequate security monitoring en incident response capaciteiten, inclusief geautomatiseerde bedreigingsdetectie en responsmechanismen. Adaptive security architecture in Azure kan worden gebruikt om aan deze eisen te voldoen, mits de organisatie kan aantonen dat de architectuur effectief is in het detecteren en reageren op bedreigingen, en dat er adequate governance en documentatie aanwezig is. Het is belangrijk om expliciet te documenteren hoe de adaptive security architecture bijdraagt aan NIS2-compliance, inclusief welke bedreigingen worden gedetecteerd, hoe incidenten worden afgehandeld, en hoe de effectiviteit wordt gemeten. ISO 27001 certificering vereist dat organisaties kunnen aantonen dat zij beschikken over adequate security controls die continu worden gemonitord en geëvalueerd. Adaptive security architecture kan worden gebruikt om aan verschillende ISO 27001 controls te voldoen, met name A.12.4 (Logging and monitoring), A.12.6 (Management of technical vulnerabilities), en A.16.1 (Management of information security incidents). Tijdens ISO 27001 audits moeten organisaties kunnen aantonen dat de adaptive security architecture effectief is in het detecteren van bedreigingen, dat security events worden gelogd en geanalyseerd, en dat er processen zijn voor het reageren op beveiligingsincidenten. Het is belangrijk om deze processen te documenteren en regelmatig te testen om te verifiëren dat zij effectief blijven. Voor audit-doeleinden is het essentieel dat alle aspecten van de adaptive security architecture aantoonbaar zijn gedocumenteerd. Dit omvat configuraties van Conditional Access policies, Identity Protection settings, Azure Sentinel analytics rules, automation playbooks, en de resultaten van security monitoring en incident response activiteiten. Deze documentatie moet centraal worden opgeslagen met bewaartermijnen die aansluiten bij wettelijke en organisatorische eisen, zodat auditors en toezichthouders op ieder moment een compleet beeld kunnen krijgen van de adaptive security inrichting en effectiviteit.

Remediatie en Verbeteracties

Gebruik PowerShell-script adaptive-security-architecture.ps1 (functie Invoke-Remediation) – Implementeert basisconfiguraties voor adaptive security architecture.

Wanneer uit analyses, monitoring of audits blijkt dat de adaptive security architecture tekortschiet, is een gestructureerde remediatieaanpak noodzakelijk. Dit begint met het identificeren van specifieke tekortkomingen, zoals onvoldoende bedreigingsdetectie, te veel false positives die de effectiviteit verminderen, of gebrek aan automatisering in incident response. Een gap-analyse moet worden uitgevoerd om de huidige staat te vergelijken met best practices en compliance-vereisten, waarbij prioriteiten worden gesteld op basis van risico en impact. Kritieke tekortkomingen die direct kunnen leiden tot beveiligingsincidenten moeten eerst worden aangepakt, gevolgd door structurele verbeteringen die de algehele effectiviteit van de architectuur verhogen. Remediatie-activiteiten kunnen verschillende vormen aannemen, afhankelijk van de specifieke tekortkomingen. Als bedreigingsdetectie onvoldoende is, kunnen aanvullende analytics rules worden geconfigureerd in Azure Sentinel, kunnen machine learning-modellen worden getraind en geïmplementeerd, of kunnen data connectors worden toegevoegd om meer security events te verzamelen. Als false positives een probleem vormen, moeten analytics rules worden verfijnd, moeten machine learning-modellen worden hertraind met betere data, of moeten thresholds worden aangepast om alleen echte bedreigingen te detecteren. Als automatisering ontbreekt, moeten automation playbooks worden ontwikkeld en geïmplementeerd voor veelvoorkomende bedreigingsscenario's, waarbij het belangrijk is om te beginnen met eenvoudige scenario's voordat complexere automatisering wordt toegevoegd. Na implementatie van remediatie-activiteiten moet een formele evaluatie plaatsvinden om te verifiëren dat de maatregelen effectief zijn. Dit omvat het testen van nieuwe bedreigingsdetectie-regels, het meten van de impact op false positives en false negatives, en het evalueren van de effectiviteit van geautomatiseerde responsacties. De resultaten van deze evaluatie moeten worden gedeeld met bestuur, CISO en interne audit, zodat duidelijk is welke risico's zijn gereduceerd en welke rest-risico's nog geaccepteerd moeten worden. Door deze gestructureerde aanpak wordt adaptive security architecture een continu verbeterproces waarin beveiliging steeds effectiever wordt in het detecteren en reageren op bedreigingen.

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 Adaptieve Beveiligingsarchitectuur - Monitoring en Configuratie .DESCRIPTION Controleert de status van adaptieve beveiligingscomponenten in Azure: - Microsoft Defender voor Cloud status en Secure Score - Microsoft Sentinel configuratie en data connectors - Adaptive Network Hardening status - Just-In-Time (JIT) VM-toegang configuratie - Bedreigingsinformatie-integratie status Het script biedt inzicht in de volwassenheid van de adaptieve beveiligingsarchitectuur en helpt bij het identificeren van verbeterpunten. .NOTES Filename: adaptive-security-architecture.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/management/adaptive-security-architecture.json NBVC Debug: Gebruik de omgevingsvariabele NBVC_LOCAL_DEBUG=1 om lokale testen uit te voeren zonder verbinding te maken met Azure-API's. #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Security, Az.Monitor [CmdletBinding()] param( [Parameter(HelpMessage = "Controleert de status van adaptieve beveiligingscomponenten")] [switch]$Monitoring, [Parameter(HelpMessage = "Ondersteunt implementatie van adaptieve beveiligingsconfiguraties")] [switch]$Implementation, [Parameter(HelpMessage = "Identificeert en ondersteunt remediatie van ontbrekende configuraties")] [switch]$Remediation, [Parameter(HelpMessage = "Preview wijzigingen zonder daadwerkelijk uit te voeren")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' $PolicyName = "Adaptieve Beveiligingsarchitectuur" function Get-IsLocalDebug { param() return [bool]($env:NBVC_LOCAL_DEBUG -eq '1') } function Connect-RequiredServices { if (Get-IsLocalDebug) { Write-Verbose "NBVC_LOCAL_DEBUG is actief - Azure verbinding wordt overgeslagen." return } try { if (-not (Get-Module -ListAvailable -Name Az.Accounts)) { throw "Het PowerShell-module 'Az.Accounts' is niet beschikbaar. Installeer dit module voordat u het script in productie gebruikt." } $ctx = Get-AzContext -ErrorAction SilentlyContinue if (-not $ctx) { Write-Host "Verbinding maken met Azure (Connect-AzAccount)..." -ForegroundColor Yellow Connect-AzAccount -ErrorAction Stop | Out-Null } else { Write-Verbose "Bestaande Azure context gevonden: $($ctx.Name)" } } catch { throw "Kon niet verbinden met Azure: $($_.Exception.Message)" } } function Get-DefenderForCloudStatus { <# .SYNOPSIS Controleert de status van Microsoft Defender voor Cloud. .OUTPUTS PSCustomObject met Secure Score en configuratiestatus. #> [CmdletBinding()] param() if (Get-IsLocalDebug) { return [PSCustomObject]@{ SecureScore = 75 IsEnabled = $true SubscriptionsProtected = 3 RecommendationsCount = 15 HighSeverityFindings = 2 } } Connect-RequiredServices try { $secureScore = Get-AzSecuritySecureScore -ErrorAction SilentlyContinue | Select-Object -First 1 $subscriptions = Get-AzSubscription -ErrorAction SilentlyContinue $recommendations = Get-AzSecurityRecommendation -ErrorAction SilentlyContinue $highSeverity = ($recommendations | Where-Object { $_.Severity -eq 'High' }).Count return [PSCustomObject]@{ SecureScore = if ($secureScore) { [Math]::Round($secureScore.Current, 0) } else { 0 } IsEnabled = $secureScore -ne $null SubscriptionsProtected = ($subscriptions | Measure-Object).Count RecommendationsCount = ($recommendations | Measure-Object).Count HighSeverityFindings = $highSeverity } } catch { Write-Verbose "Kon Defender voor Cloud status niet ophalen: $($_.Exception.Message)" return [PSCustomObject]@{ SecureScore = 0 IsEnabled = $false SubscriptionsProtected = 0 RecommendationsCount = 0 HighSeverityFindings = 0 } } } function Get-SentinelStatus { <# .SYNOPSIS Controleert de configuratie van Microsoft Sentinel. .OUTPUTS PSCustomObject met Sentinel-workspace status en data connectors. #> [CmdletBinding()] param() if (Get-IsLocalDebug) { return [PSCustomObject]@{ IsConfigured = $true WorkspaceName = "nbvc-sentinel-workspace" DataConnectorsCount = 5 ActiveAnalyticsRules = 12 } } Connect-RequiredServices try { $workspaces = Get-AzOperationalInsightsWorkspace -ErrorAction SilentlyContinue $sentinelWorkspace = $workspaces | Where-Object { $_.Properties.Features.Sentinel -eq $true } | Select-Object -First 1 if (-not $sentinelWorkspace) { return [PSCustomObject]@{ IsConfigured = $false WorkspaceName = $null DataConnectorsCount = 0 ActiveAnalyticsRules = 0 } } # Aanname: data connectors en analytics rules worden via REST API of portal beheerd # Voor dit script controleren we alleen of een Sentinel-workspace bestaat return [PSCustomObject]@{ IsConfigured = $true WorkspaceName = $sentinelWorkspace.Name DataConnectorsCount = -1 # Vereist REST API call ActiveAnalyticsRules = -1 # Vereist REST API call } } catch { Write-Verbose "Kon Sentinel status niet ophalen: $($_.Exception.Message)" return [PSCustomObject]@{ IsConfigured = $false WorkspaceName = $null DataConnectorsCount = 0 ActiveAnalyticsRules = 0 } } } function Get-AdaptiveNetworkHardeningStatus { <# .SYNOPSIS Controleert de status van Adaptive Network Hardening. .OUTPUTS PSCustomObject met VM's en hardening status. #> [CmdletBinding()] param() if (Get-IsLocalDebug) { return [PSCustomObject]@{ InternetFacingVMs = 8 VMsWithHardening = 6 RecommendationsCount = 3 } } Connect-RequiredServices try { $vms = Get-AzVM -ErrorAction SilentlyContinue $internetFacingVMs = @() foreach ($vm in $vms) { $nics = Get-AzNetworkInterface -ResourceId $vm.NetworkProfile.NetworkInterfaces[0].Id -ErrorAction SilentlyContinue if ($nics) { $publicIPs = Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName -ErrorAction SilentlyContinue if ($publicIPs) { $internetFacingVMs += $vm } } } # Adaptive Network Hardening status vereist REST API calls naar Defender voor Cloud # Voor dit script rapporteren we alleen het aantal internet-facing VM's return [PSCustomObject]@{ InternetFacingVMs = ($internetFacingVMs | Measure-Object).Count VMsWithHardening = -1 # Vereist REST API call RecommendationsCount = -1 # Vereist REST API call } } catch { Write-Verbose "Kon Adaptive Network Hardening status niet ophalen: $($_.Exception.Message)" return [PSCustomObject]@{ InternetFacingVMs = 0 VMsWithHardening = 0 RecommendationsCount = 0 } } } function Get-JitAccessStatus { <# .SYNOPSIS Controleert de configuratie van Just-In-Time VM-toegang. .OUTPUTS PSCustomObject met JIT-configuratiestatus. #> [CmdletBinding()] param() if (Get-IsLocalDebug) { return [PSCustomObject]@{ IsEnabled = $true VMsProtected = 12 PortsConfigured = @(22, 3389, 5985) } } Connect-RequiredServices try { # JIT-toegang status vereist REST API calls naar Defender voor Cloud # Voor dit script rapporteren we dat JIT moet worden gecontroleerd via de portal $vms = Get-AzVM -ErrorAction SilentlyContinue return [PSCustomObject]@{ IsEnabled = -1 # Vereist REST API call VMsProtected = ($vms | Measure-Object).Count PortsConfigured = @() # Vereist REST API call } } catch { Write-Verbose "Kon JIT-toegang status niet ophalen: $($_.Exception.Message)" return [PSCustomObject]@{ IsEnabled = $false VMsProtected = 0 PortsConfigured = @() } } } function Get-AdaptiveSecurityStatus { <# .SYNOPSIS Haalt een samenvattend overzicht op van alle adaptieve beveiligingscomponenten. .OUTPUTS PSCustomObject met complete status. #> [CmdletBinding()] param() $defender = Get-DefenderForCloudStatus $sentinel = Get-SentinelStatus $hardening = Get-AdaptiveNetworkHardeningStatus $jit = Get-JitAccessStatus return [PSCustomObject]@{ Timestamp = Get-Date DefenderForCloud = $defender Sentinel = $sentinel AdaptiveNetworkHardening = $hardening JustInTimeAccess = $jit } } function Invoke-Monitoring { <# .SYNOPSIS Toont een overzicht van de adaptieve beveiligingsarchitectuur status. #> [CmdletBinding()] param() Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Monitoring" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $status = Get-AdaptiveSecurityStatus Write-Host "`nMicrosoft Defender voor Cloud:" -ForegroundColor Yellow Write-Host " Status: $(if ($status.DefenderForCloud.IsEnabled) { 'Ingeschakeld' } else { 'Niet ingeschakeld' })" -ForegroundColor $(if ($status.DefenderForCloud.IsEnabled) { "Green" } else { "Red" }) Write-Host " Secure Score: $($status.DefenderForCloud.SecureScore)%" -ForegroundColor $(if ($status.DefenderForCloud.SecureScore -ge 80) { "Green" } elseif ($status.DefenderForCloud.SecureScore -ge 60) { "Yellow" } else { "Red" }) Write-Host " Beschermde abonnementen: $($status.DefenderForCloud.SubscriptionsProtected)" -ForegroundColor White Write-Host " Aanbevelingen: $($status.DefenderForCloud.RecommendationsCount)" -ForegroundColor White Write-Host " Hoge prioriteit: $($status.DefenderForCloud.HighSeverityFindings)" -ForegroundColor $(if ($status.DefenderForCloud.HighSeverityFindings -eq 0) { "Green" } else { "Red" }) Write-Host "`nMicrosoft Sentinel:" -ForegroundColor Yellow Write-Host " Status: $(if ($status.Sentinel.IsConfigured) { 'Geconfigureerd' } else { 'Niet geconfigureerd' })" -ForegroundColor $(if ($status.Sentinel.IsConfigured) { "Green" } else { "Red" }) if ($status.Sentinel.IsConfigured) { Write-Host " Workspace: $($status.Sentinel.WorkspaceName)" -ForegroundColor White if ($status.Sentinel.DataConnectorsCount -ge 0) { Write-Host " Data connectors: $($status.Sentinel.DataConnectorsCount)" -ForegroundColor White } if ($status.Sentinel.ActiveAnalyticsRules -ge 0) { Write-Host " Analytics rules: $($status.Sentinel.ActiveAnalyticsRules)" -ForegroundColor White } } Write-Host "`nAdaptive Network Hardening:" -ForegroundColor Yellow Write-Host " Internet-facing VM's: $($status.AdaptiveNetworkHardening.InternetFacingVMs)" -ForegroundColor White if ($status.AdaptiveNetworkHardening.VMsWithHardening -ge 0) { Write-Host " VM's met hardening: $($status.AdaptiveNetworkHardening.VMsWithHardening)" -ForegroundColor White } if ($status.AdaptiveNetworkHardening.RecommendationsCount -ge 0) { Write-Host " Aanbevelingen: $($status.AdaptiveNetworkHardening.RecommendationsCount)" -ForegroundColor White } Write-Host "`nJust-In-Time VM-toegang:" -ForegroundColor Yellow if ($status.JustInTimeAccess.IsEnabled -is [bool]) { Write-Host " Status: $(if ($status.JustInTimeAccess.IsEnabled) { 'Ingeschakeld' } else { 'Niet ingeschakeld' })" -ForegroundColor $(if ($status.JustInTimeAccess.IsEnabled) { "Green" } else { "Red" }) } Write-Host " VM's beschikbaar: $($status.JustInTimeAccess.VMsProtected)" -ForegroundColor White # Samenvattende beoordeling Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Samenvattende beoordeling:" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $issues = @() if (-not $status.DefenderForCloud.IsEnabled) { $issues += "Microsoft Defender voor Cloud is niet ingeschakeld" } if ($status.DefenderForCloud.SecureScore -lt 60) { $issues += "Secure Score is onder de 60% - significante verbetering nodig" } if (-not $status.Sentinel.IsConfigured) { $issues += "Microsoft Sentinel is niet geconfigureerd" } if ($status.AdaptiveNetworkHardening.InternetFacingVMs -gt 0 -and $status.AdaptiveNetworkHardening.VMsWithHardening -eq 0) { $issues += "Internet-facing VM's hebben geen Adaptive Network Hardening" } if ($issues.Count -eq 0) { Write-Host "De adaptieve beveiligingsarchitectuur is goed geconfigureerd." -ForegroundColor Green Write-Host "Blijf de Secure Score monitoren en implementeer nieuwe aanbevelingen regelmatig." -ForegroundColor Green } else { Write-Host "De volgende aandachtspunten zijn geïdentificeerd:" -ForegroundColor Yellow foreach ($issue in $issues) { Write-Host " - $issue" -ForegroundColor Yellow } Write-Host "`nGebruik de Remediation-modus voor gedetailleerde aanbevelingen." -ForegroundColor Cyan } return $status } function Invoke-Implementation { <# .SYNOPSIS Ondersteunt implementatie van adaptieve beveiligingsconfiguraties. .DESCRIPTION Deze functie geeft richtlijnen voor het implementeren van adaptieve beveiligingscomponenten zonder automatisch wijzigingen door te voeren. #> [CmdletBinding()] param() Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Implementatie" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $status = Get-AdaptiveSecurityStatus Write-Host "`nImplementatie-aanbevelingen:" -ForegroundColor Yellow if (-not $status.DefenderForCloud.IsEnabled) { Write-Host "`n1. Microsoft Defender voor Cloud inschakelen:" -ForegroundColor Cyan Write-Host " - Navigeer naar Azure Portal > Microsoft Defender voor Cloud" -ForegroundColor White Write-Host " - Activeer Defender voor Cloud op alle relevante abonnementen" -ForegroundColor White Write-Host " - Configureer compliance-initiatieven (CIS, ISO 27001, Nederlandse Baseline)" -ForegroundColor White } if (-not $status.Sentinel.IsConfigured) { Write-Host "`n2. Microsoft Sentinel configureren:" -ForegroundColor Cyan Write-Host " - Maak een Log Analytics-workspace aan of gebruik een bestaande" -ForegroundColor White Write-Host " - Activeer Microsoft Sentinel op de workspace" -ForegroundColor White Write-Host " - Configureer data connectors voor Azure Activity Logs, Defender voor Cloud alerts" -ForegroundColor White Write-Host " - Activeer ingebouwde analytics rules voor veelvoorkomende aanvallen" -ForegroundColor White } if ($status.AdaptiveNetworkHardening.InternetFacingVMs -gt 0) { Write-Host "`n3. Adaptive Network Hardening activeren:" -ForegroundColor Cyan Write-Host " - Navigeer naar Defender voor Cloud > Adaptive Network Hardening" -ForegroundColor White Write-Host " - Review aanbevelingen voor internet-facing VM's" -ForegroundColor White Write-Host " - Implementeer aanbevelingen om het aanvalsoppervlak te verkleinen" -ForegroundColor White } if ($status.JustInTimeAccess.VMsProtected -gt 0) { Write-Host "`n4. Just-In-Time VM-toegang configureren:" -ForegroundColor Cyan Write-Host " - Navigeer naar Defender voor Cloud > Just-In-Time VM-toegang" -ForegroundColor White Write-Host " - Configureer JIT-toegang voor beheerpoorten (RDP, SSH, etc.)" -ForegroundColor White Write-Host " - Stel beleidsregels in voor geautoriseerde gebruikers en MFA-vereisten" -ForegroundColor White } Write-Host "`n5. Bedreigingsinformatie integreren:" -ForegroundColor Cyan Write-Host " - Activeer Microsoft Threat Intelligence connectors in Sentinel" -ForegroundColor White Write-Host " - Configureer feeds van externe bronnen indien beschikbaar" -ForegroundColor White Write-Host " - Stel automatische scans in voor indicatoren van compromittering" -ForegroundColor White Write-Host "`nVoor gedetailleerde implementatiestappen, raadpleeg het bijbehorende JSON-artikel." -ForegroundColor Cyan return $status } function Invoke-Remediation { <# .SYNOPSIS Identificeert ontbrekende configuraties en geeft remediatie-aanbevelingen. .DESCRIPTION Deze functie analyseert de huidige status en geeft concrete aanbevelingen voor het verbeteren van de adaptieve beveiligingsarchitectuur. #> [CmdletBinding()] param() Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Remediatie" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $status = Get-AdaptiveSecurityStatus $remediationItems = @() if (-not $status.DefenderForCloud.IsEnabled) { $remediationItems += [PSCustomObject]@{ Priority = "Critical" Component = "Microsoft Defender voor Cloud" Issue = "Niet ingeschakeld" Recommendation = "Activeer Defender voor Cloud op alle relevante abonnementen via Azure Portal of Azure Policy" } } if ($status.DefenderForCloud.SecureScore -lt 60) { $remediationItems += [PSCustomObject]@{ Priority = "High" Component = "Secure Score" Issue = "Secure Score is $($status.DefenderForCloud.SecureScore)% (doel: minimaal 80%)" Recommendation = "Review en implementeer aanbevelingen met hoge prioriteit, focus op kritieke beveiligingscontroles" } } if ($status.DefenderForCloud.HighSeverityFindings -gt 0) { $remediationItems += [PSCustomObject]@{ Priority = "High" Component = "Beveiligingsaanbevelingen" Issue = "$($status.DefenderForCloud.HighSeverityFindings) bevindingen met hoge prioriteit" Recommendation = "Los alle hoge prioriteit aanbevelingen op binnen 30 dagen" } } if (-not $status.Sentinel.IsConfigured) { $remediationItems += [PSCustomObject]@{ Priority = "High" Component = "Microsoft Sentinel" Issue = "Niet geconfigureerd" Recommendation = "Configureer Sentinel als centrale SIEM-oplossing voor security monitoring en incident response" } } if ($status.AdaptiveNetworkHardening.InternetFacingVMs -gt 0) { $remediationItems += [PSCustomObject]@{ Priority = "Medium" Component = "Adaptive Network Hardening" Issue = "$($status.AdaptiveNetworkHardening.InternetFacingVMs) internet-facing VM's gedetecteerd" Recommendation = "Review en implementeer Adaptive Network Hardening aanbevelingen om het aanvalsoppervlak te verkleinen" } } if ($remediationItems.Count -eq 0) { Write-Host "`nGeen kritieke remediatie-items geïdentificeerd." -ForegroundColor Green Write-Host "De adaptieve beveiligingsarchitectuur voldoet aan de basisvereisten." -ForegroundColor Green Write-Host "Blijf de Secure Score monitoren en implementeer nieuwe aanbevelingen regelmatig." -ForegroundColor Cyan } else { Write-Host "`nGeïdentificeerde remediatie-items:" -ForegroundColor Yellow Write-Host "" $critical = $remediationItems | Where-Object { $_.Priority -eq "Critical" } $high = $remediationItems | Where-Object { $_.Priority -eq "High" } $medium = $remediationItems | Where-Object { $_.Priority -eq "Medium" } if ($critical) { Write-Host "KRITIEK:" -ForegroundColor Red foreach ($item in $critical) { Write-Host " Component: $($item.Component)" -ForegroundColor Red Write-Host " Probleem: $($item.Issue)" -ForegroundColor Yellow Write-Host " Aanbeveling: $($item.Recommendation)" -ForegroundColor White Write-Host "" } } if ($high) { Write-Host "HOGE PRIORITEIT:" -ForegroundColor Yellow foreach ($item in $high) { Write-Host " Component: $($item.Component)" -ForegroundColor Yellow Write-Host " Probleem: $($item.Issue)" -ForegroundColor Yellow Write-Host " Aanbeveling: $($item.Recommendation)" -ForegroundColor White Write-Host "" } } if ($medium) { Write-Host "MEDIUM PRIORITEIT:" -ForegroundColor Cyan foreach ($item in $medium) { Write-Host " Component: $($item.Component)" -ForegroundColor Cyan Write-Host " Probleem: $($item.Issue)" -ForegroundColor Yellow Write-Host " Aanbeveling: $($item.Recommendation)" -ForegroundColor White Write-Host "" } } Write-Host "Gebruik de Implementation-modus voor gedetailleerde implementatiestappen." -ForegroundColor Cyan } return @{ Status = $status RemediationItems = $remediationItems } } try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan if ($Monitoring) { Invoke-Monitoring | Out-Null } elseif ($Implementation) { Invoke-Implementation | Out-Null } elseif ($Remediation) { Invoke-Remediation | Out-Null } else { # Standaard: monitoring-uitvoer Invoke-Monitoring | Out-Null } } catch { Write-Error ("Fout tijdens uitvoering van {0}: {1}" -f $PolicyName, $_) exit 1 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder adaptive security architecture blijven organisaties afhankelijk van statische beveiligingsregels die niet adequaat reageren op veranderende bedreigingen en gebruikerspatronen. Dit leidt tot verhoogd risico op geavanceerde persistent threats, inefficiënte toegangscontroles, en het onvermogen om proactief te reageren op nieuwe bedreigingen. Voor Nederlandse overheidsorganisaties kan dit resulteren in niet-naleving van BIO- en NIS2-vereisten, verhoogde blootstelling aan cyberbedreigingen, en reputatieschade bij beveiligingsincidenten.

Management Samenvatting

Adaptive security architecture in Azure combineert risk-based access control, continuous monitoring, machine learning-based threat detection, en automated response om een dynamisch beveiligingssysteem te creëren dat continu reageert op bedreigingen en omgevingsveranderingen. Door Azure Active Directory Conditional Access, Azure Sentinel, Identity Protection en geautomatiseerde playbooks te combineren, kunnen organisaties proactief bedreigingen detecteren en reageren, terwijl toegangsbeslissingen worden genomen op basis van real-time risico-evaluaties. Dit artikel beschrijft de architectuurprincipes, implementatie, monitoring, compliance-eisen en remediatie, zodat organisaties een volwassen adaptive security inrichting kunnen realiseren.