Middle
Miks peetakse halva praktikaks konteineri käivitamist root-kasutajana Kubernetesis?
sobes.tech AI
Vastus AI-lt
Konteinerite käivitamine root-kasutajast Kubernetesis suurendab turvalisusriske:
- Kõrge privileegide tase: Kui konteiner on kompromiteeritud, saab pahatahtlik isik konteineris root õigused. See võib võimaldada privileegide eskaleerimist host-süsteemis või juurdepääsu teistele klastri ressurssidele.
- Juurdepääs hosti failisüsteemile: Ilma nõutavate piiranguteta võib konteineri sees olev root-protsess pääseda hosti failisüsteemile, suurendades ebaseaduslike muudatuste või andmelekkimise riski.
- Kerneli haavatavused: Root kasutaja konteineris võib kasutada Linuxi kerneli haavatavusi, et väljuda konteinerist ja saada kontroll hosti üle.
- Auditite keerukus: Root kasutaja tegevuste jälgimine on keerulisem, mis raskendab turvajuhtumite avastamist ja uurimist.
- Privileegide pärandumine: Kui teised protsessid käivitatakse põhilisest kasutajast, omavad nad samuti kõrget privileegide taset.
Soovitatav on järgida minimaalsete privileegide põhimõtet, käivitades konteinerid mitte-privilegeeritud kasutajast. Seda saab konfigureerida podi manifestis, kasutades securityContext:
securityContext:
runAsUser: 1000 # Mitte-privilegeeritud kasutaja kasutamine ID-ga 1000
runAsGroup: 3000 # Rühma kuuluvus ID-ga 3000 (valikuline)
allowPrivilegeEscalation: false # Privilege eskaleerimise keeld
readOnlyRootFilesystem: true # Põhifailisüsteemi kirjutamise keeld
Lisaks saab kasutada:
- Pod Security Policies / Pod Security Admission: turvapoliitikate rakendamiseks podi tasandil.
- AppArmor / SELinux: täiendav isolatsioon.
- Kasutades konteinerpiltides selgelt määratletud mitte-privilegeeritud kasutajat:
Dockerfile-isUSERkäsuga:
# Näidiss Dockerfile, kus on kasutaja määratletud
FROM ubuntu:latest
# Mitte-privilegeeritud kasutaja loomine
RUN useradd -ms /bin/bash myuser
# Üleminek loodud kasutajale
USER myuser
CMD ["/bin/bash"]