Naar de inhoud

Blog overzicht

Serverupdates automatiseren zonder downtime

Patchbeheer is een van de meest onderschatte risicofactoren in IT-infrastructuur. Handmatig updaten is foutgevoelig, tijdrovend en leidt vroeg of laat tot een incident. Toch aarzelen veel teams om het te automatiseren, uit angst dat een update een productiesysteem onderuit haalt. Die angst is begrijpelijk, maar met de juiste aanpak hoef je niet te kiezen tussen veiligheid en beschikbaarheid.

De risico's van handmatig patchen

Wie servers handmatig patcht, werkt met een fundamenteel probleem: mensen vergeten dingen, maken fouten en hebben te weinig tijd. In een omgeving met tientallen of honderden servers is het onmogelijk om consistent en tijdig te patchen zonder geautomatiseerde ondersteuning. Dat leidt tot een voorspelbaar patroon: systemen lopen achter op updates, beveiligingslekken blijven maanden open staan en audits brengen vervelende verrassingen.

De gemiddelde tijd tussen het beschikbaar komen van een patch en actieve exploitatie ervan is de afgelopen jaren sterk gedaald. Aanvallers scannen systematisch op bekende kwetsbaarheden en maken gebruik van openbaar beschikbare exploit-code. Een ongepatchte server is een concreet doelwit.

Naast beveiligingsrisico's zijn er operationele problemen. Handmatig patchen kost veel tijd die engineers beter kunnen besteden. Inconsistenties tussen systemen, waarbij de ene server wel gepatcht is en de andere niet, maken troubleshooting lastiger. En als er dan toch iets misgaat, is er vaak geen gestructureerd rollback-proces.

Update-strategieën

Er is niet één juiste manier om updates uit te rollen. De keuze hangt af van de beschikbaarheidseisen van je omgeving, de aard van de services en de risicotolerantie van je organisatie. De meest gebruikte strategieën zijn rolling updates, blue/green deployments en canary releases.

Bij een rolling update vervang je servers of containers één voor één, zodat er altijd een deel van de capaciteit beschikbaar blijft. Dit is de eenvoudigste strategie en werkt goed voor homogene omgevingen. De keerzijde is dat je tijdelijk twee versies van je software hebt draaien, wat compatibiliteitsproblemen kan geven als je niet zorgvuldig bent. Zorg bij rolling updates ook dat je load balancer gezonde nodes onderscheidt van nodes die nog in de updatefase zitten, zodat gebruikersverkeer pas terugkomt als het systeem volledig operationeel is.

Blue/green deployment houdt twee identieke omgevingen in stand: één actief (blauw) en één passief (groen). Updates worden uitgerold op de passieve omgeving, getest, en dan wordt het verkeer in één beweging omgeschakeld. Bij problemen schakel je direct terug. Dit vraagt meer infrastructuur, maar geeft maximale controle en een minieme failover-tijd. Voor bedrijven met strikte SLA's is blue/green de meest betrouwbare keuze, mits de infrastructuurkosten van twee parallel draaiende omgevingen acceptabel zijn.

Canary releases zijn een genuanceerder variant: een kleine subset van het verkeer of een beperkt aantal servers krijgt de update als eerste. Pas als die groep stabiel draait, rol je verder uit. Dit is vooral waardevol bij applicatieupdates waarbij gebruikersgedrag en performance onder echte productieomstandigheden moeten worden gevalideerd voordat je breed gaat. Progressieve canary-uitrol gecombineerd met automatische metrics-monitoring, zodat de uitrol stopt als foutpercentages of latency boven een drempel komen, is een van de krachtigste vormen van gecontroleerde automatisering.

Testomgevingen

Automatisering zonder testomgeving is roekeloos. Een goede patchstrategie begint met een pipeline die updates eerst valideert voordat ze productie raken. Dat betekent minimaal een acceptatieomgeving die productie zo nauwkeurig mogelijk weerspiegelt, inclusief dezelfde OS-versies, configuraties en (geanonimiseerde) data.

De uitdaging is dat veel teams een testomgeving hebben die in de praktijk niet representatief is. Software is anders geconfigureerd, dependencies ontbreken of versies lopen uiteen. Investeer in pariteit: maak van het onderhouden van een productie-waardige testomgeving een first-class priority, geen bijzaak.

Automatische testsuites zijn een verlengstuk hiervan. Na elke patchronde moeten geautomatiseerde smoketests en integratietests draaien om te bevestigen dat kritieke functionaliteit intact is. Hoe gedetailleerder die tests, hoe meer vertrouwen je kunt hebben in een geautomatiseerde uitrol. Ook minimale tests, zoals een health check op de meest gebruikte endpoints, zijn beter dan helemaal niets.

Infrastructure as Code (IaC) helpt hier enorm. Als je omgeving volledig declaratief is beschreven in tools als Terraform of Ansible, kun je testomgevingen on-demand opbouwen die bit-for-bit identiek zijn aan productie. Dat verlaagt de drempel om te testen en vermindert het ‘bij mij werkt het wel’ effect aanzienlijk.

Automation tools

De markt voor patch-automatisering is breed. Welke tool je kiest hangt af van je stack, je team en de mate van controle die je wilt behouden. 

Voor Linux-omgevingen is unattended-upgrades op Debian/Ubuntu een laagdrempelige manier om beveiligingsupdates automatisch te installeren. Het is eenvoudig te configureren, maakt onderscheid tussen beveiligings- en functionele updates, en kan automatisch herstarten. Voor meer controle en grotere omgevingen zijn tools als Ansible, Puppet of Chef beter geschikt: die geven je een centrale plek om updatebeleid te definiëren en uit te rollen over honderden servers tegelijk.

Ansible verdient een aparte vermelding vanwege zijn lage installatiedrempel. Er is geen agent nodig op de doelservers, het werkt via SSH, en de playbooks zijn leesbaar genoeg dat ook niet-developers ze kunnen begrijpen en reviewen. Een eenvoudig Ansible-playbook dat pakketupdates uitvoert, services herstart en de status rapporteert, is in een middag opgezet. Combineer Ansible met een scheduler zoals AWX of Ansible Automation Platform om updatejobs in te plannen, resultaten bij te houden en alerts te versturen bij mislukte runs.

Voor Windows-omgevingen biedt Windows Server Update Services (WSUS) een bewezen basis, maar voor meer controle en integratie in bredere pipelines zijn tools als Chocolatey of het nieuwere winget in combinatie met PowerShell DSC flexibeler. Microsoft Intune is een optie voor omgevingen met veel beheerde endpoints waar patch compliance centraal staat.

Voor containeromgevingen ziet het vraagstuk rond patches er heel anders uit. Containers zijn immutable: je patcht ze niet in-place, maar bouwt een nieuw image en vervangt de draaiende instantie. Tools als Renovate of Dependabot automatiseren het detecteren van verouderde base images en dependencies en openen automatisch pull requests. Combineer dat met een CI/CD-pipeline die images automatisch bouwt en test, en je hebt een volledig geautomatiseerde patchflow. Trivy of Grype kunnen als onderdeel van die pipeline image-scans uitvoeren en de build laten mislukken bij kritieke kwetsbaarheden.

Rollback-mechanismen

Elke automatiseringsoplossing is zo goed als zijn terugvaloptie. Voordat je automatisch patcht, moet je weten hoe je een update ongedaan maakt en hoe snel dat kan.

Op OS-niveau bieden tools als rpm of dpkg de mogelijkheid om naar een vorige pakketversie terug te keren. Maar in de praktijk is dat omslachtig, zeker als meerdere pakketten tegelijk zijn bijgewerkt. Snapshots op virtueel machineniveau zijn betrouwbaarder: maak een snapshot direct voor de patchrun, voer de updates uit, valideer en verwijder de snapshot pas als alles stabiel is. Bij problemen herstel je de snapshot en bent je binnen minuten terug op de vorige staat.

Voor containeromgevingen is rollback eenvoudiger geregeld. Als je image-tags of digests vastlegt in je deployment-configuratie, is terugkeren naar een vorige versie een kwestie van de tag aanpassen en opnieuw deployen. Kubernetes maakt dit expliciet mogelijk via kubectl rollout undo. Zorg dat je imagegeschiedenis lang genoeg wordt bewaard en dat oude images niet automatisch worden opgeruimd voordat je zeker weet dat de nieuwe versie stabiel is.

Documenteer je rollback-procedure en test hem periodiek. Een rollback die je nooit hebt geoefend, werkt niet op het moment dat het ertoe doet.

Governance

Automatisering lost het technische deel van patchbeheer op. Governance lost het organisatorische deel op: wie beslist wanneer welke updates worden uitgerold, hoe uitzonderingen worden beheerd en hoe je aantoont dat je compliant bent.

Een patchbeleid hoeft niet ingewikkeld te zijn. Definieer minimaal:

  1. de maximale tijd waarbinnen beveiligingsupdates worden geïnstalleerd (bijvoorbeeld 72 uur voor kritieke CVE's), 
  2. het onderhoudsvenster voor reguliere updates, en 
  3. het proces voor uitzonderingen.

Dat laatste is belangrijk: er zijn altijd systemen die niet zomaar gepatcht kunnen worden vanwege afhankelijkheden of contractuele beperkingen. Zorg dat die uitzonderingen expliciet zijn vastgelegd en periodiek worden herzien.

Rapportage is de sluitpost. Logging van patchactiviteiten, inclusief wat er is geïnstalleerd, op welk systeem en wanneer, is essentieel voor auditdoeleinden en voor troubleshooting als er iets mis gaat. Tools als Ansible Tower en vergelijkbare oplossingen bieden dashboards die de patchstatus over je hele omgeving inzichtelijk maken. Koppel die data aan je CMDB als je die hebt, zodat patchstatus onderdeel wordt van het bredere assetbeheer.

Ten slotte: maak van patchbeheer een teaminspanning, geen taak van één persoon. Roulerende verantwoordelijkheid, gedeelde dashboards en regelmatige reviews van het patchproces verankeren de praktijk in de organisatie en voorkomen dat kennis en verantwoordelijkheid bij één engineer komen te liggen die natuurlijk op vakantie is als het fout gaat. Een korte maandelijkse patchreview, waarbij je openstaande uitzonderingen evalueert en de automatiseringsresultaten doorneemt, is voldoende om grip te houden en tijdig bij te sturen als de praktijk afwijkt van het beleid.


Beoordeel dit artikel

Deel dit artikel

Gerelateerde artikelen

Blog overzicht

Auteur: TIP-redactie

Is de auteursnaam die we gebruiken wanneer een blogpost in teamverband door meerdere TransIP’ers is samengesteld. Denk bijvoorbeeld aan een eventverslag of onze Recommends.