In een indirecte interpretatie van het principe van Kerckhoff in cryptografie – een cryptografisch systeem moet veilig blijven, zelfs als alles over het systeem, behalve de sleutel, bekend is bij de aanvaller.
Dit principe vormt de basis van een belangrijke waarheid over moderne beveiliging, namelijk obscuriteit is niet per definitie bescherming. Op dezelfde manier kan containerisatie, een krachtig hulpmiddel in moderne software-implementatie, laterale bewegingen binnen een netwerk voorkomen als het correct wordt geïmplementeerd, maar het voorkomt niet dat een app binnen de container wordt gecompromitteerd.
Containers bieden gemak, maar zonder sterke beveiliging brengen ze ook risico’s met zich mee. Niet verrassend is dat 60% van de containerimages die in productieomgevingen draaien, vol zitten met bekende kwetsbaarheden, waardoor een open deur ontstaat voor cyberdreigingen.
Hoe bescherm je je containers tegen mogelijke inbreuken? Het antwoord begint met een uitgebreide containerbeveiligingschecklist die kwetsbaarheden op elk niveau aanpakt, zodat er geen enkele opening onbenut blijft.
In dit artikel delen we een containerbeveiligingschecklist en enkele best practices die je helpen een ondoordringbaar fort te bouwen om je containers te beveiligen.
Wat is Containerbeveiliging?
Containerbeveiliging is het proces van het beschermen van gecontaineriseerde applicaties, samen met de infrastructuur die deze ondersteunt, tegen kwetsbaarheden en dreigingen gedurende hun hele levenscyclus.
Dit omvat het beveiligen van de volledige stack, van de containerengine, het hostbesturingssysteem en het orkestratieplatform (zoals Kubernetes) tot aan de containers zelf.
Een belangrijk onderdeel van containerbeveiliging is continue scanning, beginnend bij de basisimages tot aan de applicatiecode binnen containers.
Je moet actief monitoren op runtime risico’s die kunnen wijzen op een aanval, terwijl je ervoor zorgt dat gebruikte containerimages afkomstig zijn van vertrouwde bronnen en vrij zijn van bekende kwetsbaarheden.
Je moet ook de isolatie van de container foutloos uitvoeren. Controleer dubbel op zwakke plekken—privilege-escalatie, verkeerd geconfigureerde netwerken, enzovoort.
Er zijn verschillende andere maatregelen die je kunt nemen om je omgeving actief te ontdoen van dreigingen. Met een sterk pakket aan containerbeveiligingsprotocollen of checklists die een reeks praktijken, tools en beleidsmaatregelen omvatten, kun je de volledige containerlevenscyclus beveiligen—van ontwikkeling en implementatie tot runtime en buitengebruikstelling.
Belang van een Containerbeveiligingschecklist
Containeromgevingen zijn een doolhof van bewegende onderdelen. En als je hun beveiliging wilt beheren, heb je een systeem nodig. Het bij de hand houden van richtlijnen of checklists kan de tijd verkorten die nodig is om een volledig beveiligde Docker- of Kubernetes-container succesvol te implementeren.
Naast tijdsbesparing heeft een beveiligingschecklist nog verschillende andere voordelen:
- Standaardisatie: Het standaardiseren van elke stap in de containerlevenscyclus is essentieel om uniformiteit te waarborgen en kritieke fouten te voorkomen. Wanneer mensen samenwerken, is er altijd kans op menselijke fouten. Duidelijke richtlijnen over taken houden iedereen op één lijn en zorgen voor een soepele werking.
- Uitgebreide dekking: Gecontaineriseerde omgevingen bestaan uit meerdere bouwstenen, zoals images, registries, netwerken en runtime. Een controle uitvoeren voordat deze elementen in het systeem worden gebracht, moet verplicht zijn. Dit kan onder meer image scanning, toegangscontroles, netwerksegmentatie en runtime monitoring omvatten.
- Efficiëntie en consistentie: Een checklist is gewoon een extra stap om een beveiligde container te garanderen, waardoor je operaties extra efficiënt en consistent worden. Bovendien hebben je teams een referentiepunt voor beveiligingsbest practices, waardoor de kans kleiner wordt dat ze een stap overslaan.
- Compliance: Gezien het toenemende aantal cyberdreigingen en datalekken hebben overheden en toezichthouders strenge regelgeving opgesteld. Een goed gedefinieerde containerbeveiligingschecklist helpt bij het waarborgen van compliance door best practices af te dwingen, zoals role-based access control (RBAC), image scanning en het naleven van CIS-benchmarks voor Docker en Kubernetes. Het zorgt ook voor logging en monitoring voor audits en voldoet aan de eisen van kaders zoals GDPR, HIPAA of PCI-DSS.
- Proactieve dreigingsmitigatie: Het is altijd verstandig om de volledige containerlevenscyclus twee keer door te nemen voordat je deze implementeert, en een checklist helpt je daarbij. De eerste ronde zorgt ervoor dat alle beveiligingsmaatregelen zijn geïmplementeerd, terwijl de tweede dient als validatiestap om gemiste configuraties of opkomende dreigingen te detecteren voordat ze kritieke problemen worden.
De 10 Belangrijkste Containerbeveiligingschecklists
Nu we het belang van de containerbeveiligingschecklist hebben vastgesteld, is het tijd om dieper in te gaan op welke beveiligingscontroles je moet implementeren.
Hier is een Docker- en Kubernetes-beveiligingschecklist die alle stappen van je beveiligingsprotocol beknopt opsomt:
Imagebeveiliging
- Gebruik vertrouwde en geverifieerde basisimages uit officiële repositories.
- Beperk wie images kan pushen/pullen naar/van de registry
- Scan containerimages regelmatig op kwetsbaarheden.
- Blokkeer de implementatie van kwetsbare images of beperk hun netwerktoegang
- Detecteer gevoelige data zoals sleutels of tokens voordat je images pusht
- Zorg ervoor dat images minimaal zijn en alleen noodzakelijke afhankelijkheden bevatten.
- Implementeer geautomatiseerde imagepatching en updates.
Toegang en Machtigingen
- Voorkom dat containers met rootrechten draaien.
- Voorkom dat containers buitensporige rechten krijgen of onnodige systeemaanroepen doen.
- Implementeer het principe van minimale rechten voor containers en gebruikers.
- Beperk welke containers specifieke bestanden of mappen mogen wijzigen.
- Gebruik PodSecurity Admission om toegang tot gevoelige mogelijkheden en resources te beperken.
- Gebruik role-based access control (RBAC) om toegang tot kritieke API-eindpunten en containerresource-acties zoals `get`, `list`, `watch`, of `secrets.` te beperken.
- Gebruik multi-factor authentication (MFA) voor toegang tot containeromgevingen.
Netwerkbeveiliging
- Isoleer containers met netwerksegmentatie (bijv. Docker-netwerkbeleid).
- Bescherm publiek toegankelijke services door verkeer te filteren op verschillende poorten en protocollen.
- Gebruik versleutelde communicatie (bijv. TLS) voor data in transit.
- Gebruik Layer 7-controles met een service mesh en deep packet inspection om HTTP/HTTPS-beleid af te dwingen.
- Beperk Layer 3- en 4-verkeer door IP- en poortgebaseerde toegang te controleren om toegang te beperken.
- Certificeer dat de gekozen Container Network Interface (CNI)-plugin ondersteuning biedt voor Kubernetes Network Policies.
- Pas ingress- en egress-netwerkbeleid toe op alle workloads, met standaardbeleid dat al het verkeer weigert.
- Zorg ervoor dat kritieke componenten (Kubernetes API, Kubelet API, enz.) niet publiekelijk toegankelijk zijn.
- Versleutel verkeer en gebruik Mutual TLS (mTLS) om workloadcommunicatie binnen clusters te authenticeren.
Runtimebeveiliging
- Monitor het runtimegedrag van containers op verdachte activiteiten.
- Beperk container-toegang tot hostresources door gebruik te maken van Linux-beveiligingsmodules.
- Implementeer resource-limieten (CPU, geheugen) om denial-of-service-aanvallen te voorkomen.
- Beperk toegang tot runtime API en daemon om knoeien met live containers te voorkomen.
- Log en audit alle containeractiviteiten in realtime.
Kwetsbaarheids- en Patchbeheer
- Scan containers en hosts regelmatig op kwetsbaarheden.
- Scan configuratiebestanden op compliance in je continuous integration-pijplijn en neem geautomatiseerde controles op voor beveiligingsmisconfiguraties.
- Gebruik image signing (Docker Content Trust) om de integriteit van containerimages te verifiëren.
- Voer statische codeanalyse uit om kwetsbaarheden in applicatiecode en afhankelijkheden te identificeren.
Geheimenbeheer
- Sla gevoelige gegevens (API-sleutels, wachtwoorden) op in tools voor geheimenbeheer.
- Vermijd het hardcoden van geheimen in containerimages of omgevingsvariabelen.
- Voer periodieke audits uit en controleer wie toegang heeft tot de Secrets API en roteer encryptiesleutels.
- Versleutel data in rust door de Kubernetes API-server te configureren om geheime data in etcd te versleutelen, voor een extra beschermingslaag.
- Configureer tokens met kortere vervalperiodes om de impact van een gecompromitteerde token te verkleinen.
Orkestratiebeveiliging
- Beveilig containerorkestrators (bijv. Docker) met sterke toegangscontroles.
- Schakel role-based access control (RBAC) in en zorg voor minimale rechten voor gebruikers en serviceaccounts.
- Implementeer versiebeheer (zoals Git) voor orkestratorservicedefinities en configuraties.
- Schakel logging in voor alle API-verzoeken naar het orkestrator control plane (bijvoorbeeld auditlogs in Kubernetes)
Veilige Configuratie
- Schakel onnodige services of poorten in containers uit.
- Gebruik alleen-lezen besturingssystemen voor containers die geen schrijfrechten nodig hebben.
- Zorg ervoor dat containers stateless en immutable zijn waar mogelijk.
Back-up en Herstel na Calamiteiten
- Maak regelmatig back-ups van containerconfiguraties en applicatiedata.
- Zorg voor consistente back-ups door etcd snapshot save-commando’s te gebruiken voor een point-in-time back-up.
- Voer rampoefeningen uit waarbij je opzettelijk een clustercomponent laat falen en valideer dat het herstelproces werkt zoals verwacht.
Compliance en Auditing
- Zorg voor naleving van industriestandaarden voor beveiliging (bijv. GDPR, PCI-DSS).
- Audit containerbeveiligingsbeleid, logs en toegangscontroleconfiguraties regelmatig.
- Voer regelmatig penetratietests uit op containeromgevingen.
CNAPP Marktgids
Krijg belangrijke inzichten in de staat van de CNAPP-markt in deze Gartner Market Guide for Cloud-Native Application Protection Platforms.
LeesgidsBest Practices voor Containerbeveiliging
Hoewel we je een containerbeveiligingschecklist hebben gegeven, zijn hier enkele best practices voor containerbeveiliging die je gecontaineriseerde omgevingen versterken:
- Gebruik vertrouwde basisimages: De basis van je container wordt gevormd door de images. Zorg er dus voor dat je deze van een betrouwbare bron haalt. Kies ook voor een geautomatiseerde tool voor image scanning en regelmatige patching. Gebruik tools die direct integreren in je CI/CD-pijplijn om basisimages te controleren in elke fase.
- Implementeer minimale rechten: Houd containerrechten beperkt. Voorkom dat containers als root draaien en beperk toegang tot systeemresources om potentiële dreigingsvectoren voor te blijven. Gebruik CIS-benchmarks om het hostbesturingssysteem te hardenen door te zorgen dat minimale services draaien en overweeg tools zoals SentinelOne om het aanvalsoppervlak op systeemcall-niveau te verkleinen. Dit is belangrijk omdat containers de hostkernel delen.
- Beveilig Infrastructure as Code (IaC): Om te voorkomen dat risicovolle configuraties productie bereiken, kun je IaC-templates zoals Kubernetes-manifests gebruiken die scannen op beleidschendingen en misconfiguraties (zoals te ruime IAM-rollen of open poorten) vóór implementatie.
- Cloudconfiguratie hardenen: Zorg voor isolatie van cloudresources via VPC’s en private netwerken, en harden cloudservices met minimale toegangsrechten. Implementeer continue monitoring op cloudmisconfiguraties (zoals open S3-buckets of blootgestelde beheerinterfaces).
- Verminder externe kwetsbaarheden: Kwetsbaarheden in externe afhankelijkheden (meestal gevonden tijdens builds) kunnen zwakke plekken in je applicaties introduceren. Je kunt afhankelijkheidsscanning automatiseren op bekende CVE’s in zowel OS- als applicatieafhankelijkheden. Werk bibliotheken en pakketten regelmatig bij.
- Orkestrator- en runtime-benchmarkcontroles: Gebruik beveiligingscontroles van de orkestrator, zoals Kubernetes admission controllers, om beveiligingsbeleid af te dwingen vóór implementatie. Implementeer runtime-benchmarkcontroles (bijv. Kubernetes CIS-benchmarks) om zowel orkestrators als draaiende containers regelmatig te auditen.
- Netwerksegmentatie: Maak en pas beleid toe om containerverkeer te controleren en het aanvalsoppervlak te verkleinen. Microsegmentatie van gecontaineriseerde workloads beperkt de impact van een inbreuk en verbetert de netwerkbeveiliging.
- Resource-limieten: Door resource-limieten toe te passen op CPU, geheugen en opslag van elke container, voorkom je dat een container systeemresources uitput. Als systeemresources opraken, kun je problemen krijgen met servicevoorwaarden en andere operationele issues.
- Monitoren en loggen van activiteiten: Je moet in realtime kunnen reageren op beveiligingsdreigingen. Gebruik tools die inzicht geven in containergedrag, zodat je snel dreigingen kunt identificeren en mitigeren.
- Beveilig de CI/CD-pijplijn: Zorg dat je CI/CD-pijplijn veilig is door beveiligingscontroles op te nemen in elke fase van de containerlevenscyclus, van codecommit tot implementatie. Dit helpt voorkomen dat kwetsbaarheden tijdens het ontwikkelproces worden geïntroduceerd.
- Automatiseer beveiligingsupdates: Gebruik automatiseringstools om beveiligingspatches en updates toe te passen op containers en orkestrators zonder downtime te veroorzaken.
- Compliance en beleidsafdwinging: Audit containers regelmatig om te voldoen aan organisatorische en wettelijke beleidsregels. Gebruik tools voor beleidsafdwinging om beveiligingsbeleid in alle omgevingen toe te passen en consistente beveiligingsstandaarden en compliance te behouden.
Veelgemaakte Fouten bij Containerbeveiliging om te Vermijden
In februari 2019 maakte het Docker-team publiekelijk de CVE-2019-5736 kwetsbaarheid bekend. Door deze zwakte konden aanvallers de binaire bestanden van de host overschrijven, toegang krijgen tot het hostsysteem en commando’s uitvoeren als root binnen een container.
Verschillende organisaties, waaronder AWS, RedHat en Microsoft Azure, ontdekten deze kwetsbaarheid ook en brachten patches aan in hun producten.
In 2021 maakte de CVE-2021-3490 kwetsbaarheid misbruik van een fout in de Linux-kernel met betrekking tot de extended Berkeley Packet Filter (eBPF).
Deze zwakte stelde aanvallers in staat om willekeurige code uit te voeren op de host vanuit gecompromitteerde containers die toegang hadden tot eBPF via de standaard seccomp-profielen van Kubernetes. Deze profielen beperkten de vereiste syscalls niet, waardoor bepaalde configuraties kwetsbaar waren.
Deze incidenten tonen aan dat één kleine omissie in je containerbeveiliging de integriteit van je applicaties kan compromitteren en je omgeving kan blootstellen aan risico’s.
Andere veelvoorkomende fouten in containerbeveiliging om op te letten zijn:
- Aannemen dat publieke images veilig zijn kan leiden tot gecompromitteerde implementaties. Vertrouw nooit externe images zonder grondige beoordeling door ervaren ontwikkelaars.
- Containers blootstellen aan te veel open kanalen vergroot het aanvalsoppervlak. Laat containers niet met rootrechten draaien en controleer netwerkinteracties op potentiële zwakke plekken.
- Het niet controleren en scannen van codelibraries op kwetsbaarheden voordat ze in containers worden geïntegreerd
- Geen nauwkeurige logregistratie bijhouden kan het moeilijk maken om beveiligingsproblemen snel te detecteren.
- Het negeren van CI/CD-pijplijnbeveiliging, zoals het overslaan van beveiligingscontroles tijdens build en deployment, kan kwetsbaarheden vroeg in de ontwikkeling introduceren.
SentinelOne Cloud Workload Security voor Containers
Je hebt een uniforme strategie nodig over alle nodes om al je gecontaineriseerde omgevingen effectief te beveiligen. Q2 is een toonaangevende financiële dienstverlener voor meer dan 1200 banken, unies en financiële instellingen. Met meer dan 22 miljoen eindgebruikers en 65.000 containers in de publieke cloud heeft Q2 SentinelOne’s Cloud Workload Security for Containers uitgerold in al zijn omgevingen. En net als Q2 kun jij ook profiteren van verschillende functies en voordelen van deze oplossing, altijd op de hoogte blijven van anomalieën en een sterke beveiligingspositie behouden.
Belangrijkste Functies en Voordelen
- Uitgebreide Hybrid Cloud Workload Protection in multi-cloudomgevingen, waaronder AWS, Azure, GCP en on-premises datacenters
- Blokkeert ransomware, zero-day exploits, cryptominers en fileless attacks
- eBPF-gebaseerde agentarchitectuur biedt realtime zichtbaarheid op procesniveau van het besturingssysteem, met diepgaande telemetrie zonder afhankelijkheid van kernelmodules
- Statische AI-engine die bestandsarchitecturen analyseert met behulp van een dataset van meer dan 500 miljoen malwarehandtekeningen
- Gedrags-AI-engine die temporele analyse gebruikt en patronen in de tijd evalueert om kwaadaardig gedrag te detecteren dat statische detectie kan ontwijken
- Realtime detectie van machine-speed aanvallen op servers, VM’s, containers en Kubernetes
- Geautomatiseerd herstel, voor maximale workloadbeschikbaarheid
- Versnel onderzoeken en IR, versterk threat hunting
- Workload Flight Data RecorderTM.
- Versnel innovatie met runtimebeveiliging die niet in de weg zit.
- Geen kernelafhankelijkheden. Lage CPU- en geheugendruk.
- eBPF-architectuur, voor stabiliteit en prestaties
- Ondersteunt Docker, containers en cri-o runtimes
- Automatisch schaalbare bescherming
- Realtime CWPP
- Ondersteunt zelfbeheerde en beheerde K8s-services
- Ondersteunt 14 toonaangevende Linux-distributies, waaronder Amazon Linux 2023
- Integratie met Snyk (apart aan te schaffen)
Bovendien helpt SentinelOne’s Cloud-Native Application Protection Platform (CNAPP) je om containerbeveiliging te verbeteren met functies zoals Kubernetes Security Posture Management (KSPM) en Cloud Security Posture Management (CSPM), zodat je cloud-native applicaties compliant en veilig blijven.
AI-gestuurde cloud workload-bescherming (CWPP) voor servers, VM's en containers, die runtime-bedreigingen in realtime detecteert en stopt.
Veelgestelde vragen
Om containerbeveiliging te waarborgen, moet u een brede aanpak hanteren die meerdere lagen omvat. Begin met:
- Het gebruiken van vertrouwde basisimages en deze regelmatig scannen op kwetsbaarheden, waarbij u de images zo minimaal mogelijk houdt om het aanvalsoppervlak te verkleinen.
- Het toepassen van het principe van minimale privileges door containers alleen de benodigde rechten te geven en ze nooit als root uit te voeren.
- Het continu in realtime monitoren van containeractiviteit om verdacht gedrag te detecteren, en het uitvoeren van kwetsbaarheidsscans in elke fase, van build tot runtime.
- Zorg er tot slot voor dat uw host en orchestrator goed zijn gehard met beveiligingspatches en netwerkbeleid om containercommunicatie te beperken en potentiële dreigingen te verminderen.
Het Container Security Initiative (CSI) bestaat uit zeven hoofdonderdelen. Deze omvatten:
- Scannen van images
- Beveiligen van runtime
- Toegangscontrole
- Netwerken beschermen
- Compliance beheren
- Monitoren
- Reageren op incidenten.
SentinelOne Singularity Cloud Workload Security (CWS)-platform speelt een grote rol bij containerbeveiliging. Het beschermt gecontaineriseerde applicaties gedurende hun hele levenscyclus. Het platform automatiseert runtimebescherming, beheert kwetsbaarheden en handhaaft compliance. Het werkt samen met Kubernetes en andere systemen om containers in realtime te monitoren en beveiligen, zowel in publieke als private clouds.
De containerbeveiligingslevenscyclus bestaat uit vijf hoofdonderdelen:
- Imagebeveiliging: Begin met veilig gecontroleerde images en controleer deze regelmatig om zwakke plekken te vinden.
- Buildbeveiliging: Zorg ervoor dat het container-buildproces veilige richtlijnen en methoden volgt.
- Deploymentbeveiliging: Gebruik beveiligingsregels, ken alleen de minimaal benodigde rechten toe en stel veilige netwerken in bij het uitrollen van containers.
- Runtimebeveiliging: Houd containers in de gaten op afwijkend gedrag, gebruik runtime-beveiligingsregels en houd netwerken gescheiden.
- Decommissioning: Haal containers uit gebruik en zorg ervoor dat alle vertrouwelijke gegevens volledig worden verwijderd.

