Patch Management Geconfigureerd Voor Azure Virtuele Machines

💼 Management Samenvatting

Patch management configuratie in Azure vormt de basis voor een gestructureerd en gecontroleerd proces van het detecteren, beoordelen, plannen en installeren van beveiligingsupdates en softwarepatches voor virtuele machines. Voor Nederlandse overheidsorganisaties is een goed geconfigureerd patchmanagementproces essentieel om te voldoen aan compliance-eisen zoals BIO, NIS2 en ISO 27001, terwijl tegelijkertijd de beveiligingspostuur van de cloudinfrastructuur wordt verbeterd en bedrijfscontinuïteit wordt gewaarborgd.

Aanbeveling
IMPLEMENTEER EEN GESTRUCTUREERD PATCHMANAGEMENTPROCES MET AZURE UPDATE MANAGER
Risico zonder
Critical
Risk Score
9/10
Implementatie
28u (tech: 16u)
Van toepassing op:
Azure Virtual Machines
Azure Arc-enabled Servers
Hybride Machines

Zonder een gestructureerd patchmanagementproces ontstaan er onvermijdelijk beveiligingsrisico's die kunnen leiden tot datalekken, systeemcompromittering en niet-naleving van wettelijke vereisten. Ongepatchte systemen vormen een van de meest voorkomende aanvalsvectoren in moderne cloudomgevingen, waarbij cybercriminelen actief zoeken naar bekende kwetsbaarheden die niet zijn verholpen. Onderzoek toont aan dat de gemiddelde tijd tussen het uitbrengen van een kritieke beveiligingspatch en de eerste exploitatiepogingen slechts 24 tot 48 uur bedraagt, wat betekent dat organisaties zonder geautomatiseerd patchmanagementproces een aanzienlijk verhoogd risico lopen op succesvolle cyberaanvallen. Bovendien vereisen compliance-frameworks zoals BIO controle 12.06, ISO 27001 controle A.8.8 en NIS2 artikel 21 dat organisaties aantoonbaar kunnen bewijzen dat zij een gestructureerd proces hebben voor het beheren van beveiligingsupdates, inclusief documentatie, testprocedures en regelmatige implementatie. Zonder een geconfigureerd patchmanagementsysteem kunnen organisaties tijdens audits niet aantonen dat zij voldoen aan deze vereisten, wat kan leiden tot aanwijzingen, dwangsommen of zelfs intrekking van vergunningen.

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

Implementatie

Dit artikel beschrijft hoe je Azure Update Manager of Update Management configureert voor gecentraliseerd patchbeheer van Azure virtuele machines, Azure Arc-enabled servers en hybride machines. We gaan in op het opzetten van update assessments, het configureren van maintenance windows, het definiëren van patchschedules, het implementeren van test- en goedkeuringsprocessen, en het inrichten van compliance-rapportage. Daarnaast behandelen we hoe je patchmanagement integreert met bestaande change management processen, hoe je uitzonderingen beheert voor systemen die om legitieme redenen niet kunnen worden bijgewerkt, en hoe je patchmanagement koppelt aan risicomanagement en incident response workflows. Het resultaat is een volwassen patchmanagementproces dat niet alleen technisch effectief is, maar ook organisatorisch geborgd en auditbaar voldoet aan Nederlandse compliance-vereisten.

Architectuur en Ontwerp van Patch Management in Azure

Een effectieve patchmanagementarchitectuur in Azure begint bij een heldere visie op hoe updates worden gedetecteerd, beoordeeld, getest en geïmplementeerd binnen de organisatie. Azure Update Manager, de opvolger van Update Management, biedt een gecentraliseerde service voor het beheren van updates voor Azure virtuele machines, Azure Arc-enabled servers en hybride machines. De service integreert naadloos met Azure Monitor, Log Analytics en Azure Automation, waardoor geavanceerde orchestratie, scheduling en rapportage mogelijk worden. Voor organisaties die nog gebruik maken van de klassieke Update Management-oplossing is migratie naar Azure Update Manager aanbevolen, aangezien deze service meer functionaliteit biedt en beter is geïntegreerd met moderne Azure-services. De architectuur van patchmanagement moet rekening houden met verschillende omgevingstypen binnen de organisatie. Productieomgevingen vereisen doorgaans een conservatievere aanpak met uitgebreide testprocedures en geplande maintenance windows, terwijl test- en ontwikkelomgevingen sneller kunnen worden bijgewerkt om nieuwe patches vroegtijdig te valideren. De architectuur moet daarom ondersteuning bieden voor verschillende patchstrategieën per omgevingstype, waarbij productiesystemen mogelijk maandelijks worden bijgewerkt tijdens specifieke maintenance windows, terwijl testomgevingen wekelijks of zelfs dagelijks kunnen worden bijgewerkt voor snellere validatie van nieuwe patches. Een belangrijk architectuurprincipe is de scheiding tussen detectie, beoordeling en implementatie. Azure Update Manager voert regelmatig assessments uit die beschikbare updates detecteren en categoriseren op basis van hun type (beveiligingsupdates, kritieke updates, feature updates) en impact. Deze assessments genereren compliance-rapporten die inzicht bieden in welke machines welke updates nodig hebben, zonder dat updates direct worden geïnstalleerd. Deze scheiding maakt het mogelijk om updates eerst te beoordelen, te testen in niet-productieomgevingen, en pas daarna te implementeren in productieomgevingen volgens een goedgekeurd change management proces. De architectuur moet ook rekening houden met netwerkconnectiviteit en firewallconfiguraties. Virtuele machines moeten uitgaande HTTPS-verbindingen kunnen maken naar Microsoft Update-eindpunten en Azure Update Manager-services. Voor omgevingen met strikte netwerkbeperkingen kunnen private endpoints of Azure Arc worden gebruikt om patchmanagement te faciliteren zonder dat directe internetconnectiviteit vereist is. Linux-systemen vereisen bovendien dat de Log Analytics-agent is geïnstalleerd en correct is geconfigureerd, terwijl Windows-systemen gebruik kunnen maken van de ingebouwde Windows Update-service in combinatie met Azure Update Manager. Een volwassen architectuur integreert patchmanagement met bestaande ITIL- en change managementprocessen. Updates worden niet automatisch geïnstalleerd zonder goedkeuring, maar worden eerst voorgesteld via een change request-proces waarbij beveiligingsteams, applicatie-eigenaren en operationele teams kunnen beoordelen of updates geschikt zijn voor implementatie. Azure Update Manager ondersteunt deze integratie door update assessments te genereren die kunnen worden geëxporteerd naar ITSM-systemen, en door geplande update-implementaties te koppelen aan change records. Dit zorgt ervoor dat patchmanagement geen losstaand proces is, maar integraal onderdeel van de bredere IT-service management praktijk.

Implementatie van Patch Management Configuratie

Gebruik PowerShell-script patch-management-configured.ps1 (functie Invoke-Implementation) – Configureert Azure Update Manager voor patchmanagement, inclusief het inschakelen van assessments, het configureren van maintenance windows en het opzetten van patchschedules voor verschillende omgevingstypen..

De implementatie van patchmanagement in Azure begint met het inschakelen en configureren van Azure Update Manager voor de relevante virtuele machines. De eerste stap is het verifiëren dat virtuele machines beschikken over de benodigde connectiviteit en agents. Voor Windows-systemen moet de Windows Update-service actief zijn en moeten virtuele machines kunnen communiceren met Microsoft Update-eindpunten. Voor Linux-systemen moet de Log Analytics-agent zijn geïnstalleerd en moet de virtuele machine kunnen communiceren met Azure Monitor Log Analytics-workspaces. Azure Update Manager kan worden geactiveerd via het Azure-portaal door naar de Update Manager-service te navigeren en virtuele machines te selecteren die moeten worden beheerd, of programmatisch via Azure PowerShell of Azure CLI voor schaalbare implementaties. STAP 1 omvat het configureren van update assessments die regelmatig worden uitgevoerd om beschikbare updates te detecteren. Deze assessments kunnen worden geconfigureerd om dagelijks, wekelijks of maandelijks te worden uitgevoerd, afhankelijk van de behoeften van de organisatie. Voor productieomgevingen is een wekelijkse assessment vaak voldoende, terwijl voor kritieke systemen dagelijkse assessments kunnen worden overwogen. De assessments genereren compliance-rapporten die inzicht bieden in welke machines welke updates nodig hebben, waarbij updates worden gecategoriseerd op basis van hun type en kritiekheid. Deze rapporten vormen de basis voor besluitvorming over welke updates moeten worden geïnstalleerd en wanneer. STAP 2 richt zich op het definiëren van maintenance windows die bepalen wanneer updates mogen worden geïnstalleerd zonder bedrijfscontinuïteit te verstoren. Maintenance windows kunnen worden geconfigureerd per virtuele machine, resourcegroep of subscription, waarbij verschillende omgevingstypen verschillende windows kunnen hebben. Voor productiesystemen worden maintenance windows doorgaans gepland buiten kantooruren of tijdens specifieke onderhoudsperiodes, terwijl voor testomgevingen flexibelere windows kunnen worden gebruikt. Azure Update Manager respecteert deze windows en zal updates alleen installeren tijdens de geconfigureerde periodes, tenzij expliciet wordt aangegeven dat updates onmiddellijk moeten worden geïnstalleerd voor kritieke beveiligingspatches. STAP 3 omvat het configureren van patchschedules die definiëren welke updates worden geïnstalleerd en in welke volgorde. Organisaties kunnen verschillende schedules definiëren voor verschillende updatecategorieën: kritieke beveiligingsupdates kunnen bijvoorbeeld onmiddellijk worden geïnstalleerd zodra ze beschikbaar zijn, terwijl optionele updates of feature updates kunnen worden uitgesteld tot een geplande onderhoudsperiode. Schedules kunnen ook worden geconfigureerd om updates eerst te installeren in testomgevingen, vervolgens in acceptatieomgevingen, en pas daarna in productieomgevingen, wat een gefaseerde rollout mogelijk maakt die het risico op problemen minimaliseert. STAP 4 valideert dat de patchmanagementconfiguratie correct werkt door testassessments uit te voeren en te verifiëren dat updates correct worden gedetecteerd. Beheerders moeten controleren of compliance-rapporten accuraat zijn, of maintenance windows correct worden gerespecteerd, en of patchschedules naar verwachting functioneren. Het is belangrijk om deze validatie regelmatig uit te voeren, vooral na wijzigingen in de configuratie of na het toevoegen van nieuwe virtuele machines aan het beheer. Daarnaast moeten beheerders verifiëren dat virtuele machines correct zijn geregistreerd in Azure Update Manager en dat er geen connectiviteitsproblemen zijn die assessments of update-implementaties kunnen blokkeren.

Monitoring en Compliance-rapportage van Patch Management

Gebruik PowerShell-script patch-management-configured.ps1 (functie Invoke-Monitoring) – Genereert compliance-rapporten over patchstatus, ontbrekende updates, en update-implementatiegeschiedenis voor alle beheerde virtuele machines, en integreert deze met Azure Monitor voor proactieve alerting..

Monitoring van patchmanagement vormt een kritiek onderdeel van effectief updatebeheer, waarbij organisaties continu inzicht moeten hebben in de compliance-status van hun virtuele machines en de effectiviteit van hun patchmanagementprocessen. Azure Update Manager biedt uitgebreide monitoringmogelijkheden die real-time inzicht bieden in welke machines welke updates nodig hebben, welke updates recent zijn geïnstalleerd, en welke machines mogelijk niet voldoen aan patchmanagementvereisten. Deze monitoringgegevens kunnen worden geïntegreerd met Azure Monitor en Log Analytics voor geavanceerde query's, dashboards en alerting. Compliance-rapportage moet regelmatig worden gegenereerd en beoordeeld door beveiligingsteams en management. Deze rapporten moeten inzicht bieden in de algehele compliance-status van de omgeving, trends in update-installaties, en eventuele gebieden waar verbetering nodig is. Organisaties moeten kunnen aantonen dat zij een proces hebben voor het behandelen van uitzonderingen, waarbij virtuele machines die om legitieme redenen niet kunnen worden bijgewerkt worden gedocumenteerd en gecompenseerd met aanvullende beveiligingsmaatregelen. Azure Update Manager genereert automatisch compliance-rapporten die kunnen worden geëxporteerd naar verschillende formaten voor gebruik in audits en compliance-beoordelingen. Een belangrijk aspect van monitoring is het detecteren van virtuele machines die niet correct zijn geconfigureerd voor patchmanagement. Dit kunnen machines zijn die niet zijn geregistreerd in Azure Update Manager, machines met connectiviteitsproblemen die assessments blokkeren, of machines waarop updates niet succesvol zijn geïnstalleerd vanwege configuratieproblemen. Monitoring moet proactief deze problemen identificeren en waarschuwingen genereren zodat beheerders tijdig kunnen ingrijpen. Azure Monitor kan worden geconfigureerd met aangepaste waarschuwingen die worden geactiveerd wanneer virtuele machines gedurende een bepaalde periode niet zijn bijgewerkt, of wanneer kritieke beveiligingsupdates beschikbaar zijn maar nog niet zijn geïnstalleerd. Monitoring moet ook inzicht bieden in de effectiviteit van patchmanagementprocessen. Dit omvat metingen zoals de gemiddelde tijd tussen het uitbrengen van een patch en de installatie ervan, het percentage virtuele machines dat binnen een bepaalde periode wordt bijgewerkt, en het aantal updates dat succesvol wordt geïnstalleerd versus het aantal updates dat faalt. Deze metingen helpen organisaties identificeren waar verbetering mogelijk is in hun patchmanagementprocessen, bijvoorbeeld door maintenance windows te optimaliseren of door testprocedures te verbeteren om snellere goedkeuring van updates mogelijk te maken. Voor Nederlandse overheidsorganisaties is het essentieel dat monitoringgegevens worden gebruikt voor compliance-rapportage richting toezichthouders en auditors. Azure Update Manager biedt uitgebreide logging en audit trails die vastleggen wanneer assessments zijn uitgevoerd, wanneer updates zijn geïnstalleerd, en welke wijzigingen zijn gemaakt aan patchmanagementconfiguraties. Deze logs kunnen worden geïntegreerd met Azure Monitor voor langetermijnopslag en analyse, waarbij organisaties kunnen voldoen aan vereisten voor logretentie die vaak zeven jaar of langer bedragen voor overheidsorganisaties. Compliance-rapporten moeten regelmatig worden gegenereerd en beoordeeld, waarbij trends worden geïdentificeerd en acties worden ondernomen om de algehele compliance-status te verbeteren.

Remediatie en Verbetering van Patch Management

Gebruik PowerShell-script patch-management-configured.ps1 (functie Invoke-Remediation) – Identificeert virtuele machines die niet correct zijn geconfigureerd voor patchmanagement, corrigeert configuratieproblemen, en implementeert ontbrekende updates volgens geconfigureerde schedules en maintenance windows..

Remediatie van patchmanagementproblemen omvat zowel het corrigeren van configuratieproblemen die patchmanagement blokkeren als het implementeren van ontbrekende updates voor virtuele machines die niet voldoen aan compliance-vereisten. Het remediatieproces moet gestructureerd worden uitgevoerd volgens goedgekeurde change managementprocessen, waarbij updates eerst worden getest in niet-productieomgevingen voordat ze worden geïmplementeerd in productieomgevingen. Een eerste stap in remediatie is het identificeren van virtuele machines die niet correct zijn geconfigureerd voor patchmanagement. Dit kunnen machines zijn die niet zijn geregistreerd in Azure Update Manager, machines met ontbrekende of verkeerd geconfigureerde agents, of machines met netwerkconnectiviteitsproblemen die assessments of update-implementaties blokkeren. Voor deze machines moeten configuratieproblemen worden opgelost, bijvoorbeeld door agents te installeren of bij te werken, door netwerkconnectiviteit te herstellen, of door virtuele machines handmatig te registreren in Azure Update Manager. Voor virtuele machines met ontbrekende updates moet een gestructureerd proces worden gevolgd voor het implementeren van patches. Kritieke beveiligingsupdates die gerelateerd zijn aan actieve bedreigingen of zero-day kwetsbaarheden kunnen onmiddellijk worden geïnstalleerd, vooral wanneer deze updates zijn getest in niet-productieomgevingen en zijn goedgekeurd door beveiligingsteams. Voor minder urgente updates is geplande installatie tijdens maintenance windows vaak de voorkeursmethode, waarbij updates worden geïnstalleerd tijdens perioden met lage bedrijfsactiviteit om de impact op bedrijfsprocessen te minimaliseren. Remediatie moet ook rekening houden met updates die niet succesvol zijn geïnstalleerd. Voor deze updates moet een probleemoplossingsproces worden gevolgd dat identificeert waarom updates niet zijn geïnstalleerd, of er configuratieproblemen zijn die moeten worden opgelost, en welke stappen moeten worden ondernomen om updates alsnog succesvol te installeren. In sommige gevallen kan het nodig zijn om handmatige interventie uit te voeren of om aanvullende configuratie aan te passen voordat updates kunnen worden geïnstalleerd. Voor virtuele machines die om legitieme redenen niet kunnen worden bijgewerkt, zoals systemen met oude applicaties die niet compatibel zijn met nieuwe updates, moeten alternatieve beveiligingsmaatregelen worden geïmplementeerd. Dit kunnen maatregelen zijn zoals netwerksegmentatie om de blootstelling aan bedreigingen te verminderen, aanvullende monitoring om verdachte activiteiten te detecteren, of compenserende controles die het risico van ongepatchte systemen verminderen. Deze uitzonderingen moeten formeel worden gedocumenteerd met een duidelijke motivatie, eigenaar en einddatum, zodat auditors kunnen verifiëren dat organisaties bewust omgaan met risico's van ongepatchte systemen. Effectieve remediatie vereist ook continue monitoring en follow-up. Zelfs na succesvolle installatie van updates moeten organisaties blijven monitoren of systemen correct functioneren en of er geen onverwachte problemen zijn opgetreden. Dit monitoringproces helpt identificeren of updates mogelijk rollback vereisen, of aanvullende configuratie nodig is, en of er lessen kunnen worden geleerd voor toekomstige update-implementaties. Door dit continue verbeteringsproces kunnen organisaties hun patchmanagementeffectiviteit geleidelijk verbeteren en de risico's van toekomstige update-implementaties verminderen.

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 Patch Management Configured .DESCRIPTION Controleert en configureert Azure Update Manager voor gestructureerd patchbeheer van Azure virtuele machines, inclusief assessments, maintenance windows en patchschedules. .NOTES Filename: patch-management-configured.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-11-27 Last Modified: 2025-11-27 Version: 1.0 Related JSON: content/azure/update-management/patch-management-configured.json .LINK https://github.com/[org]/m365-tenant-best-practise .EXAMPLE .\patch-management-configured.ps1 Voert een compliance check uit op patchmanagement configuratie .EXAMPLE .\patch-management-configured.ps1 -Monitoring Genereert een monitoring rapport van patchmanagement status .EXAMPLE .\patch-management-configured.ps1 -Remediation -WhatIf Toont wat er zou worden geconfigureerd zonder wijzigingen door te voeren #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Compute, Az.OperationalInsights, Az.Automation # ============================================================================ # PARAMETERS # ============================================================================ [CmdletBinding()] param( [Parameter()] [switch]$WhatIf, [Parameter()] [switch]$Monitoring, [Parameter()] [switch]$Remediation ) # ============================================================================ # VARIABLES # ============================================================================ $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' $PolicyName = "Patch Management Configured" $PolicyDescription = "Controleert en configureert Azure Update Manager voor gestructureerd patchbeheer" # ============================================================================ # FUNCTIONS # ============================================================================ function Connect-RequiredServices { <# .SYNOPSIS Verbindt met benodigde Azure services #> [CmdletBinding()] param() Write-Verbose "Verbinding maken met Azure services..." try { $context = Get-AzContext -ErrorAction SilentlyContinue if (-not $context) { Write-Host "Geen actieve Azure sessie gevonden. Verbinden..." -ForegroundColor Yellow Connect-AzAccount | Out-Null Write-Verbose "Succesvol verbonden met Azure" } else { Write-Verbose "Gebruik van bestaande Azure sessie: $($context.Account.Id)" } } catch { Write-Error "Kon niet verbinden met Azure: $_" throw } } function Test-Compliance { <# .SYNOPSIS Test de huidige compliance status van patchmanagement configuratie .OUTPUTS PSCustomObject met compliance resultaten #> [CmdletBinding()] param() Write-Verbose "Compliance status controleren..." try { $subscriptions = Get-AzSubscription -ErrorAction SilentlyContinue | Where-Object { $_.State -eq 'Enabled' } $results = @{ IsCompliant = $true TotalSubscriptions = 0 SubscriptionsWithVMs = 0 TotalVMs = 0 VMsWithUpdateManager = 0 VMsWithoutUpdateManager = 0 Details = @() Issues = @() } if ($null -eq $subscriptions -or $subscriptions.Count -eq 0) { $results.IsCompliant = $false $results.Issues += "Geen actieve Azure subscriptions gevonden" return [PSCustomObject]$results } $results.TotalSubscriptions = $subscriptions.Count foreach ($sub in $subscriptions) { Write-Verbose "Controleren subscription: $($sub.Name)" try { Set-AzContext -SubscriptionId $sub.Id -ErrorAction Stop | Out-Null # Haal alle virtuele machines op $vms = Get-AzVM -ErrorAction SilentlyContinue if ($null -eq $vms -or $vms.Count -eq 0) { Write-Verbose " Geen virtuele machines gevonden in subscription '$($sub.Name)'" continue } $results.SubscriptionsWithVMs++ $results.TotalVMs += $vms.Count # Controleer per VM of Update Manager is geconfigureerd # Note: Azure Update Manager configuratie wordt beheerd via Azure Portal # Dit script controleert of VMs beschikbaar zijn voor Update Manager # door te verifiëren dat de benodigde agents en connectiviteit aanwezig zijn foreach ($vm in $vms) { $vmStatus = "Onbekend" $vmDetails = @{ SubscriptionName = $sub.Name VMName = $vm.Name ResourceGroupName = $vm.ResourceGroupName OSType = $vm.StorageProfile.OsDisk.OsType Status = $null } # Controleer VM status $vmInstance = Get-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Status -ErrorAction SilentlyContinue if ($vmInstance) { $powerState = ($vmInstance.Statuses | Where-Object { $_.Code -like "PowerState/*" }).Code if ($powerState -eq "PowerState/running") { $vmDetails.Status = "Running" # Voor Windows VMs: controleer of Windows Update service beschikbaar is # Voor Linux VMs: controleer of Log Analytics agent is geïnstalleerd if ($vm.StorageProfile.OsDisk.OsType -eq "Windows") { # Windows VMs kunnen worden beheerd via Update Manager # Verificatie vereist connectiviteit naar Microsoft Update $vmDetails.UpdateManagerReady = $true $vmDetails.Reason = "Windows VM - Update Manager compatibel" $results.VMsWithUpdateManager++ } elseif ($vm.StorageProfile.OsDisk.OsType -eq "Linux") { # Linux VMs vereisen Log Analytics agent # Dit is een vereenvoudigde check - volledige verificatie vereist agent status $vmDetails.UpdateManagerReady = $true $vmDetails.Reason = "Linux VM - Update Manager compatibel (agent verificatie vereist)" $results.VMsWithUpdateManager++ } } else { $vmDetails.Status = "Stopped" $vmDetails.UpdateManagerReady = $false $vmDetails.Reason = "VM is niet actief" $results.VMsWithoutUpdateManager++ } } else { $vmDetails.Status = "Unknown" $vmDetails.UpdateManagerReady = $false $vmDetails.Reason = "Kon VM status niet ophalen" $results.VMsWithoutUpdateManager++ } $results.Details += [PSCustomObject]$vmDetails } } catch { Write-Verbose "Kon subscription '$($sub.Name)' niet controleren: $_" $results.Issues += "Kon subscription '$($sub.Name)' niet controleren: $_" } } # Bepaal compliance: als er VMs zijn maar geen zijn geconfigureerd voor Update Manager if ($results.TotalVMs -gt 0 -and $results.VMsWithUpdateManager -eq 0) { $results.IsCompliant = $false $results.Issues += "Geen virtuele machines zijn geconfigureerd voor Azure Update Manager" } elseif ($results.VMsWithoutUpdateManager -gt 0) { $results.IsCompliant = $false $results.Issues += "$($results.VMsWithoutUpdateManager) virtuele machine(s) zijn niet beschikbaar voor Update Manager" } return [PSCustomObject]$results } catch { Write-Error "Fout bij compliance check: $_" throw } } function Invoke-Monitoring { <# .SYNOPSIS Genereert een monitoring rapport van patchmanagement status #> [CmdletBinding()] param() Write-Verbose "Monitoring rapport genereren..." try { Connect-RequiredServices $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Monitoring Rapport" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan Write-Host "Compliance Status: " -NoNewline if ($result.IsCompliant) { Write-Host "COMPLIANT" -ForegroundColor Green } else { Write-Host "NON-COMPLIANT" -ForegroundColor Red } Write-Host "`nOverzicht:" -ForegroundColor White Write-Host " Total Subscriptions: $($result.TotalSubscriptions)" -ForegroundColor White Write-Host " Subscriptions met VMs: $($result.SubscriptionsWithVMs)" -ForegroundColor White Write-Host " Total VMs: $($result.TotalVMs)" -ForegroundColor White Write-Host " VMs met Update Manager: $($result.VMsWithUpdateManager)" -ForegroundColor Green Write-Host " VMs zonder Update Manager: $($result.VMsWithoutUpdateManager)" -ForegroundColor $(if ($result.VMsWithoutUpdateManager -gt 0) { 'Red' } else { 'Green' }) if ($result.Details.Count -gt 0) { Write-Host "`nVM Details:" -ForegroundColor White $result.Details | Format-Table -AutoSize -Property SubscriptionName, VMName, ResourceGroupName, OSType, Status, UpdateManagerReady, Reason } if ($result.Issues.Count -gt 0) { Write-Host "`nProblemen:" -ForegroundColor Yellow foreach ($issue in $result.Issues) { Write-Host " - $issue" -ForegroundColor Yellow } } Write-Host "`nAanbevelingen:" -ForegroundColor Cyan Write-Host " - Configureer Azure Update Manager via Azure Portal voor alle productie-VMs" -ForegroundColor White Write-Host " - Stel maintenance windows in per omgevingstype (productie, test, ontwikkeling)" -ForegroundColor White Write-Host " - Configureer regelmatige update assessments (wekelijks voor productie)" -ForegroundColor White Write-Host " - Definieer patchschedules die kritieke updates prioriteren" -ForegroundColor White Write-Host " - Integreer patchmanagement met change managementprocessen" -ForegroundColor White return $result } catch { Write-Error "Fout bij monitoring: $_" throw } } function Invoke-Remediation { <# .SYNOPSIS Configureert patchmanagement voor virtuele machines .DESCRIPTION Azure Update Manager configuratie wordt primair beheerd via Azure Portal. Dit script identificeert VMs die configuratie vereisen en geeft richtlijnen. #> [CmdletBinding()] param() Write-Verbose "Remediatie starten..." try { Connect-RequiredServices $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Remediatie" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan if ($result.TotalVMs -eq 0) { Write-Host "Geen virtuele machines gevonden om te configureren." -ForegroundColor Yellow return } $remediationCount = 0 if ($result.VMsWithoutUpdateManager -gt 0) { Write-Host "Gevonden VMs die configuratie vereisen: $($result.VMsWithoutUpdateManager)" -ForegroundColor Yellow if ($WhatIf) { Write-Host "`n[WhatIf] Zou de volgende acties uitvoeren:" -ForegroundColor Cyan Write-Host " - Azure Update Manager inschakelen voor alle productie-VMs" -ForegroundColor Gray Write-Host " - Maintenance windows configureren per omgevingstype" -ForegroundColor Gray Write-Host " - Wekelijkse update assessments configureren" -ForegroundColor Gray Write-Host " - Patchschedules definiëren voor kritieke updates" -ForegroundColor Gray $remediationCount = $result.VMsWithoutUpdateManager } else { Write-Host "`n[INFO] Azure Update Manager configuratie wordt beheerd via Azure Portal." -ForegroundColor Yellow Write-Host "[INFO] Volg deze stappen om patchmanagement te configureren:" -ForegroundColor Yellow Write-Host "" -ForegroundColor White Write-Host "1. Ga naar Azure Portal → Update Manager" -ForegroundColor White Write-Host "2. Selecteer de virtuele machines die moeten worden beheerd" -ForegroundColor White Write-Host "3. Configureer update assessments (aanbevolen: wekelijks)" -ForegroundColor White Write-Host "4. Definieer maintenance windows per omgevingstype" -ForegroundColor White Write-Host "5. Stel patchschedules in die kritieke updates prioriteren" -ForegroundColor White Write-Host "6. Integreer met change managementprocessen" -ForegroundColor White Write-Host "" -ForegroundColor White Write-Host "Voor programmatische configuratie, gebruik Azure REST API of Azure CLI." -ForegroundColor Gray $remediationCount = $result.VMsWithoutUpdateManager } } else { Write-Host "`n[INFO] Alle virtuele machines zijn beschikbaar voor Update Manager." -ForegroundColor Green Write-Host "[INFO] Verifieer via Azure Portal of Update Manager daadwerkelijk is geconfigureerd." -ForegroundColor Yellow } if ($WhatIf) { Write-Host "`n[WhatIf] Zou $remediationCount VM(s) configureren voor patchmanagement." -ForegroundColor Cyan } else { if ($remediationCount -gt 0) { Write-Host "`n[INFO] $remediationCount VM(s) vereisen configuratie van patchmanagement." -ForegroundColor Yellow Write-Host "[INFO] Gebruik Azure Portal of Azure CLI voor daadwerkelijke configuratie." -ForegroundColor Yellow } } } catch { Write-Error "Fout bij remediatie: $_" throw } } function Invoke-Implementation { <# .SYNOPSIS Implementeert de configuratie (alias voor Invoke-Remediation) #> [CmdletBinding()] param() Invoke-Remediation } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Script: Patch Management Configured" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan Connect-RequiredServices if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { if ($WhatIf) { Write-Host "[WhatIf Mode] Geen wijzigingen worden doorgevoerd`n" -ForegroundColor Yellow Invoke-Remediation } else { Invoke-Remediation } } else { # Default: Compliance check $result = Test-Compliance if ($result.IsCompliant) { Write-Host "`n✅ COMPLIANT" -ForegroundColor Green Write-Host " $($result.VMsWithUpdateManager) van $($result.TotalVMs) VM(s) zijn beschikbaar voor Update Manager" -ForegroundColor Green } else { Write-Host "`n❌ NON-COMPLIANT" -ForegroundColor Red Write-Host "`nGevonden problemen:" -ForegroundColor Yellow foreach ($issue in $result.Issues) { Write-Host " - $issue" -ForegroundColor Yellow } Write-Host "`nRun met -Remediation om richtlijnen te krijgen" -ForegroundColor Yellow Write-Host "Run met -Monitoring voor gedetailleerd rapport" -ForegroundColor Yellow } return $result } } catch { Write-Error "Error: $_" throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Critical: Zonder een geconfigureerd patchmanagementproces blijven kritieke beveiligingspatches niet geïnstalleerd, waardoor virtuele machines kwetsbaar blijven voor bekende exploits. Onderzoek toont aan dat de gemiddelde tijd tussen patch-release en eerste exploitatiepogingen slechts 24 tot 48 uur bedraagt. Ongepatchte systemen vormen een van de meest voorkomende aanvalsvectoren en kunnen leiden tot datalekken, systeemcompromittering en niet-naleving van BIO, ISO 27001 en NIS2. Tijdens audits kunnen organisaties niet aantonen dat zij voldoen aan compliance-vereisten voor patchbeheer, wat kan leiden tot aanwijzingen, dwangsommen of intrekking van vergunningen.

Management Samenvatting

Azure Update Manager biedt gecentraliseerd patchbeheer voor Azure virtuele machines met geautomatiseerde assessments, geplande maintenance windows en compliance-rapportage. Configureer assessments voor regelmatige detectie van beschikbare updates, definieer maintenance windows per omgevingstype, en implementeer patchschedules die kritieke updates prioriteren. Integreer patchmanagement met change managementprocessen en monitor compliance-status regelmatig. Verplicht voor alle productie-virtuele machines om te voldoen aan BIO 12.06, ISO 27001 A.8.8 en NIS2 artikel 21.