Konteyner teknolojileri uygulamalarımızı kolayca dağıtmamızı sağlasa da, varsayılan Docker ayarları güvenlik açıklarına davetiye çıkarabilir. Bu rehberde, üretim ortamındaki (production) Docker konteynerlerinizi nasıl sıkılaştıracağınızı ve güvenli hale getireceğinizi adım adım inceliyoruz.
1. Root Olmayan (Non-Root) Kullanıcı Kullanımı
Varsayılan olarak Docker konteynerleri root yetkileriyle çalışır. Konteyner içinde oluşabilecek bir sızma durumunda saldırganın ana makineye (host) erişmesini engellemek için her zaman yetkisiz bir kullanıcı tanımlamalısınız.
# (c) CodeMareFi - codemarefi.com.tr
FROM node:18-alpine
# Güvenlik için uygulama kullanıcısı oluşturuluyor
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
WORKDIR /home/appuser/app
COPY --chown=appuser:appgroup . .
CMD ["node", "server.js"]
2. Salt Okunur Dosya Sistemi (Read-Only Filesystem)
Konteynerlerin çalışma anında dosya sistemi üzerinde değişiklik yapmasını engelleyerek, kötü amaçlı yazılımların kod enjekte etmesini önleyebilirsiniz. Konteyneri başlatırken --read-only parametresini kullanmak en iyi güvenlik pratiklerinden biridir.
# Konteyneri salt okunur modda başlatma komutu
docker run --read-only --tmpfs /tmp -d my-secure-app
3. Image Taraması (Vulnerability Scanning)
Kullanacağınız base image'ların bilinen açıklar barındırmadığından emin olmak için düzenli olarak güvenlik taraması yapmalısınız. Docker CLI üzerinde dahili olarak gelen Trivy veya Snyk araçlarıyla bu işlemi otomatikleştirebilirsiniz.
