Vulnerability Assessment Ingeschakeld: Continue Kwetsbaarheidsdetectie In Azure

💼 Management Samenvatting

Vulnerability Assessment vormt de basis voor proactief kwetsbaarheidsbeheer in Azure-omgevingen. Door automatische scanning van virtuele machines, containers en databases kunnen organisaties kwetsbaarheden identificeren voordat deze worden misbruikt door aanvallers. Voor Nederlandse overheidsorganisaties is het inschakelen en configureren van Vulnerability Assessment essentieel om te voldoen aan compliance-vereisten zoals BIO, NIS2 en AVG, terwijl tegelijkertijd de beveiligingspostuur wordt versterkt door continue detectie en remediatie van beveiligingslekken.

Aanbeveling
IMPLEMENTEER VULNERABILITY ASSESSMENT
Risico zonder
High
Risk Score
9/10
Implementatie
40u (tech: 16u)
Van toepassing op:
Azure

Zonder ingeschakelde Vulnerability Assessment blijven organisaties blind voor beveiligingskwetsbaarheden in hun Azure-omgeving. Ongepatchte systemen, verouderde software en verkeerde configuraties blijven onopgemerkt totdat ze worden misbruikt in een aanval. Dit leidt tot verhoogde risico's op datalekken, ransomware-incidenten en compliance-overtredingen. Vulnerability Assessment lost deze problemen op door automatisch te scannen op bekende kwetsbaarheden, prioritering te bieden op basis van ernst en impact, en integratie met patchmanagement-systemen voor geautomatiseerde remediatie. Daarnaast biedt Vulnerability Assessment meetbare bewijsstukken voor audits en compliance-controles, wat essentieel is voor het demonstreren van due diligence in beveiligingsbeheer.

PowerShell Modules Vereist
Primary API: Azure Security API, Defender voor Cloud
Connection: Connect-AzAccount
Required Modules: Az.Accounts, Az.Security

Implementatie

Vulnerability Assessment in Azure omvat het inschakelen en configureren van geïntegreerde scanning-functionaliteit voor verschillende resource-typen. Voor virtuele machines wordt Vulnerability Assessment geleverd via Microsoft Defender voor Servers, dat automatisch scans uitvoert op geïnstalleerde software, besturingssysteemconfiguraties en bekende CVE's. Voor containers wordt scanning uitgevoerd op container images in Azure Container Registry en AKS-clusters, waarbij kwetsbaarheden worden gedetecteerd voordat containers worden gedeployed. Voor SQL-databases wordt Vulnerability Assessment uitgevoerd via Microsoft Defender voor SQL, dat databaseconfiguraties en bestaande kwetsbaarheden analyseert. Het proces omvat het configureren van scanfrequenties, het instellen van alerts voor nieuwe kritieke kwetsbaarheden, het integreren van bevindingen in patchmanagement-processen, en het genereren van rapportages voor management en compliance. Het gekoppelde PowerShell-script helpt organisaties om te controleren of Vulnerability Assessment is ingeschakeld op alle relevante abonnementen en resources, en om de status van gedetecteerde kwetsbaarheden te monitoren.

Vereisten

Voordat organisaties Vulnerability Assessment kunnen inschakelen en gebruiken, moeten verschillende technische, licentie- en configuratievereisten worden vervuld. Deze vereisten vormen de fundamentele basis voor een succesvolle implementatie en zijn essentieel om te kunnen waarborgen dat Vulnerability Assessment effectief en duurzaam werkt.

De primaire technische vereiste is dat Microsoft Defender voor Cloud actief is ingeschakeld op de relevante Azure-abonnementen. Vulnerability Assessment is beschikbaar als onderdeel van verschillende Defender-plannen: Defender voor Servers voor virtuele machines, Defender voor Containers voor container images en AKS-clusters, en Defender voor SQL voor SQL-databases. Organisaties moeten ervoor zorgen dat de juiste Defender-plannen zijn ingeschakeld op basis van de resources die zij gebruiken. Voor productieomgevingen is het sterk aanbevolen om alle relevante Defender-plannen in te schakelen voor volledige dekking. Daarnaast moeten organisaties ervoor zorgen dat alle benodigde data connectors zijn geconfigureerd, zodat Defender voor Cloud volledige zichtbaarheid heeft in de Azure-omgeving en alle relevante resources kan scannen.

Voor virtuele machines vereist Vulnerability Assessment dat de Microsoft Defender-extensie is geïnstalleerd op de VM's. Deze extensie wordt automatisch geïnstalleerd wanneer Defender voor Servers is ingeschakeld en auto-provisioning is geconfigureerd. Voor handmatige installatie kunnen organisaties de extensie installeren via Azure Portal, Azure CLI of PowerShell. De extensie vereist uitgaande internetconnectiviteit naar Azure-services voor het uploaden van scanresultaten, hoewel organisaties ook een proxy kunnen configureren indien nodig. Voor containers wordt Vulnerability Assessment uitgevoerd op container images in Azure Container Registry, waarbij scanning automatisch plaatsvindt wanneer images worden gepusht naar het register. Voor AKS-clusters kan Vulnerability Assessment worden ingeschakeld via Azure Policy of handmatig via Azure Portal.

Vanuit een licentieperspectief vereist Vulnerability Assessment een geldig Azure Defender-abonnement voor de betreffende resource-typen. Defender voor Servers is beschikbaar in de Standard-tier, Defender voor Containers is beschikbaar in de Standard-tier, en Defender voor SQL is beschikbaar in de Standard-tier. Organisaties moeten ervoor zorgen dat zij over de juiste licenties beschikken voor alle resources die zij willen scannen. Voor Nederlandse overheidsorganisaties kunnen volume licensing-overeenkomsten of Enterprise Agreements gunstigere prijzen bieden. Het is belangrijk om te realiseren dat Vulnerability Assessment geen extra kosten met zich meebrengt bovenop de Defender-abonnementen, maar dat de kosten afhankelijk zijn van het aantal resources dat wordt beveiligd.

Voor de automatisering en monitoring van Vulnerability Assessment is PowerShell versie 5.1 of hoger vereist, samen met de specifieke Azure PowerShell-modules. De Az.Accounts module verzorgt de authenticatie en verbinding met Azure, terwijl de Az.Security module de specifieke cmdlets bevat voor het ophalen van Vulnerability Assessment status, scanresultaten en kwetsbaarheidsgegevens. Deze modules moeten geïnstalleerd zijn op alle systemen waar Vulnerability Assessment scripts worden uitgevoerd, inclusief CI/CD pipelines, geautomatiseerde monitoring-systemen en rapportageplatforms. Voor geavanceerde scenario's kunnen aanvullende modules nodig zijn, zoals Az.Compute voor het beheren van VM-extensies en Az.ContainerRegistry voor het beheren van container registry-instellingen.

Vanuit een beveiligingsperspectief zijn specifieke Azure RBAC-rollen vereist afhankelijk van de gewenste activiteiten. Voor het lezen van Vulnerability Assessment status en scanresultaten is minimaal de Security Reader rol vereist op de Azure-abonnementen. Voor het configureren van Vulnerability Assessment-instellingen zijn aanvullende rollen nodig, zoals Security Admin voor het beheren van Defender-configuraties, of Contributor voor het wijzigen van resource-instellingen. Voor het installeren van VM-extensies is de Virtual Machine Contributor rol vereist. Organisaties moeten ervoor zorgen dat deze rollen worden toegewezen volgens het principe van least privilege, waarbij gebruikers alleen de minimale bevoegdheden krijgen die nodig zijn voor hun specifieke taken binnen het Vulnerability Assessment-proces.

Naast technische vereisten is een gestructureerd organisatorisch proces cruciaal voor succesvolle Vulnerability Assessment. Dit proces moet duidelijk definiëren wie verantwoordelijk is voor het reviewen van scanresultaten, hoe kwetsbaarheden worden geprioriteerd, wie bevoegd is om remediatie-acties uit te voeren, en hoe voortgang wordt gemonitord en gerapporteerd. Het proces moet ook rekening houden met de verschillende stakeholders binnen de organisatie, zoals resource-eigenaren die verantwoordelijk zijn voor het verhelpen van kwetsbaarheden op hun resources, het beveiligingsteam dat de algehele strategie bepaalt, en management dat de voortgang monitort en beslissingen neemt over investeringen. Zonder een dergelijk proces blijft Vulnerability Assessment een technische tool zonder organisatorische impact.

Implementatie

De implementatie van Vulnerability Assessment vereist een gestructureerde aanpak die begint met het inschakelen van de juiste Defender-plannen, gevolgd door configuratie van scaninstellingen, integratie met patchmanagement, en continue monitoring en verbetering. Hoewel het proces kan worden gestart met eenvoudige handmatige stappen, is het essentieel om al vroeg in het proces automatisering en schaalbaarheid te overwegen om duurzame resultaten te behalen.

De eerste stap in het implementatieproces is het inschakelen van de juiste Microsoft Defender-plannen voor de resource-typen die worden gebruikt. Voor virtuele machines betekent dit het inschakelen van Defender voor Servers via Azure Portal, Azure CLI of PowerShell. Het inschakelen kan worden uitgevoerd op abonnementsniveau of management group-niveau voor centrale configuratie. Organisaties moeten ervoor zorgen dat Defender voor Servers is ingeschakeld op alle abonnementen die productie-VM's bevatten, en overwegen om het ook in te schakelen op niet-productieomgevingen voor consistente beveiliging. Voor containers betekent dit het inschakelen van Defender voor Containers, wat automatische scanning biedt voor container images in Azure Container Registry en AKS-clusters. Voor SQL-databases betekent dit het inschakelen van Defender voor SQL, wat database vulnerability assessment biedt.

Na het inschakelen van de Defender-plannen moet auto-provisioning worden geconfigureerd voor automatische installatie van de benodigde agents en extensies. Voor virtuele machines betekent dit het inschakelen van auto-provisioning voor de Log Analytics agent en de Vulnerability Assessment-extensie. Auto-provisioning kan worden geconfigureerd via Azure Portal onder Defender voor Cloud-instellingen, waarbij organisaties kunnen kiezen welke agents automatisch moeten worden geïnstalleerd. Het is belangrijk om te realiseren dat auto-provisioning alleen werkt voor nieuwe VM's; bestaande VM's moeten handmatig worden bijgewerkt of via een geautomatiseerd proces. Voor containers en SQL-databases is auto-provisioning meestal niet nodig, omdat scanning wordt uitgevoerd op basis van de Defender-configuratie zonder aanvullende agents.

Gebruik PowerShell-script vulnerability-assessment-enabled.ps1 (functie Invoke-Implementation) – Controleert of Vulnerability Assessment is ingeschakeld op alle relevante Azure-abonnementen en resources, en rapporteert de status van gedetecteerde kwetsbaarheden.

Het PowerShell-script vulnerability-assessment-enabled.ps1 ondersteunt deze implementatie door automatisch te controleren of Vulnerability Assessment is ingeschakeld op alle abonnementen, of de benodigde agents en extensies zijn geïnstalleerd, en wat de status is van gedetecteerde kwetsbaarheden. Het script maakt verbinding met Azure via Connect-AzAccount, haalt Defender-configuratiegegevens op via de Az.Security module, en analyseert de status van Vulnerability Assessment voor verschillende resource-typen. De uitvoer bevat zowel een overzicht van de inschakelstatus als concrete aanbevelingen voor verbetering, georganiseerd op basis van prioriteit. Het script kan regelmatig worden uitgevoerd om de voortgang te monitoren en nieuwe kwetsbaarheden te identificeren.

Voor effectieve Vulnerability Assessment moet scanconfiguratie worden aangepast aan de behoeften van de organisatie. Voor virtuele machines kunnen organisaties de scanfrequentie configureren, waarbij wekelijkse scans worden aanbevolen voor productieomgevingen en maandelijkse scans voor niet-productieomgevingen. Voor containers kunnen organisaties configureren dat scanning automatisch plaatsvindt bij elke push naar het container register, of alleen bij specifieke tags. Voor SQL-databases kunnen organisaties configureren welke databaseconfiguraties moeten worden gescand en welke regels moeten worden toegepast. Het is belangrijk om deze configuraties te documenteren en regelmatig te reviewen om ervoor te zorgen dat ze nog steeds aansluiten bij de behoeften van de organisatie.

Integratie met patchmanagement-systemen is essentieel voor effectieve remediatie van gedetecteerde kwetsbaarheden. Vulnerability Assessment bevindingen kunnen worden geëxporteerd naar Azure Log Analytics, waar ze kunnen worden geïntegreerd met patchmanagement-tools zoals Azure Update Management of System Center Configuration Manager. Organisaties moeten workflows configureren die automatisch patch-tickets genereren voor hoog-ernstige kwetsbaarheden, of die kwetsbaarheidsgegevens koppelen aan bestaande change management-processen. Deze integratie zorgt ervoor dat kwetsbaarheden niet alleen worden gedetecteerd, maar ook daadwerkelijk worden verholpen binnen afgesproken tijdframes.

Alerting en notificaties vormen een belangrijk onderdeel van de implementatie. Organisaties moeten alerts configureren voor nieuwe kritieke kwetsbaarheden, zodat beveiligingsteams onmiddellijk kunnen reageren op nieuwe bedreigingen. Deze alerts kunnen worden geconfigureerd via Azure Monitor, waarbij organisaties kunnen kiezen voor e-mailnotificaties, SMS-berichten of integratie met SIEM-systemen. Het is belangrijk om alert fatigue te voorkomen door alleen alerts te configureren voor hoog-ernstige kwetsbaarheden of wanneer specifieke drempelwaarden worden overschreden. Daarnaast moeten organisaties regelmatig reviewen of de geconfigureerde alerts nog steeds relevant zijn en of ze leiden tot tijdige actie.

Tot slot is het belangrijk om te realiseren dat Vulnerability Assessment een continue proces is dat regelmatige aandacht vereist. Organisaties moeten resources toewijzen voor het uitvoeren van wekelijkse reviews van nieuwe kwetsbaarheden, maandelijkse prioriteringssessies, en kwartaalreviews van de algehele strategie. Zonder deze continue aandacht zal Vulnerability Assessment niet optimaal werken en zullen nieuwe kwetsbaarheden zich opstapelen zonder adequate actie.

Compliance en Auditing

Vulnerability Assessment speelt een centrale rol bij het aantonen van naleving van verschillende compliance-frameworks die relevant zijn voor Nederlandse overheidsorganisaties. Het assessment-proces zelf, inclusief de documentatie van scanresultaten, prioritering en remediatie, vormt waardevol bewijs tijdens audits en compliance-controles.

De Baseline Informatiebeveiliging Overheid (BIO) vereist dat organisaties passende technische maatregelen implementeren om informatiebeveiliging te waarborgen, inclusief het beheer van technische kwetsbaarheden. Vulnerability Assessment ondersteunt BIO-naleving door een gestructureerd proces te bieden voor het identificeren en beheren van kwetsbaarheden, en door meetbare voortgang te leveren die kan worden gedocumenteerd en gerapporteerd. Specifieke BIO-thema's die worden geadresseerd door Vulnerability Assessment omvatten beheer van technische kwetsbaarheden (BIO 11.01), logging en monitoring (BIO 12.06), en continuïteit van kritieke processen (BIO 17.01). Tijdens ENSIA-audits kunnen Vulnerability Assessment-rapporten worden gebruikt als bewijs dat organisaties actief werken aan het identificeren en verhelpen van beveiligingskwetsbaarheden en dat zij een gestructureerd proces hebben voor kwetsbaarheidsbeheer.

De NIS2-richtlijn vereist dat essentiële en belangrijke entiteiten passende technische en organisatorische maatregelen nemen om de beveiliging van netwerk- en informatiesystemen te waarborgen, inclusief het beheer van kwetsbaarheden. Vulnerability Assessment ondersteunt NIS2-naleving door een continue verbeteringscyclus te bieden die risicobeheer, incidentpreventie en supply chain security adresseert. Het assessment-proces, inclusief de documentatie van scanresultaten en remediatie, kan worden gebruikt als bewijs van geïmplementeerde beveiligingsmaatregelen tijdens NIS2-compliance-controles. Daarnaast helpt het proces organisaties om proactief beveiligingsrisico's te identificeren en te adresseren voordat ze leiden tot beveiligingsincidenten, wat een kernvereiste is van NIS2.

De Algemene Verordening Gegevensbescherming (AVG) vereist dat organisaties passende technische maatregelen implementeren om persoonsgegevens te beschermen. Vulnerability Assessment ondersteunt AVG-naleving door beveiligingscontroles te implementeren die de vertrouwelijkheid, integriteit en beschikbaarheid van persoonsgegevens waarborgen. Specifieke AVG-artikelen die worden geadresseerd omvatten Artikel 32 (beveiliging van verwerking) en Artikel 25 (data protection by design and by default). Het assessment-proces helpt organisaties om te demonstreren dat zij actief werken aan het identificeren en verhelpen van beveiligingskwetsbaarheden die betrekking hebben op persoonsgegevens en dat zij een gestructureerd proces hebben voor kwetsbaarheidsbeheer.

ISO 27001 controle coverage wordt ondersteund door Vulnerability Assessment, omdat kwetsbaarheidsbeheer een kernonderdeel is van informatiebeveiligingsmanagement. Veel Vulnerability Assessment-activiteiten adresseren specifieke ISO 27001 controles, met name op het gebied van beveiligingsconfiguratie (A.12.6.1), beveiligingsincidenten (A.16.1), en beheer van technische kwetsbaarheden (A.12.6.1). Het assessment-proces, inclusief de documentatie van scanresultaten en remediatie, kan worden gebruikt als onderdeel van een ISO 27001 Information Security Management System (ISMS) en als bewijs van continue verbetering tijdens ISO 27001-certificering en surveillance audits.

Voor sectorale kaders, zoals de DigiD-beveiligingsrichtlijnen of aanvullende eisen van toezichthouders in de gezondheidszorg en financiële sector, geldt eveneens dat Vulnerability Assessment kan worden gebruikt als ondersteuning bij compliance. Het is belangrijk om te erkennen dat Vulnerability Assessment een hulpmiddel is voor compliance, maar geen vervanging voor formele compliance-audits. Organisaties moeten nog steeds regelmatige audits uitvoeren, documentatie bijhouden, en processen documenteren om volledige compliance aan te tonen. Vulnerability Assessment biedt echter een continue meting van technische beveiligingscontroles en een gestructureerd proces voor kwetsbaarheidsbeheer, wat een waardevolle aanvulling is op traditionele point-in-time audits.

Monitoring

Gebruik PowerShell-script vulnerability-assessment-enabled.ps1 (functie Invoke-Monitoring) – Monitort de status van Vulnerability Assessment en rapporteert gedetecteerde kwetsbaarheden met prioritering en aanbevelingen.

Effectieve monitoring van Vulnerability Assessment vereist een gestructureerde aanpak die zowel technische als organisatorische aspecten omvat. Het monitoringproces moet inzicht bieden in de status van Vulnerability Assessment, trends identificeren in gedetecteerde kwetsbaarheden, en actiegerichte informatie leveren voor continue verbetering.

Wekelijkse review van nieuwe kwetsbaarheden vormt een kritieke activiteit in het monitoringproces. Elke week verschijnen er nieuwe kwetsbaarheden op basis van updates in de vulnerability databases, nieuwe software die wordt geïnstalleerd, of wijzigingen in configuraties. Het beveiligingsteam moet wekelijks tijd reserveren om deze nieuwe kwetsbaarheden te evalueren, te categoriseren op basis van ernst en impact, en ze toe te wijzen aan de juiste resource-eigenaren voor remediatie. Deze wekelijkse review voorkomt dat kwetsbaarheden zich opstapelen en zorgt voor tijdige actie. Het is belangrijk om deze reviews te documenteren, inclusief welke kwetsbaarheden zijn geëvalueerd, hoe ze zijn geprioriteerd, en aan wie ze zijn toegewezen.

Maandelijkse voortgangsmonitoring gaat verder dan het bekijken van nieuwe kwetsbaarheden en onderzoekt de algehele voortgang van het Vulnerability Assessment-proces. Deze monitoring omvat het vergelijken van de huidige kwetsbaarheidsstatus met de baseline, het analyseren van welke kwetsbaarheden zijn verholpen, welke nog in behandeling zijn, en welke nieuwe kwetsbaarheden zijn gedetecteerd. De monitoring moet ook inzicht bieden in de snelheid waarmee kwetsbaarheden worden verholpen, zodat organisaties kunnen identificeren waar het proces kan worden verbeterd. Maandelijkse rapporten moeten worden gedeeld met management en stakeholders om transparantie te waarborgen en om te demonstreren dat het Vulnerability Assessment-proces effectief is.

Trendanalyse over tijd helpt organisaties om patronen te identificeren en te begrijpen wat werkt en wat niet. Deze analyse onderzoekt of het aantal kwetsbaarheden consistent daalt, of er periodes zijn waarin het aantal kwetsbaarheden stijgt, en wat de onderliggende oorzaken zijn. Een stijgende trend kan bijvoorbeeld wijzen op nieuwe services die zijn ingeschakeld zonder beveiligingsconfiguratie, wijzigingen in compliance-vereisten, of nieuwe kwetsbaarheden die zijn toegevoegd aan de vulnerability databases. Door deze trends te begrijpen, kunnen organisaties proactief actie ondernemen voordat het aantal kwetsbaarheden significant stijgt. Trendanalyse moet ook inzicht bieden in welke typen kwetsbaarheden het meest voorkomen, zodat organisaties hun strategie kunnen aanpassen op basis van deze inzichten.

Resource owner accountability monitoring is essentieel om te waarborgen dat kwetsbaarheden daadwerkelijk worden verholpen. Deze monitoring moet inzicht bieden in welke resource-eigenaren hun kwetsbaarheden tijdig verhelpen, welke eigenaren achterlopen, en waar aanvullende ondersteuning nodig is. Tools zoals Azure DevOps of ServiceNow kunnen worden gebruikt om deze monitoring te automatiseren en om waarschuwingen te genereren wanneer kwetsbaarheden niet tijdig worden verholpen. Het is belangrijk om deze monitoring niet alleen te gebruiken voor accountability, maar ook om te identificeren waar resource-eigenaren ondersteuning nodig hebben, zodat het beveiligingsteam proactief kan helpen.

Compliance monitoring is belangrijk om te waarborgen dat Vulnerability Assessment voldoet aan de eisen van verschillende compliance-frameworks. Deze monitoring moet regelmatig controleren of scans worden uitgevoerd volgens de afgesproken frequentie, of kwetsbaarheden worden gedocumenteerd en gerapporteerd, en of remediatie-acties worden uitgevoerd binnen de afgesproken tijdframes. Compliance monitoring moet ook inzicht bieden in welke compliance-vereisten worden geadresseerd door Vulnerability Assessment, zodat organisaties kunnen demonstreren dat zij voldoen aan de eisen van frameworks zoals BIO, NIS2 en AVG.

Tot slot is het belangrijk om de effectiviteit van het Vulnerability Assessment-proces zelf te monitoren. Dit omvat het meten van de tijd die nodig is om kwetsbaarheden te detecteren, de snelheid waarmee kwetsbaarheden worden verholpen, en de tevredenheid van resource-eigenaren met het proces. Door deze metrics te monitoren kunnen organisaties het Vulnerability Assessment-proces continu verbeteren en ervoor zorgen dat het effectief en efficiënt blijft.

Remediatie

Gebruik PowerShell-script vulnerability-assessment-enabled.ps1 (functie Invoke-Remediation) – Ondersteunt remediatie door prioritering van kwetsbaarheden en identificatie van implementatiekansen.

Remediatie binnen de context van Vulnerability Assessment omvat niet alleen het verhelpen van individuele kwetsbaarheden, maar ook het implementeren van een gestructureerd proces voor continue verbetering. Het remediatieproces moet rekening houden met de ernst van kwetsbaarheden, de beschikbare resources, en de mogelijke verstoring van bedrijfsprocessen.

Het remediatieproces begint met het identificeren en prioriteren van kwetsbaarheden op basis van ernst en impact. Kritieke kwetsbaarheden moeten altijd voorrang krijgen, gevolgd door hoog-ernstige kwetsbaarheden, medium-ernstige kwetsbaarheden, en tot slot laag-ernstige kwetsbaarheden. Deze prioritering zorgt ervoor dat organisaties de grootste beveiligingswinst behalen met de beschikbare resources, en dat momentum wordt behouden door snelle resultaten te boeken. Voor Nederlandse overheidsorganisaties is het aanbevolen om kritieke kwetsbaarheden te verhelpen binnen 48 uur, hoog-ernstige kwetsbaarheden binnen 7 dagen, en medium-ernstige kwetsbaarheden binnen 30 dagen.

Voor veel kwetsbaarheden kan remediatie worden geautomatiseerd via patchmanagement-systemen. Automatische remediatie is vooral effectief voor kwetsbaarheden die betrekking hebben op software-updates, waarbij patches automatisch kunnen worden geïnstalleerd via Azure Update Management of System Center Configuration Manager. Het gebruik van geautomatiseerde remediatie zorgt voor consistentie en vermindert de kans op menselijke fouten. Organisaties moeten echter voorzichtig zijn bij het implementeren van automatische remediatie en moeten ervoor zorgen dat patches zorgvuldig zijn getest voordat ze worden toegepast op productieomgevingen.

Sommige kwetsbaarheden vereisen handmatige interventie of goedkeuring voordat ze kunnen worden verholpen. Dit geldt met name voor kwetsbaarheden die betrekking hebben op configuratiewijzigingen, omdat deze kunnen invloed hebben op de functionaliteit van applicaties of systemen. In dergelijke gevallen moet het beveiligingsteam samenwerken met resource-eigenaren om de juiste configuratie te bepalen en te implementeren. Het is belangrijk om deze handmatige remediaties te documenteren, inclusief de genomen beslissingen en de redenen daarvoor, zodat deze informatie beschikbaar is voor toekomstige referentie en voor audit doeleinden.

Na implementatie van remediatie is het belangrijk om te verifiëren dat de kwetsbaarheid daadwerkelijk is verholpen en dat de Vulnerability Assessment-status dienovereenkomstig is bijgewerkt. Dit kan enige tijd duren, omdat Vulnerability Assessment periodiek de beveiligingsstatus evalueert. Organisaties moeten een proces hebben om de status van remediaties te volgen en te verifiëren dat ze succesvol zijn voltooid. Wanneer remediaties niet succesvol zijn, moeten organisaties onderzoeken wat de oorzaak is en aanvullende acties ondernemen om het probleem op te lossen.

In sommige gevallen kan het nodig zijn om resources te exempten van specifieke kwetsbaarheden als ze niet van toepassing zijn of als er legitieme redenen zijn om de kwetsbaarheid niet te verhelpen. Deze exemptions moeten zorgvuldig worden gedocumenteerd, inclusief de reden voor de exemption, de goedkeuringsautoriteit, en de reviewdatum. Exemptions moeten regelmatig worden gereviewd om ervoor te zorgen dat ze nog steeds gerechtvaardigd zijn, en moeten worden verwijderd wanneer de onderliggende reden niet meer van toepassing is. Het is belangrijk om exemptions niet te gebruiken als een manier om kwetsbaarheden te vermijden, maar alleen wanneer er legitieme technische of bedrijfsmatige redenen zijn om een kwetsbaarheid niet te verhelpen.

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 Vulnerability Assessment Ingeschakeld in Azure Security Center .DESCRIPTION Controleert of Vulnerability Assessment is ingeschakeld op alle relevante Azure-abonnementen en resources (virtuele machines, containers, SQL-databases) en rapporteert de status van gedetecteerde kwetsbaarheden voor continue kwetsbaarheidsbeheer. .NOTES Filename: vulnerability-assessment-enabled.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/security-center/vulnerability-assessment-enabled.json CIS Control: 2.1.19 BIO Controls: 11.01, 12.06 ISO 27001: A.12.6.1 NIS2 Article: 21 AVG Articles: 25, 32 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Security [CmdletBinding()] param( [Parameter()][switch]$WhatIf, [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Revert ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' $PolicyName = "Vulnerability Assessment Ingeschakeld" function Connect-RequiredServices { try { if (-not (Get-AzContext)) { Connect-AzAccount -ErrorAction Stop | Out-Null } Write-Verbose "Verbonden met Azure" } catch { throw "Failed to connect to Azure: $_" } } function Test-Compliance { Write-Verbose "Testing compliance for: $PolicyName..." $result = [PSCustomObject]@{ ScriptName = "vulnerability-assessment-enabled" PolicyName = $PolicyName IsCompliant = $false TotalSubscriptions = 0 SubscriptionsWithVulnerabilityAssessment = 0 Details = @() Recommendations = @() VulnerabilitySummary = @{ HighSeverity = 0 MediumSeverity = 0 LowSeverity = 0 TotalVulnerabilities = 0 } DefenderPlansStatus = @{ Servers = 0 Containers = 0 SqlServers = 0 } } try { $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } $result.TotalSubscriptions = $subscriptions.Count $totalHigh = 0 $totalMedium = 0 $totalLow = 0 $serversCount = 0 $containersCount = 0 $sqlCount = 0 foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id -ErrorAction SilentlyContinue | Out-Null try { # Check Defender for Servers (includes VM vulnerability assessment) $serversPricing = Get-AzSecurityPricing -Name "VirtualMachines" -ErrorAction SilentlyContinue $serversEnabled = $serversPricing -and $serversPricing.PricingTier -eq 'Standard' # Check Defender for Containers $containersPricing = Get-AzSecurityPricing -Name "Containers" -ErrorAction SilentlyContinue $containersEnabled = $containersPricing -and $containersPricing.PricingTier -eq 'Standard' # Check Defender for SQL $sqlPricing = Get-AzSecurityPricing -Name "SqlServers" -ErrorAction SilentlyContinue $sqlEnabled = $sqlPricing -and $sqlPricing.PricingTier -eq 'Standard' $vulnerabilityAssessmentEnabled = $serversEnabled -or $containersEnabled -or $sqlEnabled if ($vulnerabilityAssessmentEnabled) { $result.SubscriptionsWithVulnerabilityAssessment++ $statusDetails = @() if ($serversEnabled) { $statusDetails += "Servers" $serversCount++ } if ($containersEnabled) { $statusDetails += "Containers" $containersCount++ } if ($sqlEnabled) { $statusDetails += "SQL" $sqlCount++ } $result.Details += "✓ Subscription '$($sub.Name)': Vulnerability Assessment enabled ($($statusDetails -join ', '))" # Try to get vulnerability recommendations try { $recommendations = Get-AzSecurityRecommendation -ErrorAction SilentlyContinue | Where-Object { $_.RecommendationType -like '*Vulnerability*' -or $_.RecommendationType -like '*CVE*' -or $_.RecommendationType -like '*Update*' -or $_.RecommendationType -like '*Patch*' } if ($recommendations) { $highCount = ($recommendations | Where-Object { $_.Severity -eq 'High' -or $_.Severity -eq 'Critical' }).Count $mediumCount = ($recommendations | Where-Object { $_.Severity -eq 'Medium' }).Count $lowCount = ($recommendations | Where-Object { $_.Severity -eq 'Low' }).Count $totalHigh += $highCount $totalMedium += $mediumCount $totalLow += $lowCount if ($highCount -gt 0 -or $mediumCount -gt 0 -or $lowCount -gt 0) { $result.Details += " └─ Kwetsbaarheden: Hoog=$highCount, Medium=$mediumCount, Laag=$lowCount" if ($highCount -gt 0) { $result.Recommendations += "Subscription '$($sub.Name)': $highCount hoog-ernstige kwetsbaarheden - Verhelpen binnen 48 uur" } } } } catch { Write-Verbose "Kon kwetsbaarheidsaanbevelingen niet ophalen voor '$($sub.Name)': $_" } } else { $result.Details += "✗ Subscription '$($sub.Name)': Vulnerability Assessment NIET ingeschakeld" $result.Recommendations += "Schakel Defender voor Servers, Containers of SQL in op '$($sub.Name)'" } } catch { $result.Details += "✗ Subscription '$($sub.Name)': Fout bij controleren - $($_.Exception.Message)" } } $result.VulnerabilitySummary.HighSeverity = $totalHigh $result.VulnerabilitySummary.MediumSeverity = $totalMedium $result.VulnerabilitySummary.LowSeverity = $totalLow $result.VulnerabilitySummary.TotalVulnerabilities = $totalHigh + $totalMedium + $totalLow $result.DefenderPlansStatus.Servers = $serversCount $result.DefenderPlansStatus.Containers = $containersCount $result.DefenderPlansStatus.SqlServers = $sqlCount # Determine compliance if ($result.SubscriptionsWithVulnerabilityAssessment -eq $result.TotalSubscriptions -and $result.TotalSubscriptions -gt 0) { $result.IsCompliant = $true } elseif ($result.SubscriptionsWithVulnerabilityAssessment -gt 0) { $result.IsCompliant = $false $result.Recommendations += "Schakel Vulnerability Assessment in op alle abonnementen voor volledige dekking" } else { $result.IsCompliant = $false $result.Recommendations += "Vulnerability Assessment is niet ingeschakeld op enig abonnement - Kritieke beveiligingsrisico" } # Add vulnerability-based recommendations if ($totalHigh -gt 0) { $result.Recommendations += "Totaal $totalHigh hoog-ernstige kwetsbaarheden gedetecteerd - Onmiddellijke actie vereist" } if ($totalMedium -gt 10) { $result.Recommendations += "Totaal $totalMedium medium-ernstige kwetsbaarheden - Plan remediatie binnen 30 dagen" } } catch { $result.Details += "ERROR: $($_.Exception.Message)" $result.IsCompliant = $false } return $result } function Invoke-Monitoring { $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Totaal abonnementen: $($result.TotalSubscriptions)" -ForegroundColor White Write-Host "Met Vulnerability Assessment: $($result.SubscriptionsWithVulnerabilityAssessment)" -ForegroundColor $(if ($result.SubscriptionsWithVulnerabilityAssessment -eq $result.TotalSubscriptions) { 'Green' } else { 'Yellow' }) Write-Host "`nDefender-plannen status:" -ForegroundColor Yellow Write-Host " Defender voor Servers: $($result.DefenderPlansStatus.Servers) abonnement(en)" -ForegroundColor $(if ($result.DefenderPlansStatus.Servers -gt 0) { 'Green' } else { 'Red' }) Write-Host " Defender voor Containers: $($result.DefenderPlansStatus.Containers) abonnement(en)" -ForegroundColor $(if ($result.DefenderPlansStatus.Containers -gt 0) { 'Green' } else { 'Red' }) Write-Host " Defender voor SQL: $($result.DefenderPlansStatus.SqlServers) abonnement(en)" -ForegroundColor $(if ($result.DefenderPlansStatus.SqlServers -gt 0) { 'Green' } else { 'Red' }) Write-Host "`nKwetsbaarheidsstatus:" -ForegroundColor Yellow Write-Host " Hoog-ernstige kwetsbaarheden: $($result.VulnerabilitySummary.HighSeverity)" -ForegroundColor $(if ($result.VulnerabilitySummary.HighSeverity -eq 0) { 'Green' } else { 'Red' }) Write-Host " Medium-ernstige kwetsbaarheden: $($result.VulnerabilitySummary.MediumSeverity)" -ForegroundColor $(if ($result.VulnerabilitySummary.MediumSeverity -lt 10) { 'Green' } elseif ($result.VulnerabilitySummary.MediumSeverity -lt 50) { 'Yellow' } else { 'Red' }) Write-Host " Laag-ernstige kwetsbaarheden: $($result.VulnerabilitySummary.LowSeverity)" -ForegroundColor Gray Write-Host " Totaal kwetsbaarheden: $($result.VulnerabilitySummary.TotalVulnerabilities)" -ForegroundColor White Write-Host "`nAbonnement Details:" -ForegroundColor Yellow foreach ($detail in $result.Details) { if ($detail -like "✓*") { Write-Host " $detail" -ForegroundColor Green } elseif ($detail -like "✗*") { Write-Host " $detail" -ForegroundColor Red } elseif ($detail -like " └─*") { Write-Host " $detail" -ForegroundColor Cyan } else { Write-Host " $detail" -ForegroundColor Gray } } if ($result.Recommendations.Count -gt 0) { Write-Host "`nAanbevelingen:" -ForegroundColor Yellow foreach ($rec in $result.Recommendations) { Write-Host " • $rec" -ForegroundColor Cyan } } Write-Host "`nCompliance Status: " -NoNewline -ForegroundColor White if ($result.IsCompliant) { Write-Host "[OK] COMPLIANT" -ForegroundColor Green Write-Host "`nVulnerability Assessment is ingeschakeld op alle abonnementen." -ForegroundColor Green if ($result.VulnerabilitySummary.HighSeverity -eq 0) { Write-Host "Geen hoog-ernstige kwetsbaarheden gedetecteerd - Uitstekend!" -ForegroundColor Green } else { Write-Host "Waarschuwing: $($result.VulnerabilitySummary.HighSeverity) hoog-ernstige kwetsbaarheden vereisen onmiddellijke aandacht." -ForegroundColor Yellow } } else { Write-Host "[FAIL] NON-COMPLIANT" -ForegroundColor Red Write-Host "`nVulnerability Assessment is niet volledig ingeschakeld." -ForegroundColor Red Write-Host "Schakel Defender voor Servers, Containers en/of SQL in op alle abonnementen." -ForegroundColor Yellow } Write-Host "`nBest Practices:" -ForegroundColor Cyan Write-Host " • Review kwetsbaarheden wekelijks voor beste resultaten" -ForegroundColor Gray Write-Host " • Verhelp hoog-ernstige kwetsbaarheden binnen 48 uur" -ForegroundColor Gray Write-Host " • Plan medium-ernstige kwetsbaarheden binnen 30 dagen" -ForegroundColor Gray Write-Host " • Stel alerts in voor nieuwe kritieke kwetsbaarheden" -ForegroundColor Gray Write-Host " • Genereer maandelijkse trend rapportages" -ForegroundColor Gray Write-Host " • Integreer vulnerability management in governance processen" -ForegroundColor Gray return $result } function Invoke-Remediation { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Vulnerability Assessment - Remediatie" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $result = Test-Compliance Write-Host "`nHuidige Status:" -ForegroundColor Yellow Write-Host " Abonnementen met Vulnerability Assessment: $($result.SubscriptionsWithVulnerabilityAssessment)/$($result.TotalSubscriptions)" -ForegroundColor $(if ($result.SubscriptionsWithVulnerabilityAssessment -eq $result.TotalSubscriptions) { 'Green' } else { 'Yellow' }) Write-Host " Hoog-ernstige kwetsbaarheden: $($result.VulnerabilitySummary.HighSeverity)" -ForegroundColor $(if ($result.VulnerabilitySummary.HighSeverity -eq 0) { 'Green' } else { 'Red' }) if ($result.SubscriptionsWithVulnerabilityAssessment -lt $result.TotalSubscriptions) { Write-Host "`nAanbevelingen voor implementatie:" -ForegroundColor Cyan Write-Host " 1. Schakel Microsoft Defender voor Servers in voor VM vulnerability assessment" -ForegroundColor Gray Write-Host " 2. Schakel Microsoft Defender voor Containers in voor container image scanning" -ForegroundColor Gray Write-Host " 3. Schakel Microsoft Defender voor SQL in voor database vulnerability assessment" -ForegroundColor Gray Write-Host " 4. Configureer automatische scanning (wekelijks voor VM's en SQL)" -ForegroundColor Gray Write-Host " 5. Stel alerts in voor nieuwe kritieke kwetsbaarheden" -ForegroundColor Gray Write-Host " 6. Zet een dashboard op voor real-time kwetsbaarheidszichtbaarheid" -ForegroundColor Gray Write-Host " 7. Integreer vulnerability rapportages in maandelijkse CISO reviews" -ForegroundColor Gray Write-Host "`nPowerShell commando's voor activering:" -ForegroundColor Cyan Write-Host " # Defender voor Servers" -ForegroundColor Gray Write-Host " Set-AzSecurityPricing -Name 'VirtualMachines' -PricingTier 'Standard'" -ForegroundColor White Write-Host "`n # Defender voor Containers" -ForegroundColor Gray Write-Host " Set-AzSecurityPricing -Name 'Containers' -PricingTier 'Standard'" -ForegroundColor White Write-Host "`n # Defender voor SQL" -ForegroundColor Gray Write-Host " Set-AzSecurityPricing -Name 'SqlServers' -PricingTier 'Standard'" -ForegroundColor White } else { Write-Host "`n[OK] Vulnerability Assessment is ingeschakeld op alle abonnementen." -ForegroundColor Green if ($result.VulnerabilitySummary.HighSeverity -gt 0) { Write-Host "`nKritieke actie vereist:" -ForegroundColor Red Write-Host " • $($result.VulnerabilitySummary.HighSeverity) hoog-ernstige kwetsbaarheden vereisen onmiddellijke remediatie" -ForegroundColor Yellow Write-Host " • Review bevindingen in Defender voor Cloud → Recommendations" -ForegroundColor Gray Write-Host " • Prioriteer kwetsbaarheden met CVSS 9.0+ voor eerste remediatie" -ForegroundColor Gray Write-Host " • Gebruik Azure Update Management voor automatische patch deployment" -ForegroundColor Gray } else { Write-Host "Geen hoog-ernstige kwetsbaarheden gedetecteerd - Uitstekend!" -ForegroundColor Green } } Write-Host "`nVoor continue monitoring:" -ForegroundColor Cyan Write-Host " • Gebruik dit script in Azure Automation runbooks (wekelijks)" -ForegroundColor Gray Write-Host " • Sla kwetsbaarheidsdata op in Azure Log Analytics voor trendanalyse" -ForegroundColor Gray Write-Host " • Configureer Azure Monitor alerts bij nieuwe kritieke kwetsbaarheden" -ForegroundColor Gray Write-Host " • Genereer maandelijkse rapportages voor bestuurders" -ForegroundColor Gray Write-Host " • Integreer met patchmanagement-systemen voor geautomatiseerde remediatie" -ForegroundColor Gray return $result } function Invoke-Revert { Write-Host "`n⚠️ Vulnerability Assessment uitschakelen wordt NIET aanbevolen" -ForegroundColor Red Write-Host "Dit creëert aanzienlijke beveiligingsrisico's en compliance-problemen." -ForegroundColor Red Write-Host "`nAls u Vulnerability Assessment moet uitschakelen:" -ForegroundColor Yellow Write-Host " • Gebruik: Set-AzSecurityPricing -Name 'VirtualMachines' -PricingTier 'Free'" -ForegroundColor Gray Write-Host " • Let op: Dit schakelt alle Defender voor Servers functionaliteit uit" -ForegroundColor Yellow Write-Host " • Overweeg alternatieve vulnerability scanning oplossingen" -ForegroundColor Gray Write-Host "`nHet wordt sterk aanbevolen om Vulnerability Assessment actief te houden.`n" -ForegroundColor Red } try { Connect-RequiredServices if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { if ($WhatIf) { Write-Host "`n=== WHATIF MODE ===" -ForegroundColor Yellow $result = Test-Compliance Write-Host "Zou Vulnerability Assessment status rapporteren voor $($result.TotalSubscriptions) abonnement(en)" -ForegroundColor Yellow Write-Host "Huidige status: $($result.SubscriptionsWithVulnerabilityAssessment) abonnement(en) met Vulnerability Assessment" -ForegroundColor Yellow if ($result.SubscriptionsWithVulnerabilityAssessment -lt $result.TotalSubscriptions) { Write-Host "`nAbonnementen zonder Vulnerability Assessment:" -ForegroundColor Yellow $result.Details | Where-Object { $_ -like "✗*" } | ForEach-Object { Write-Host " $_" -ForegroundColor Gray } } if ($result.VulnerabilitySummary.TotalVulnerabilities -gt 0) { Write-Host "`nGedetecteerde kwetsbaarheden:" -ForegroundColor Yellow Write-Host " Hoog: $($result.VulnerabilitySummary.HighSeverity)" -ForegroundColor $(if ($result.VulnerabilitySummary.HighSeverity -eq 0) { 'Green' } else { 'Red' }) Write-Host " Medium: $($result.VulnerabilitySummary.MediumSeverity)" -ForegroundColor Yellow Write-Host " Laag: $($result.VulnerabilitySummary.LowSeverity)" -ForegroundColor Gray } } else { Invoke-Remediation } } elseif ($Revert) { Invoke-Revert } else { $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "`nStatus: " -NoNewline -ForegroundColor White if ($result.IsCompliant) { Write-Host "[OK] COMPLIANT" -ForegroundColor Green } else { Write-Host "[FAIL] NON-COMPLIANT" -ForegroundColor Red } Write-Host "Abonnementen met Vulnerability Assessment: $($result.SubscriptionsWithVulnerabilityAssessment)/$($result.TotalSubscriptions)" -ForegroundColor White if ($result.VulnerabilitySummary.TotalVulnerabilities -gt 0) { Write-Host "`nKwetsbaarheden:" -ForegroundColor Yellow Write-Host " Hoog: $($result.VulnerabilitySummary.HighSeverity)" -ForegroundColor $(if ($result.VulnerabilitySummary.HighSeverity -eq 0) { 'Green' } else { 'Red' }) Write-Host " Medium: $($result.VulnerabilitySummary.MediumSeverity)" -ForegroundColor $(if ($result.VulnerabilitySummary.MediumSeverity -lt 10) { 'Green' } else { 'Yellow' }) Write-Host " Laag: $($result.VulnerabilitySummary.LowSeverity)" -ForegroundColor Gray } else { Write-Host "Geen kwetsbaarheden gedetecteerd" -ForegroundColor Green } Write-Host "`nGebruik -Monitoring voor uitgebreide rapportage" -ForegroundColor Gray Write-Host "Gebruik -Remediation voor implementatie aanbevelingen`n" -ForegroundColor Gray } } catch { Write-Error $_ exit 1 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder ingeschakelde Vulnerability Assessment blijven organisaties blind voor beveiligingskwetsbaarheden in hun Azure-omgeving. Ongepatchte systemen, verouderde software en verkeerde configuraties blijven onopgemerkt totdat ze worden misbruikt in een aanval. Dit leidt tot verhoogde risico's op datalekken, ransomware-incidenten en compliance-overtredingen. Het risico is kritiek - zowel operationeel als compliance-gerelateerd.

Management Samenvatting

Vulnerability Assessment biedt continue detectie en remediatie van beveiligingskwetsbaarheden in Azure-omgevingen. Het proces omvat het inschakelen van Defender-plannen, configuratie van scaninstellingen, integratie met patchmanagement, en continue monitoring. Doel: 100% dekking van productieomgevingen. Implementatie: 40 uur (16 technisch, 24 organisatorisch). Doorlopend: 16 uur per maand (0,4 FTE) voor reviews, prioritering en monitoring. Essentieel voor proactieve beveiligingscultuur en compliance-naleving.