0Pricing
Cloud & IT Cert Prep · Ders

Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması

Gereksiz paketleri kaldırarak, kök kullanıcı olmayan hesaplarla çalıştırarak ve anormal kapsayıcı davranışlarını tespit etmek için çalışma zamanı güvenlik araçlarını (Falco, Sysdig) kullanarak Docker imajlarını sağlamlaştırın.

Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

Kapsayıcı Güvenliğinin Temelleri

Kapsayıcılar, uygulama kodunu ve bağımlılıklarını ana bilgisayarın OS çekirdeğini paylaşan yalıtılmış birimler hâlinde paketler; bu yönüyle tam bir konuk OS içeren sanal makinelerden farklıdır. Bu paylaşım kapsayıcıları hafif ve hızlı hâle getirir, ancak farklı bir güvenlik modeli ortaya çıkarır: bir kapsayıcıdan kaçış açığı, saldırganın kapsayıcıdan çıkıp doğrudan ana bilgisayar çekirdeğine erişmesine ve diğer tüm kapsayıcıları etkilemesine izin verebilir. Kapsayıcı güvenliği üç katmana odaklanır: görüntü (içine nelerin yerleştirildiği), çalışma zamanı (kapsayıcının çalışırken neler yapabildiği) ve orkestrasyon platformu (kapsayıcıların nasıl yönetildiği).

Minimum Temel Görüntüler: Saldırı Yüzeyini Azaltma

Bir kapsayıcı görüntüsüne yüklenen her paket, potansiyel bir saldırı yüzeyidir. Minimum temel görüntüler ilkesi, mümkün olan en küçük temelden başlamayı gerektirir: Alpine Linux (5 MB, minimum sayıda paket), dağıtımsız görüntüler (Google'ın yalnızca çalışma zamanını ve uygulamayı içeren, kabuk veya paket yöneticisi barındırmayan görüntüleri) veya scratch (statik olarak derlenmiş ikili dosyalar için tamamen boş temel). Kabuğu olmayan bir kapsayıcıda kod çalıştırmayı başaran bir saldırgan, saldırısını büyütmek için wget, curl veya diğer araçları kolayca çalıştıramaz — bu ilkeye minimum maruz kalma yoluyla savunma adı verilir.

# Bad: starts from a full OS image
FROM ubuntu:22.04

# Better: minimal Alpine base
FROM alpine:3.18

# Best: distroless for Java apps
FROM gcr.io/distroless/java17-debian11

Kök Olmayan Kullanıcıyla Çalıştırma: İlk Kural

Docker kapsayıcıları varsayılan olarak root (UID 0) olarak çalışır. Saldırgan kapsayıcıdaki uygulamanın bir açığından yararlanırsa kapsayıcı içinde root ayrıcalıkları elde eder. Kapsayıcı bir birimi paylaşıyorsa veya ana bilgisayar bağlamalarına sahipse kapsayıcı içindeki root, ana bilgisayardaki root ile aynı yetkilere sahip olabilir. Çözüm basittir: Dockerfile içinde özel bir kullanıcı oluşturun ve son CMD/ENTRYPOINT'ten önce USER yönergesiyle bu kullanıcıya geçin. Birçok kapsayıcı güvenliği tarama aracı, kök olmayan bir kullanıcı içermeyen her görüntüyü bulgu olarak işaretler.

FROM alpine:3.18
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
COPY --chown=appuser:appgroup app /app/app
USER appuser
CMD ["/app/app"]

Değişmez Kapsayıcılar ve Salt Okunur Dosya Sistemleri

Değişmez kapsayıcılar, dosya sistemi çalışma zamanında değiştirilemeyen kapsayıcılardır. Docker'da --read-only seçeneğinin (veya Kubernetes'te readOnlyRootFilesystem: true seçeneğinin) etkinleştirilmesi, saldırganların diske kötü amaçlı yazılım yazmasını, yapılandırma dosyalarını değiştirmesini veya çalışan bir kapsayıcının içine araçlar yüklemesini engeller. Gerçekten veri yazması gereken uygulamalar (günlükler, geçici dosyalar) geçici yazma işlemleri için belirli tmpfs birimleri bağlayabilir. Değişmez kapsayıcılar, çalışma zamanı durumunun kapsayıcı içindeki değişikliklerden değil, yalnızca görüntü ve yapılandırmadan gelmesi gerektiği ilkesini uygular; böylece CI/CD güvenlik hattınızı aşan değişiklikler engellenir.

# Run container with read-only root filesystem
docker run --read-only \
  --tmpfs /tmp \
  --tmpfs /var/run \
  myapp:latest

İmaj Taraması: Dağıtımdan Önce CVE'leri Bulma

Container imajı tarama araçları, bir Docker imajına yüklenmiş paketleri güvenlik açığı veritabanlarına (NVD, CVE) karşı analiz eder ve bilinen CVE'leri bildirir. Önde gelen tarayıcılar arasında Trivy (Aqua Security tarafından geliştirilmiş, hızlı ve ücretsiz), Grype (Anchore), Snyk Container ve AWS ECR imaj taraması bulunur. Taramalar, CI/CD işlem hattına entegre edilmelidir; böylece kritik veya yüksek önem dereceli CVE'ler içeren tüm imajlar bir kayıt deposuna gönderilmeden önce işlem hattının başarısız olmasına neden olur. Tarayıcılar ayrıca imaj katmanlarına yanlışlıkla gömülmüş gizli bilgileri (API anahtarları, parolalar) de kontrol etmelidir.

# Scan a Docker image with Trivy
trivy image --severity HIGH,CRITICAL myapp:latest

# Fail CI pipeline if vulnerabilities found
trivy image --exit-code 1 --severity CRITICAL myapp:latest

Gizli Bilgilerin Yönetimi: İmaj Katmanlarında Asla Bulundurmayın

Yaygın ve tehlikeli bir hata, gizli bilgileri (API anahtarları, veritabanı parolaları, TLS sertifikaları) Docker imajlarının içine gömmektir — bu işlem, imaja yerleştirilmiş ortam değişkenleriyle veya COPY aracılığıyla eklenen dosyalarla yapılabilir. Bu gizli bilgiler, docker history üzerinden imaja erişimi olan herkes tarafından görülebilir veya imaj katmanları çıkarılarak elde edilebilir. Daha sonraki bir katman dosyayı silse bile dosya imaj geçmişinde kalır. Gizli bilgiler, çalışma zamanında bir gizli bilgi yöneticisinden alınan ortam değişkenleri, Docker secrets veya birim olarak bağlanan Kubernetes Secrets aracılığıyla eklenmelidir.

# Never bake secrets into images
# Bad: ENV DATABASE_PASSWORD='supersecret'

# Good: inject at runtime via environment
docker run -e DATABASE_PASSWORD=$(vault read -field=password secret/db) myapp:latest

# Or use Docker secrets in Swarm/K8s

Çalışma Zamanı Koruması: Falco ve Sistem Çağrısı İzleme

Çalışma zamanı güvenlik araçları, çalışan container'ların davranışlarını izler ve anormal etkinlikleri bildirir veya engeller. Falco (CNCF projesi), sistem çağrılarını yakalamak ve bunları kurallarla karşılaştırmak için eBPF veya çekirdek modüllerini kullanarak Linux çekirdeğine bağlanır. Örneğin bir kural, bir container bir kabuk başlattığında (execve('/bin/sh')), beklenmeyen bir bağlantı noktasında ağ bağlantısı açtığında veya /etc/shadow dosyasını okuduğunda uyarı verebilir. Bu davranış göstergeleri, bilinen hiçbir CVE istismar edilmemiş olsa bile genellikle etkin bir saldırıya işaret eder. Sysdig Secure ve Aqua Security ticari çalışma zamanı koruma platformları sunar.

# Example Falco rule: alert on shell execution in container
# - rule: Shell Spawned in Container
#   desc: A shell was spawned in a container
#   condition: container and proc.name in (bash, sh, zsh)
#   output: Shell spawned (user=%user.name container=%container.name)
#   priority: WARNING

Linux Yetenekleri ve Seccomp Profilleri

Docker container'ları varsayılan olarak birçok Linux yeteneğini kaldırır, ancak çoğu uygulamanın ihtiyaç duyduğundan daha fazlasını yine de korur. Yetenekler, kök kullanıcı ayrıcalıklarını ayrı birimlere böler (ör. CAP_NET_ADMIN, CAP_SYS_ADMIN). En iyi uygulama, tüm yetenekleri kaldırmak ve yalnızca gerekenleri --cap-drop=ALL --cap-add=NET_BIND_SERVICE ile yeniden eklemektir. Seccomp (Güvenli Hesaplama Modu) profilleri, bir container'ın gerçekleştirmesine izin verilen sistem çağrılarını beyaz listeye alır — Docker, yaklaşık 44 tehlikeli sistem çağrısını engelleyen varsayılan bir seccomp profili içerir. Belirli uygulamalar için özel seccomp profilleri bu kapsamı daha da daraltabilir ve uygulamanın meşru olarak hiç kullanmadığı tüm sistem çağrılarını engelleyebilir.

# Drop all capabilities, add only what's needed
docker run \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --security-opt seccomp=/etc/docker/seccomp-custom.json \
  myapp:latest

Container Kayıt Depoları ve İmaj İmzalama

Container kayıt depoları (Docker Hub, AWS ECR, Google Artifact Registry) imajları depolar ve dağıtır. Kayıt deposunun güvenliğini sağlamak için şunlar yapılmalıdır: gönderme sırasında güvenlik açığı taramasını etkinleştirme, gönderme erişimini yalnızca CI/CD hizmet hesaplarıyla sınırlandırma, Sigstore/Cosign veya Docker Content Trust (Notary) kullanarak imaj imzalamayı etkinleştirme; böylece çalışma zamanı ortamları yalnızca güvenilir kaynaklardan gelen, kriptografik olarak imzalanmış imajları çeker ve imaj değişmezliğini yapılandırma; böylece etiketlerin üzerine yazılamaz (saldırganın güvenilir bir :latest etiketini kötü amaçlı bir imajla değiştirdiği etiket değiştirme saldırıları ortadan kaldırılır).

# Sign a container image with Cosign
cosign sign --key cosign.key myregistry.io/myapp:v1.2.3

# Verify signature before deployment
cosign verify --key cosign.pub myregistry.io/myapp:v1.2.3

Container'dan Kaçış Teknikleri ve Savunmalar

Bir container içinde kod çalıştırma yetkisi elde eden saldırganlar, ana makineye ulaşmak için container'dan kaçmayı deneyebilir. Yaygın teknikler şunlardır: güvenlik açığı bulunan ayrıcalıklı container'lardan yararlanma (--privileged ana makineye neredeyse sınırsız erişim sağlar), açığa çıkarılmış Docker yuvalarını kötüye kullanma (bir container'a bağlanan /var/run/docker.sock, ayrıcalıklı container'lar oluşturma da dahil olmak üzere Docker API'sine tam erişim sağlar) ve güvenliği sağlanmamış yetenekler aracılığıyla çekirdek güvenlik açıklarından yararlanma. Savunmalar şunlardır: kesinlikle gerekli olmadıkça ayrıcalıklı modu kullanmamak, Docker yuvasını uygulama container'larına asla bağlamamak, ana makine çekirdeğini güncel tutmak ve güçlü yalıtım gerektiren iş yükleri için gVisor veya Kata Containers kullanmak.

# DANGEROUS: never do this in production
# docker run --privileged -v /:/host myapp:latest

# Check if a container is running privileged
docker inspect mycontainer | grep -i privileged

CIS Docker Benchmark Uyumluluğu

Center for Internet Security (CIS) Docker Benchmark, Docker ana makineleri ve container'ları için arka plan programı yapılandırmasını, imaj temizliğini, container çalışma zamanı ayarlarını ve ağ denetimlerini kapsayan ayrıntılı güvenlik yapılandırma yönergeleri sağlar. Docker Bench for Security gibi araçlar, CIS ölçütüne göre uyumluluk denetimini otomatikleştirerek başarılı/başarısız maddeler için puanlanmış bir rapor oluşturur. Bu ölçütü düzenli aralıklarla çalıştırmak ve CI/CD'ye entegre etmek, güvenlik yapılandırmasındaki sapmaların hızla tespit edilmesini sağlar. Security+ adayları, sınav bağlamında CIS Benchmarks'ın işletim sistemi ve platform güçlendirmesi için başlıca başvuru kaynağı olduğunu bilmelidir.

# Run Docker Bench for Security
docker run -it --net host --pid host --userns host --cap-add audit_control \
  -v /var/lib:/var/lib -v /var/run/docker.sock:/var/run/docker.sock \
  -v /etc:/etc docker/docker-bench-security

Hızlı Kontrol

Bu dersteki CompTIA Security+ (SY0-701) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: minimal temel imajlar ve kök olmayan kullanıcılar, container'laştırılmış iş yüklerinin saldırı yüzeyini ve ayrıcalık düzeyini azaltır; Falco gibi çalışma zamanı koruma araçları, container'lar içindeki etkin saldırılara işaret eden anormal sistem çağrısı örüntülerini algılar ve ayrıcalıklı container'ları asla kullanmamak veya Docker yuvasını uygulama container'larına bağlamamak gerekir; çünkü bu yapılandırmalar container'dan kaçışı mümkün kılar. Sırada RBAC, ağ ilkeleri ve pod güvenlik standartları da dahil olmak üzere Kubernetes güvenliğini inceleyeceğiz.

Sıkça Sorulan Sorular

“Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması” dersi ücretsiz mi?

Evet — “Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması” dersinde ne öğreneceğim?

Gereksiz paketleri kaldırarak, kök kullanıcı olmayan hesaplarla çalıştırarak ve anormal kapsayıcı davranışlarını tespit etmek için çalışma zamanı güvenlik araçlarını (Falco, Sysdig) kullanarak Docker… Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Kapsayıcı Güvenliği: İmajları Sağlamlaştırma ve Çalışma Zamanı Koruması
  2. Kubernetes Güvenliği: RBAC, Ağ Politikaları ve Pod Güvenliği
  3. Sunucusuz Sistem ve İşlev Güvenliği
  4. Kod Olarak Altyapı Güvenlik Taraması
← Cloud & IT Cert Prep Sayfasına Dön