Sobes.tech
Middle

Miért rossz gyakorlat root felhasználóként futtatni egy konténert Kubernetesben?

sobes.tech MI

Válasz az MI-től

A Kubernetesben a root felhasználóként történő konténerindítás növelt biztonsági kockázatokat jelent:

  • Magas privilégiumszint: A konténer kompromittálása esetén a támadó root jogokat szerez a konténeren belül. Ez lehetővé teheti a privilégiumok emelését a gazda rendszeren vagy más erőforrásokhoz való hozzáférést a klaszteren belül.
  • Hozzáférés a gazda fájlrendszeréhez: Megfelelő korlátozások nélkül a konténerben lévő root folyamat hozzáférhet a futó csomópont fájlrendszeréhez, növelve az engedély nélküli módosítások vagy adatszivárgás kockázatát.
  • Kernel sebezhetőségek: A konténerben lévő root felhasználó kihasználhatja a Linux kernel sebezhetőségeit, hogy kijusson a konténerből és átvegye az irányítást a gazda felett.
  • Auditálás nehézsége: A root felhasználó tevékenységeinek nyomon követése nehezebb, ami megnehezíti a biztonsági események felismerését és kivizsgálását.
  • Öröklődő privilégiumok: Ha más folyamatokat a root felhasználó indít, azok is magas privilégiumszinttel rendelkeznek.

Ajánlott követni a minimális privilégiumok elvét, és nem privilégiumos felhasználóval futtatni a konténereket. Ezt a pod manifestben a securityContext segítségével lehet konfigurálni:

securityContext:
  runAsUser: 1000  # Nem privilégiumos felhasználó használata ID-vel
  runAsGroup: 3000 # Csoporthoz tartozás ID-vel 3000 (opcionális)
  allowPrivilegeEscalation: false # Privilegium emelés tiltása
readOnlyRootFilesystem: true # A konténer gyökér fájlrendszeréhez való írás tiltása

Továbbá használható:

  • Pod Security Policies / Pod Security Admission: Biztonsági politikák alkalmazása pod szinten.
  • AppArmor / SELinux: További izoláció a konténerek számára.
  • Explicit nem privilégiumos felhasználóval ellátott konténerképek használata: A Dockerfile-ban az USER utasítással.
# Példa Dockerfile felhasználó megadásával
FROM ubuntu:latest
# Nem privilégiumos felhasználó létrehozása
RUN useradd -ms /bin/bash myuser
# Átváltás erre a felhasználóra
USER myuser
CMD ["/bin/bash"]