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 azUSERutasí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"]