Container-gebaseerde systemen voegen nieuwe lagen toe aan software delivery pipelines. Het is belangrijk om het host OS, de container runtime en de containers zelf te beveiligen, omdat ze allemaal op dezelfde hosting stack draaien. Dit brengt nieuwe overwegingen met zich mee. We moeten goed nadenken over hoe we gecontaineriseerde apps bouwen en draaien.
Hoe Container Security Verschilt van Traditionele Security
Vroeger draaide cloud security vooral om het beschermen van een enkel verdedigingspunt: de perimeter. Maar met de opkomst van containerisatie is deze aanpak achterhaald. Organisaties moeten hun security strategie heroverwegen. De containeromgeving brengt nieuwe tools en uitdagingen met zich mee die sterk afwijken van traditionele beveiligingsmethoden.
De containeromgeving is complexer en dynamischer. Met containertechnologieën moeten wijzigingen upstream worden doorgevoerd, in tegenstelling tot traditionele methoden waarbij software direct op de host wordt bijgewerkt.
Bovendien heeft cloud native computing de manier veranderd waarop we applicaties ontwikkelen, deployen en beveiligen. Dit vraagt om een nieuwe aanpak, waarbij traditionele methodes steeds minder relevant worden.
En terwijl containertechnologieën steeds populairder worden, verschuiven verantwoordelijkheden naar de shift-left aanpak. Dat betekent dat containers al vanaf de vroegste fases van de CI/CD pipeline tot en met deployment en productie beveiligd moeten worden. Developers krijgen hierdoor meer verantwoordelijkheid voor security dan voorheen, bijvoorbeeld door het toepassen van infrastructure as code.
Wat maakt containers anders?
Naast het feit dat containers verschillen van virtual machines (VMs) en andere deployment methodes, verandert containerisatie de gehele applicatie lifecycle.
- Containers hebben minder afhankelijkheden van de onderliggende infrastructuur.
- Ze worden gebouwd met machine-leesbare images, waardoor verschillende besturingssystemen en applicaties op dezelfde machine kunnen draaien. Dit zorgt voor isolatie tussen applicaties en een efficiënter gebruik van resources.
- Containers zijn declaratief en voeren alleen uit wat in de code is gedefinieerd. Hierdoor gedragen ze zich voorspelbaar, en elke afwijking kan worden opgespoord als een potentiële bedreiging.
- Containers zijn vluchtig en kunnen binnen enkele seconden op- en afgeschaald worden.
- Containers zijn portabel, wat het eenvoudiger maakt om ze te deployen in multi-cloud omgevingen.
Eén probleem kan zich door alle lagen verspreiden
Wat container security bijzonder maakt, is de impact van een enkele kwetsbaarheid. Als één container image een zwakke plek bevat, zijn alle instances van die container kwetsbaar, waardoor het attack surface toeneemt. Dit probleem wordt groter naarmate er meer containers vanuit dezelfde image draaien. En met publieke image repositories kan een gecompromitteerde image zich wereldwijd verspreiden naar miljoenen machines. Bovendien wordt visibiliteit lastiger naarmate containers verspreid worden over verschillende omgevingen.
Langdurige containers: Een nieuw paradigma
Oorspronkelijk waren containers bedoeld voor kortstondige workloads die snel opstarten, een taak uitvoeren en weer afsluiten. Tegenwoordig worden containers steeds vaker gebruikt voor langdurige processen en traditionele applicaties die vroeger op een VM draaiden. Deze verandering brengt nieuwe security uitdagingen met zich mee die we niet kunnen negeren.