Wat achtergrond:
Container Security kan worden onderscheiden in container images en container runtime.
-Container images zijn statische blauwdrukken of sjablonen die worden gebruikt om containers te genereren. Dit omvat de toepassing, bibliotheken en alle afhankelijkheden die nodig zijn om een toepassing uit te voeren.
-Container runtime daarentegen verwijst juist naar het uitvoeren van de eigenlijke container op een platform zoals bijvoorbeeld Kubernetes.
Nu dit onderscheid gemaakt is, starten we met de best practice om je containerbeveiliging te optimaliseren!
Best practice 1: Controleer je container ‘image beveiliging’
De ‘base image’ dient als het voornaamste beschermingschild voor jouw containerbeveiliging. Kies betrouwbare, minimale ‘base images’ voor je containers. Bijvoorbeeld die van Ubuntu, Debian etc. Deze afbeeldingen krijgen regelmatig updates en patches en bevatten daarnaast alleen het noodzakelijke om je applicatie te draaien, niets meer dan dat. Juist omdat het enkel dat essentiële doet (met minder componenten en dus met minder kwetsbaarheden) helpt het om je containerbeveiliging op orde te krijgen.
Best practice 2: Scan afbeeldingen in je CI/CD Pipelines
Integreer ‘kwetsbaarheids scanning’ in je continuous integration / Continuous Delployment (CI/CD) pipeline. Hiermee borg je de beveiliging van je containerafbeeldingen. Dit process maakt vroege detective van mogelijke kwetsbaarheden in je containerafbeeldingen tijdens de bouwfase mogelijk, waardoor de kans kleiner wordt dat onveiligie containers worden ingezet. Tools zoals Clair, Trivy en Docker’s native scanner bieden mogelijkheden voor het scannen van afbeeldingen die beveiligingsfouten identificeren.
Best practice 3: Kies je container registry
Een container registry is een opslagplaats om je container images op te slaan. Hoewel er veel verschillende repositories beschikbaar zijn, raden we je aan om een container registry te gebruiken met ingebouwde beveiligingsfuncties. Azure Container Registry biedt bijvoorbeeld beveiligingsfuncties om automatisch te scannen op kwetsbaarheden, images in te zetten en te bouwen en te patchen. Het biedt ook privétoegang en scheidt je netwerk. Je kunt deze functies gebruiken om Azure Container Registry te verbinden met een service zoals Azure Kubernetes Services.
Best practice 4: beveilig via ‘Runtime beveiliging’
De beveiliging van containerimages richt zich op de bouwfase. Maar ‘runtime beveiliging’ betreft het beveiligen van containers wanneer ze, je raadt het al, draaien. ‘Runtime beveiliging’ gaat over het monitoren van het gedrag van de draaiende container en het ontdekken van / of het reageren op afwijkende activiteiten met betrekking tot een potentiële aanval.
Best practice 5: Het gebruik van container orchestration technologie
In complexe omgevingen zijn orkestratietools zoals Kubernetes essentieel. Kubernetes beheert de levenscyclus van containers, van implementatie tot schalen en netwerken. Azure Kubernetes Service (AKS) is de door ons aanbevolen oplossing op Microsoft Azure. Een cruciaal onderdeel van AKS-beveiliging is het configureren van Pod Security Admission (PSA).
Pod Security Admission is een ingebouwde toelatingscontroller in Kubernetes die podspecificaties evalueert op basis van een vooraf gedefinieerde set Pod Security Standards. Het bepaalt of de pod mag draaien of niet. Het biedt de mogelijkheid te handhaven, waarschuwen en auditgebeurtenissen te genereren voor pods die de beveiligingsprofielen overtreden. Pod Security Admission past beveiligingsregels toe op pods die in een namespace draaien. De Kubernetes Pod Security Standards definiëren verschillende isolatieniveaus voor Pods.
Deze normen laten jou definieren hoe je het gedrag van pods duidelijk en consistent wilt beperken. Kubernetes biedt een ingebouwde Pod Security-toelatingscontroller om de Pod Security-standards te handhaven van Kubernetes 1.23.
Take away:
Bovenstaande best practices helpen je om beter beveiligd te zijn: elke best practice draagt bij aan een veiligere container oplossing. Hoewel het een uitdaging blijft om je beveiliging optimaal te houden, is het vroegtijdig herkennen van mogelijke aanvallen de belangrijkste eerste stap.