Production Container Güvenliği: Docker Image'dan Runtime'a

Production Container Güvenliği: Docker Image'dan Runtime'a

Production Container Güvenliği: Docker Image'dan Runtime'a

Container izolasyonu güvenlik sınırlarının tamamı değildir. Savunmasız paket içeren büyük bir image, root çalışan süreç veya image içine gömülmüş parola production ortamında ciddi risk oluşturur. Güvenli yaklaşım build aşamasından registry'ye, deployment manifestinden runtime politikasına kadar birbirini tamamlayan kontroller kurar.

Image yüzeyini küçültün

Multi-stage build yalnızca çalışması gereken çıktıyı final image'a taşır. Paket yöneticileri, compiler ve kaynak kod production katmanında kalmaz. Sabit bir tag yerine digest kullanmak hangi binary'nin yayınlandığını kesinleştirir. Base image güncellemeleri düzenli taranmalı, fakat güncelleme yine test ve imzalama hattından geçmelidir.

Güvenli .NET container örneği

Bu Dockerfile uygulamayı ayrı aşamada derler ve final aşamada ayrı, yetkisiz bir kullanıcıyla çalıştırır. Port 8080 için root yetkisine ihtiyaç yoktur.

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish Blog.Web -c Release -o /app --no-restore

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
RUN adduser --disabled-password --home /app appuser
COPY --from=build --chown=appuser:appuser /app .
USER appuser
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
ENTRYPOINT ["dotnet", "Blog.Web.dll"]

Connection string veya API anahtarı Dockerfile, environment dosyası ya da image layer içinde bulunmamalıdır. Deployment platformunun secret store özelliği kullanılmalı ve uygulama bu değerleri çalışma anında almalıdır. Dosya sistemi mümkünse read-only bağlanmalı, gerekli yazma dizinleri ayrı volume olarak tanımlanmalıdır.

Yayın kontrol listesi

  1. Final image'ı minimal runtime tabanında ve non-root kullanıcıyla çalıştırın.
  2. Image'ı CVE taramasından geçirip kritik bulgular için yayını durdurun.
  3. SBOM üretin, image'ı imzalayın ve deployment sırasında imzayı doğrulayın.
  4. Secret değerlerini image dışında tutun ve düzenli rotation uygulayın.
  5. CPU, memory, read-only filesystem ve Linux capability sınırlarını açıkça belirleyin.

Sık yapılan hatalar

  • latest tag kullanarak hangi image sürümünün çalıştığını belirsiz bırakmak.
  • Uygulamayı root çalıştırıp gereksiz Linux capability'lerini açık tutmak.
  • Sadece image taraması yapıp runtime ağ ve izin politikalarını ihmal etmek.

Sonuç

Container güvenliği tek bir tarama aracından değil, küçük ve doğrulanabilir katmanlardan oluşur. Minimal image saldırı yüzeyini, non-root kullanıcı etki alanını, secret store bilgi sızıntısını azaltır. İmzalama ve SBOM ise çalışan yazılımın kaynağını izlenebilir kılar. Bu kontroller CI/CD hattının otomatik ve zorunlu parçaları olmalıdır.

0 Yorumlar

Yorum Yaz

E-posta adresiniz yayınlanmayacaktır.