Sobes.tech
Middle

Zašto se smatra lošom praksom pokretanje kontejnera kao root korisnik u Kubernetesu?

sobes.tech АИ

Одговор од АИ

Pokretanje kontejnera kao root korisnik u Kubernetes-u predstavlja povećana sigurnosna rizika:

  • Visok nivo privilegija: U slučaju kompromitacije kontejnera, napadač dobija root prava unutar kontejnera. To može omogućiti eskalaciju privilegija na host sistemu ili pristup drugim resursima klastera.
  • Pristup fajl sistemu hosta: Bez odgovarajućih ograničenja, root proces unutar kontejnera može imati pristup fajl sistemu čvora na kojem se pokreće, što povećava verovatnoću neovlašćenih promena ili curenja podataka.
  • Ranljivosti jezgra: Root korisnik u kontejneru može iskoristiti ranjivosti Linux jezgra da izađe iz kontejnera i preuzme kontrolu nad hostom.
  • Teškoće u auditu: Praćenje aktivnosti root korisnika je teže, što otežava otkrivanje i istraživanje sigurnosnih incidenata.
  • Nasleđivanje privilegija: Ako se pokreću drugi procesi od strane root korisnika, oni će takođe imati visok nivo privilegija.

Preporučuje se da se prati princip najmanjih privilegija, pokrećući kontejnere od neprivilegovanog korisnika. To se može konfigurisati u manifestu poda pomoću securityContext:

securityContext:
  runAsUser: 1000  # Korišćenje neprivilegovanog korisnika sa ID-jem 1000
  runAsGroup: 3000 # Pripadnost grupi sa ID-jem 3000 (opciono)
  allowPrivilegeEscalation: false # Zabraniti povećanje privilegija
readOnlyRootFilesystem: true # Zabraniti zapis u korenski fajl sistem kontejnera

Takođe, može se koristiti:

  • Pod sigurnosne politike / Pod Security Admission: Za primenu sigurnosnih politika na nivou poda.
  • AppArmor / SELinux: Za dodatnu izolaciju kontejnera.
  • Korišćenje slika kontejnera sa eksplicitno navedenim neprivilegovanim korisnikom: U Dockerfile pomoću instrukcije USER.
# Primer Dockerfile sa navedenim korisnikom
FROM ubuntu:latest
# Kreiranje neprivilegovanog korisnika
RUN useradd -ms /bin/bash myuser
# Prebacivanje na tog korisnika
USER myuser
CMD ["/bin/bash"]