Middle
Prečo sa považuje za zlú prax spúšťanie kontajnera ako používateľ root v Kubernetes?
sobes.tech AI
Odpoveď od AI
Spustenie kontajnerov ako používateľ root v Kubernetes predstavuje zvýšené bezpečnostné riziká:
- Vysoká úroveň privilégií: V prípade kompromitácie kontajnera získa útočník root práva vo vnútri kontajnera. To môže umožniť eskaláciu privilégií na hostiteľskom systéme alebo prístup k ďalším zdrojom klastru.
- Prístup k súborovému systému hostiteľa: Bez vhodných obmedzení môže root proces vo vnútri kontajnera mať prístup k súborovému systému uzla, na ktorom beží, čo zvyšuje pravdepodobnosť neoprávnených zmien alebo úniku dát.
- Zraniteľnosti jadra: Root používateľ v kontajneri môže využiť zraniteľnosti Linux jadra na opustenie kontajnera a získanie kontroly nad hostiteľom.
- Ťažkosti pri audite: Sledovanie aktivít root používateľa je zložitejšie, čo sťažuje odhalenie a vyšetrovanie bezpečnostných incidentov.
- Dedičstvo privilégií: Ak sú spustené iné procesy od root používateľa, budú mať tiež vysokú úroveň privilégií.
Odporúča sa dodržiavať princíp minimálnych privilégií a spúšťať kontajnery s neprivilegovaným používateľom. To je možné nakonfigurovať v manifeste podu pomocou securityContext:
securityContext:
runAsUser: 1000 # Použitie neprivilegovaného používateľa s ID 1000
runAsGroup: 3000 # Priradenie ku skupine s ID 3000 (voliteľné)
allowPrivilegeEscalation: false # Zákaz eskalácie privilégií
readOnlyRootFilesystem: true # Zákaz zápisu do koreňového súborového systému kontajnera
Okrem toho je možné použiť:
- Pod Security Policies / Pod Security Admission: Na uplatnenie bezpečnostných politík na úrovni podu.
- AppArmor / SELinux: Na dodatočnú izoláciu kontajnerov.
- Použitie obrazov kontajnerov s explicitne uvedeným neprivilegovaným používateľom: V
Dockerfilepomocou inštrukcieUSER.
# Príklad Dockerfile s určením používateľa
FROM ubuntu:latest
# Vytvorenie neprivilegovaného používateľa
RUN useradd -ms /bin/bash myuser
# Prechod na tohto používateľa
USER myuser
CMD ["/bin/bash"]