Docker Container İzolasyonu ve Güvenlik En İyi Uygulamaları
Docker container ortamlarında sistem seviyesinde izolasyonun nasıl sağlandığı ve üretim ortamlarında alınması gereken kritik güvenlik önlemleri.
Genel Bakış
Docker, uygulamaları bağımlılıklarıyla birlikte paketleyerek taşınabilirliği artıran harika bir teknolojidir. Ancak, varsayılan yapılandırmalarla bırakıldığında, host işletim sistemi ile paylaşılan çekirdek (kernel) mimarisi nedeniyle ciddi güvenlik riskleri barındırabilir.
Sorun
Container'lar varsayılan olarak root yetkisiyle çalışır. Eğer bir saldırgan container içinde bir zafiyet bulup yetki yükseltirse (container breakout), host makineye ve dolayısıyla diğer tüm container'lara erişim sağlayabilir. Bu durum, çok kullanıcılı veya kritik veri barındıran sunucularda kabul edilemez bir risktir.
Çözüm: Yapılandırma ve Adımlar
Bu riski minimize etmek için container'ların "least privilege" (en az ayrıcalık) prensibiyle çalıştırılması gerekir. Dockerfile içerisinde özel bir kullanıcı tanımlayarak root kullanımını engelleyebilirsiniz.
Adım 1: Non-root Kullanıcı Oluşturma
Dockerfile dosyanıza aşağıdaki satırları ekleyerek uygulamayı yetkisiz bir kullanıcıyla çalıştırın:
RUN adduser -D myuser
USER myuser
Adım 2: Read-Only Dosya Sistemi
Container'ı başlatırken dosya sistemini salt okunur (read-only) yaparak zararlı yazılımların sisteme dosya yazmasını engelleyin:
docker run --read-only -d myimage
Teknik Detaylar
Docker, izolasyonu sağlamak için Linux Kernel özellikleri olan Namespaces ve Cgroups kullanır. Namespaces süreçlerin (PID, NET, MNT) birbirinden izole edilmesini sağlarken, Cgroups CPU ve bellek gibi donanım kaynaklarının sınırlandırılmasını yönetir. Ek bir güvenlik katmanı olarak AppArmor veya SELinux profilleri uygulayarak sistem çağrılarını (syscalls) kısıtlayabilirsiniz.
Sonuç
Container güvenliği, uygulamanın geliştirilme aşamasından (shift-left) başlar. Root yetkilerinin alınması, kaynak sınırlandırmaları ve imaj taramaları (vulnerability scanning) ile Docker ortamları geleneksel sanal makineler kadar güvenli hale getirilebilir.