Docker en de basis van DevOps · Les

Containerbeveiliging tijdens runtime

Pas best practices toe om containers tijdens runtime te beveiligen, waaronder gebruikersrechten en resourcelimieten.

Les 2 van 412 stappen

Containerbeveiliging tijdens runtime is een gratis Docker en de basis van DevOps-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Docker en de basis van DevOps. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.

Essentiële runtimebeveiliging

Welkom bij Runtime Container Security! Veilige images bouwen is cruciaal, maar wat gebeurt er zodra uw container draait?

Deze les richt zich op best practices om uw toepassingen actief te beschermen en mogelijke schade door kwetsbaarheden of aanvallen te beperken.

Containerbeveiliging tijdens runtime — illustratie 1

Principe van minimale bevoegdheden

Een fundamenteel beveiligingsconcept is het principe van minimale bevoegdheden. Dit betekent dat u een entiteit (zoals een container of gebruiker) alleen de machtigingen geeft die absoluut nodig zijn om de functie ervan uit te voeren, en niets meer.

Door dit toe te passen verkleint u het aanvalsoppervlak en beperkt u de gevolgen als een container wordt gecompromitteerd.

Niet als root uitvoeren

Standaard worden processen in een Docker-container uitgevoerd als de gebruiker root, die binnen de container volledige beheerdersrechten heeft.

  • Risico: Als een aanvaller controle krijgt over een container met root-rechten, kan die mogelijk kwetsbaarheden in de Docker-daemon of kernel misbruiken om root-toegang op het hostsysteem te verkrijgen.
  • Best practice: Voer uw containerprocessen altijd uit als een niet-rootgebruiker.

Uitvoeren als niet-rootgebruiker

U kunt met de vlag --user bij docker run een gebruiker (op naam of UID) voor uw containerproces opgeven. Hier voert u de opdracht id uit in een Alpine-container als gebruiker 1000.

Als gebruiker 1000 niet bestaat, gebruikt Docker die UID nog steeds.

docker run --rm -it --user 1000 alpine id

Linux-mogelijkheden begrijpen

Traditionele Linux-systemen hebben een rootgebruiker met alles-of-nietsrechten. Linux Capabilities splitsen de krachtige rootrechten op in kleinere, afzonderlijke eenheden.

Hierdoor kan een proces alleen de specifieke, op root lijkende bevoegdheden krijgen die het nodig heeft (bijvoorbeeld binden aan lage poorten of toegang tot het onbewerkte netwerk), zonder volledige rootrechten te hebben.

Onnodige mogelijkheden verwijderen

Docker-containers worden standaard uitgevoerd met een grote set mogelijkheden. U kunt onnodige mogelijkheden verwijderen met --cap-drop om verder te beperken wat een container kan doen.

Hier verwijderen we de mogelijkheid NET_RAW. De opdracht ping, die NET_RAW vereist, mislukt vervolgens. Daarmee wordt de beperking gedemonstreerd.

docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"

Containerresources beheren

Containers delen de kernel en resources van de host. Ongecontroleerd resourcegebruik door één container kan leiden tot een Denial of Service (DoS) voor andere containers of zelfs voor de host zelf.

  • CPU-limieten: Voorkom dat een container CPU-cycli monopoliseert.
  • Geheugenlimieten: Voorkom dat een container al het beschikbare RAM-geheugen gebruikt en zo instabiliteit van het systeem veroorzaakt.

Resourcelimieten instellen

U kunt rechtstreeks met docker run limieten instellen voor CPU en geheugen. In dit voorbeeld wordt het geheugen beperkt tot 128 MB en het CPU-gebruik tot 0,5 (de helft van één CPU-kern).

Zo gedraagt uw container zich netjes en verhongeren andere processen niet.

docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"

Bestandssystemen alleen-lezen

Veel toepassingen hoeven na het opstarten niet naar hun rootbestandssysteem te schrijven. Door het bestandssysteem alleen-lezen te maken, krijgt u aanzienlijke beveiligingsvoordelen:

  • Voorkomt manipulatie: Een aanvaller kan bestaande bestanden niet wijzigen en geen nieuwe schadelijke bestanden schrijven.
  • Beperkt persistentie: Alle aangebrachte wijzigingen zijn tijdelijk en gaan verloren wanneer de container opnieuw wordt gestart.
  • Dwingt onveranderlijkheid af: Bevordert een ontwerp waarbij containers wegwerpbaar zijn en de configuratie extern wordt beheerd.

Alleen-lezencontainers implementeren

Gebruik de vlag --read-only wanneer u een container uitvoert. Elke poging om naar het bestandssysteem van de container te schrijven (buiten expliciet aangekoppelde volumes) mislukt.

Probeer een bestand te maken in deze alleen-lezencontainer:

docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"

Controle van runtimebeveiliging

Welke van de volgende opties zijn goede werkwijzen om containers tijdens runtime te beveiligen?

Samenvatting van runtimebeveiliging

Goed gedaan! U hebt geleerd hoe u de beveiliging van containers tijdens het uitvoeren ervan kunt verbeteren:

  • Minimale bevoegdheden: Ken alleen noodzakelijke machtigingen toe.
  • Niet-rootgebruikers: Voorkom dat processen als root worden uitgevoerd.
  • Mogelijkheden: Verwijder onnodige Linux-mogelijkheden.
  • Resourcelimieten: Beperk het CPU- en geheugengebruik.
  • Alleen-lezen: Maak bestandssystemen onveranderlijk om schrijven te voorkomen.

Deze werkwijzen verkleinen het aanvalsoppervlak en de gevolgen van mogelijke compromittering aanzienlijk. Blijf oefenen!

Gratis beginnen

Leer Docker en de basis van DevOps met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Containerbeveiliging tijdens runtime” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Docker en de basis van DevOps, waaronder “Containerbeveiliging tijdens runtime”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.

Wat leer ik in “Containerbeveiliging tijdens runtime”?

Pas best practices toe om containers tijdens runtime te beveiligen, waaronder gebruikersrechten en resourcelimieten. Je oefent met Docker en de basis van DevOps door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Docker en de basis van DevOps te beginnen?

Ervaring vooraf is niet nodig. Docker en de basis van DevOps op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Containerbeveiliging tijdens runtime”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Docker en de basis van DevOps?

Ja. Elke les over Docker en de basis van DevOps bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Beveiligingsscanning van containerimages
  2. Containerbeveiliging tijdens runtime
  3. Secretsbeheer en RBAC
  4. Netwerkpolicies en networking met minimale rechten
← Terug naar Docker en de basis van DevOps