DevOps-bootcamp · Lektion

Containersäkerhet under körning

Implementera bästa praxis för att säkra containers under körning, bland annat gällande användarbehörigheter och resursgränser.

Lektion 2 av 412 steg

Containersäkerhet under körning är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Grunderna i körningssäkerhet

Välkomna till körningssäkerhet för containrar! Det är viktigt att bygga säkra avbilder, men vad händer när containern väl körs?

Den här lektionen fokuserar på bästa praxis för att skydda era applikationer medan de är aktiva och begränsa möjliga skador från sårbarheter eller attacker.

Containersäkerhet under körning — illustration 1

Principen om minsta privilegium

Ett grundläggande säkerhetskoncept är principen om minsta privilegium. Den innebär att en entitet (till exempel en container eller användare) bara får de behörigheter som absolut krävs för att utföra sin funktion, och inga fler.

Genom att tillämpa detta minskar ni attackytan och begränsar effekten om en container utsätts för intrång.

Undvik att köra som root

Som standard körs processer i en Docker-container som användaren root, som har fullständiga administrativa behörigheter i containern.

  • Risk: Om en angripare tar kontroll över en container med root-behörighet kan angriparen potentiellt utnyttja sårbarheter i Docker-daemonen eller kärnan för att få root-åtkomst till värdsystemet.
  • Bästa praxis: Kör alltid containerprocesser som en användare som inte är root.

Kör som en icke-root-användare

Ni kan ange en användare (med namn eller UID) för containerprocessen med flaggan --user tillsammans med docker run. Här kör vi kommandot id i en Alpine-container som användaren 1000.

Om användaren 1000 inte finns använder Docker ändå detta UID.

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

Förstå Linux-funktioner

Traditionella Linux-system har en root-användare med principen ”allt eller inget”. Linux-funktioner delar upp roots kraftfulla behörigheter i mindre, separata enheter.

Det gör att en process bara kan få de specifika root-liknande befogenheter den behöver (t.ex. att binda till låga portar eller få rå nätverksåtkomst), utan att ha fullständig root-behörighet.

Ta bort onödiga funktioner

Docker-containrar körs som standard med en stor uppsättning funktioner. Ni kan ta bort onödiga funktioner med --cap-drop för att ytterligare begränsa vad en container kan göra.

Här tar vi bort funktionen NET_RAW. Kommandot ping, som kräver NET_RAW, misslyckas då, vilket visar begränsningen.

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

Kontrollera containerresurser

Containrar delar värdens kärna och resurser. Okontrollerad resursanvändning i en container kan leda till en tjänstenekande attack (DoS) mot andra containrar eller till och med själva värden.

  • CPU-begränsningar: Förhindrar att en container lägger beslag på alla CPU-cykler.
  • Minnesbegränsningar: Hindrar en container från att använda allt tillgängligt RAM och förebygger instabilitet i systemet.

Inför resursbegränsningar

Ni kan ange gränser för CPU och minne direkt med docker run. Det här exemplet begränsar minnet till 128 MB och CPU-användningen till 0,5 (hälften av en CPU-kärna).

Det säkerställer att containern uppför sig korrekt och inte svälter ut andra processer.

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

Filsystem i skrivskyddat läge

Många applikationer behöver inte skriva till sitt rotfilsystem efter starten. Genom att göra filsystemet skrivskyddat får ni betydande säkerhetsfördelar:

  • Förhindrar manipulering: En angripare kan inte ändra befintliga filer eller skriva nya skadliga filer.
  • Begränsar beständighet: Alla ändringar som görs är temporära och försvinner när containern startas om.
  • Främjar oföränderlighet: Stödjer en design där containrar är förbrukningsbara och konfigurationen är extern.

Driftsätt skrivskyddade containrar

Använd flaggan --read-only när ni kör en container. Alla försök att skriva till containerns filsystem (utanför uttryckligen monterade volymer) misslyckas.

Prova att skapa en fil i den här skrivskyddade containern:

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

Kontroll av körningssäkerhet

Vilka av följande är bra metoder för att säkra containrar under körning?

Sammanfattning av körningssäkerhet

Bra jobbat! Ni har lärt er hur ni kan förbättra containersäkerheten medan containrar körs:

  • Minsta privilegium: Ge endast nödvändiga behörigheter.
  • Icke-root-användare: Undvik att köra processer som root.
  • Funktioner: Ta bort onödiga Linux-funktioner.
  • Resursbegränsningar: Kontrollera CPU- och minnesanvändningen.
  • Skrivskydd: Gör filsystem oföränderliga för att förhindra skrivningar.

Dessa metoder minskar avsevärt attackytan och effekten av möjliga intrång. Fortsätt att öva!

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Containersäkerhet under körning” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Containersäkerhet under körning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Containersäkerhet under körning”?

Implementera bästa praxis för att säkra containers under körning, bland annat gällande användarbehörigheter och resursgränser. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Containersäkerhet under körning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Säkerhetsskanning av containeravbildningar
  2. Containersäkerhet under körning
  3. Secrets-hantering och RBAC
  4. Nätverkspolicyer och nätverk med minsta privilegium
← Tillbaka till DevOps-bootcamp