Bu proje, modern DevSecOps prensipleri kullanılarak, güvensiz bir konteyner yapısının nasıl "Hardened" (Sertleştirilmiş) ve üretim ortamına uygun hale getirildiğini gösteren bir laboratuvar çalışmasıdır.
Standart Docker imajlarının (örn: node:latest) barındırdığı 1600+ güvenlik açığını analiz etmek ve Google Distroless mimarisi ile saldırı yüzeyini (Attack Surface) minimize etmektir.
Trivy güvenlik tarayıcısı ile yapılan analiz sonuçları:
| Durum | Taban İmaj | Toplam Açık (CVE) | Kritik/Yüksek |
|---|---|---|---|
| ❌ Öncesi (Standart) | node:latest (Debian Full) |
1675 | 211 |
| ✅ Sonrası (Hardened) | gcr.io/distroless/nodejs22 |
12 | 0 |
Başarı: Saldırı yüzeyi %99.3 oranında azaltıldı.
Tek bir monolitik yapı yerine, "Builder" ve "Runtime" aşamaları ayrıldı. Derleme araçları (GCC, Python, NPM) son imajda bırakılmadı.
İşletim sistemi olmayan (OS-less) imaj kullanıldı.
- 🚫 Shell Yok:
/bin/shveya/bin/basholmadığı için RCE (Uzaktan Kod Yürütme) saldırıları engellendi. - 🚫 Paket Yöneticisi Yok:
apt/apkolmadığı için saldırgan yeni araç indiremez.
Konteyner, "en az ayrıcalık" ilkesine göre sınırlandırıldı:
- Non-Root User: Uygulama
rootyerine kısıtlı kullanıcı ile çalışıyor. - Read-Only Filesystem: Kök dosya sistemi salt okunur yapıldı.
- Capabilities Dropped: Tüm Linux yetenekleri (
ALL) düşürüldü.
Bu güvenli yapıyı test etmek için:
# 1. İmajı Oluştur
docker build -t secure-app:v1 .
# 2. Salt Okunur ve Kısıtlı Yetkilerle Başlat
docker run --rm -d --read-only --cap-drop=ALL --user nonroot -p 3000:3000 secure-app:v1