← Radar

Konu: Altyapı3 dk okuma

Docker Hardened Images ücretsiz oldu: Dockerfile'ının ilk satırı neden bu kadar önemli?

Bu neden önemli?

İmajına giren her paket, açıklarıyla birlikte gelir. Kod ne kadar temiz olursa olsun, temel imajdaki gereksiz bir kütüphane tarayıcıda kırmızı satır, saldırgan için de kullanılabilecek bir araç demek. Temeli küçültmek, tedarik zinciri riskini azaltmanın en ucuz yollarından biri.

Her şey FROM satırıyla başlıyor

Bir Dockerfile’ın ilk satırı genelde FROM node:22 ya da FROM python:3.13 gibi bir şey. Senin imajın bu temel imajın (base image) üstüne kuruluyor. İçindeki her paket de sana geçiyor. Yaygın temel imajlar rahatlık için hazırlanmış: shell, paket yöneticisi, curl, derleme araçları, uygulamanın hiç kullanmadığı kütüphaneler. Trivy yazımızda anlattığımız gibi bir tarayıcı bunların her birini sayıyor. Saldırgan da içeri girdiğinde bu araçları kullanabiliyor.

Videonun ana fikri şu: Konteyner güvenliği aslında bir tedarik zinciri sorunu. Temelde bir açık varsa, üstüne kurduğun her imaj onu otomatik olarak miras alıyor.

Hardened image ne demek?

“Sertleştirilmiş” imaj, uygulamayı çalıştırmak için gerekenden fazlasını taşımayan imaj demek. Docker’ın belgelerine göre Docker Hardened Images (DHI) şöyle:

  • Distroless: Shell ve paket yöneticisi gibi gerekli olmayan parçalar çıkarılmış. Docker’a göre imajlar %95’e varan oranda daha küçük.
  • Root değil: Çalışma imajları varsayılan olarak yetkisiz bir kullanıcıyla açılıyor.
  • Tanıdık temel: Debian ve Alpine üzerine kurulu. Yani yabancı bir dağıtıma geçmiyorsun.
  • Kanıtlarıyla geliyor: Her imajda imzalı bir SBOM (içindeki bütün paketlerin listesi), SLSA Build Level 3 düzeyinde derleme kaydı (imajın nerede, nasıl derlendiğinin doğrulanabilir izi), kriptografik imza ve VEX bilgisi var. VEX, listedeki bir CVE’nin bu imajda gerçekten sömürülebilir olup olmadığını söylüyor. Docker, CVE listesini gizlemeden olduğu gibi yayımladığını yazıyor.

DHI Mayıs 2025’te ücretli bir ürün olarak çıkmıştı. 17 Aralık 2025’te Docker, 1.000’den fazla imajı ve Helm chart’ı herkese ücretsiz ve Apache 2.0 lisansıyla açtı. Ücretli kalanlar şunlar: kritik açıklar için yedi günden kısa sürede yama garantisi (SLA), FIPS ve STIG uyumlu imajlar, özelleştirme ve desteği bitmiş sürümler için beş yıla kadar ek yama (ELS).

Nasıl kullanılır?

docker login dhi.io ile Docker hesabınla giriş yapıp FROM dhi.io/python:3.13 yazıyorsun. docker scout compare ile eski imajınla yenisini karşılaştırabilirsin. Videoya göre çoğu projede değişen tek şey bu satır. Ama bazı şeyler kırılabilir:

  • RUN apt-get install çalışmaz. Çalışma imajında paket yöneticisi yok. Belgelerin önerdiği çözüm multi-stage build: Derlemeyi shell ve paket yöneticisi olan -dev varyantında yap, sadece çıkan dosyaları son imaja kopyala.
  • Düşük portlar. Root olmadığı için Kubernetes’te 1024’ün altındaki portlara bağlanamayabilir. Uygulamanı daha yüksek bir portta dinlet.
  • İçine girip bakamazsın. Shell yok. Hata ayıklamak için belgeler Docker Debug’ı öneriyor.

Videoya göre bu sorunlar genelde çalışma anında değil, imaj derlenirken çıkıyor. Bu da düzeltmeyi kolaylaştırıyor.

Sınırı bil: Küçük bir temel, işletim sistemi tarafındaki açıkları azaltır. Senin kodun ve npm, pip bağımlılıkların yine senin sorumluluğunda. Konteynerin kendisinin ne kadar güvenli bir duvar olduğu da ayrı bir konu, onu konteyner güvenlik sınırı yazımızda anlattık.

Sonra ne oldu?

Docker’ın sürüm notlarına göre bugün üç katman var: ücretsiz Community, repo başına 5.000 dolardan başlayan Select ve Enterprise. Mart 2026’da tek tek sertleştirilmiş Alpine paketlerinden oluşan Hardened System Packages duyuruldu (8.000’den fazla paket, Enterprise’a dahil). Nisan ile Eylül arasında bu paketlere Debian desteği, bir Terraform sağlayıcısı ve DHI için uzak bir MCP sunucusu geldi. Ekim 2026 itibarıyla AB’de veri saklama seçeneği erken erişimde.

Düşün

  • Üretimdeki imajlarının içinde shell ve paket yöneticisine gerçekten ihtiyaç var mı?
  • Bir imajın içinde ne olduğunu sorsalar, SBOM’u kaç dakikada gösterebilirsin?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (10, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.