Sobes.tech
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-is USER kä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"]