Sobes.tech
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ı: Dockerfile içinde USER talimatı 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"]