Middle
De ce considerăm o practică proastă rularea unui container ca utilizator root în Kubernetes?
sobes.tech AI
Răspuns de la AI
Kubernetes'te root kullanıcısı olarak konteynerleri başlatmak, artan güvenlik riskleri taşır:
- Yüksek ayrıcalık seviyesi: Konteynerin ele geçirilmesi durumunda, saldırgan konteyner içinde root ayrıcalıkları elde eder. Bu, ana sistemde ayrıcalık yükseltmeye veya kümedeki diğer kaynaklara erişmeye olanak tanıyabilir.
- Ana makinenin dosya sistemine erişim: Uygun kısıtlamalar olmadan, konteyner içindeki root işlemi, çalıştığı düğümün dosya sistemine erişebilir, bu da yetkisiz değişiklikler veya veri sızıntısı olasılığını artırır.
- Yadro açıkları: Kontaynerdeki root kullanıcısı, Linux çekirdeği açıklarını kullanarak konteynerden çıkıp ana bilgisayarı kontrol altına alabilir.
- Denetim zorluğu: Root kullanıcısının yaptığı işlemleri izlemek daha zordur, bu da güvenlik olaylarının tespiti ve soruşturmasını zorlaştırır.
- Privilegi mirası: Eğer diğer süreçler root kullanıcısından başlatılırsa, onlar da yüksek ayrıcalık seviyesine sahip olur.
En iyi uygulama olarak, konteynerleri ayrıcalıksız bir kullanıcıyla çalıştırmak ilkesi benimsenmelidir. Bu, pod manifestinde securityContext kullanılarak yapılandırılabilir:
securityContext:
runAsUser: 1000 # Privilegiyasız bir kullanıcı ID ile
runAsGroup: 3000 # 3000 ID ile gruba ait olma (isteğe bağlı)
allowPrivilegeEscalation: false # Privilegi yükseltmeyi engelle
readOnlyRootFilesystem: true # Konteynerin kök dosya sistemine yazmayı engelle
Ayrıca, şu araçlar kullanılabilir:
- Pod Güvenlik Politikaları / Pod Güvenlik Kabulü: Pod seviyesinde güvenlik politikalarının uygulanması için.
- AppArmor / SELinux: Konteynerlerin ek izolasyonu için.
- Açıkça belirtilmiş privilegiyasız kullanıcıyla konteyner imajlarının kullanımı:
DockerfileiçindeUSERtalimatı ile.
# Kullanıcı belirten Dockerfile örneği
FROM ubuntu:latest
# Privilegiyasız kullanıcı oluşturma
RUN useradd -ms /bin/bash myuser
# Bu kullanıcıya geçiş
USER myuser
CMD ["/bin/bash"]