Güvenli Docker konteynerleri Uygulama: En İyi Uygulamalar ve Tasarım Stratejileri

Docker konteynerleri, hafif, taşınabilir ve verimli ortamlar sağlayarak modern uygulama dağıtımını devrimleştirdi. Organizasyonlar giderek artan bir şekilde saldırı akışlarını kolaylaştırmak için konteynerlemeyi benimsemiştir, bu kapsayıcıların güvenliği kritik bir endişe haline geldi.

Docker Konteyner Güvenliği Temelleri Anlamak

Docker'in güvenlik sorunlarının kendi setine sahiptir ve Docker konteynerlerinin güvenliğini sağlamak, sadece uygulamayı reddetmek değil, tüm ekosistemi kapsayan kapsamlı bir yaklaşım içerir. Belirli güvenlik önlemleri uygulamadan önce, Docker'in güvenlik modelini anlamak ve geleneksel sanallaştırma yaklaşımlarından nasıl farklı olduğunu anlamak önemlidir.

Docker's Security Architecture

Docker'in güvenlik yaklaşımı, geleneksel sanallaştırma yöntemlerinden farklıdır, öncelikle ev sahibi OS çekirdeğine olan bağımlılığı nedeniyle.Docker, işlem izolasyonu için çekirdek isim alanlarından yararlanır. Namespaces, bir konteyner içinde çalışan ilk ve en basit izolasyon biçimini sağlar ve daha az etkileyemez, diğer bir konteynerde çalışan süreçler veya ev sahibi sistemde çalışır.

Docker konteynerleri hafif ve taşınabilirdir. Ancak ev sahibi işletim sistemini paylaşıyorlar. Bu mimari eşsiz güvenlik sorunları yaratır. Bu paylaşılan çekirdek modelini anlamak önemlidir, çünkü ev sahibi çekirdekteki tüm konteynerleri bu sistem üzerinde çalıştırabilir.

Her konteyner aynı zamanda kendi ağ yığınına da girer, yani bir konteynerin diğer konteynerlerin soketlerine veya arayüzlere ayrıcalıklı erişimi elde edemeyeceği anlamına gelir. Elbette, ev sahibi sistem buna göre ayarlarsa, konteynerler ilgili ağ arabirimleri aracılığıyla birbirleriyle etkileşime girebilir - tıpkı dış ev sahipliği ile etkileşime girebilirler gibi.

Ortak Sorumluluk Modeli

Docker güvenlik, Docker Compose, namespaces ve Docker Content Trust (DCT) gibi özellikleri, konteyner runtime, ağ ve depolama için güvenli yapılandırmaları kullanarak, düzenli olarak konteyner görüntülerini ve bilinen açıkları ele almak ve çalıştırma zamanı aktiviteleri ve rol tabanlı erişim kontrollerini uygulamak için uygulamaktadır.

Bu paylaşılan sorumluluk modelinin her iki tarafında da, konteynerli iş yüklerini açığa çıkarabilir.Çevrelerini zorlaştırmaya veya güncel bileşenlerini tutmayanlar özellikle sömürü riski altında. Organizasyonlar, Docker'in araçları ve platformu sağladığını anlamalıdır, ancak güvenlik önlemleri uygulamak, gelişim ve operasyonların sorumluluğudur.

Securing Docker konteynerleri için Temel En İyi Uygulamalar

Konteyner güvenliği tek bir araç veya bir zaman denetim değildir. Tüm boru hattınızda katmanlanmış bir uygulama seti - Dockerfile'den, CI'ye kadar, onu yapan runtime'ya kadar, konteynerleşme yığınının birden çok katmanına dikkat gerektirir.

Minimal ve Güvenilen Base Images

Her zaman doğrulanmış, en az temel görüntülerden konteyner inşa edin. Resmi ve sertleştirilmiş görüntüler daha güvenli başlangıç noktalarıdır. Temel görüntü seçimi konteynerin güvenlik duruşunuzu önemli ölçüde etkiler. Büyük görüntüler daha fazla paket, kütüphaneler ve saldırganların kullanabileceği potansiyel açıklar içerir.

Alp, CVE'leri azaltan ve tarama sonuçlarını azaltan daha az paket içerir.Sürsüz görüntüler veya Alp Linux'ı saldırı yüzeyinin en aza indirmek için temel görüntüler olarak kullanmayı düşünün. Distroless görüntüler sadece uygulamanızı ve çalışma süre bağımlılıklarını, paket yöneticileri hariç, kabukları ve diğer hizmetlerinizi içerir.

Resmi Docker görüntülerinin kullanılması, güvenlik bakımı için kritik öneme sahiptir, çünkü bu görüntüler düzenli olarak güncellenir ve güvenilir varlıklar tarafından ezilir. Bu yaklaşım, mevcut açık veya kötü niyetli kodlarla konteyner dağıtma riskini önemli ölçüde azaltır. Her zaman üs görüntülerinizin kaynağını doğrulayın ve Docker Hub veya diğer güvenilir kayıtlardan resmi görüntüler tercih edin.

Pin Image Versions and avoid Latest Tags

En son kullanım tahmin edilemez hale gelir. Bu, bildirim olmadan kırılma değişiklikleri veya güvenlikleri ortaya koyan güncellenmiş bir versiyon çekebilir.GÖRT:0)Telatest[DÜT:1) etiketi kullanarak her zaman belirli baz görüntülerin isimlerini sindirim veya sürüm etiketleri ile çizebilir.

Pinning image versiyonları, beklenmedik güvenlik regresyonlarını garanti eder ve beklenmedik bir güvenlik regresyonlarını engeller. tam bir sürüm veya sindirdiğinizde, inşalarınızın her seferinde aynı temel imajı kullanacağını garanti edersiniz, güvenlikleri takip etmek ve sistematik olarak yönetmek için daha kolay hale getirir.

# Bad practice
FROM node:latest

# Good practice - pin specific version
FROM node:18.16.0-alpine

# Best practice - use digest for immutability
FROM node:18.16.0-alpine@sha256:a1e4e58...

Konteynerleri -Root Kullanıcıları

Bir Dockerfile en iyi uygulama konteynerleri kök olarak çalıştırmaktan kaçınmak içindir (UID 0). konteynerin kök olarak uygulanması gereken birkaç işlem vardır, bu yüzden ABD'nin varsayılan etkili UID'yi değiştirmesini unutmayın.Kaç olarak konteynerleri yönetmek önemli güvenlik riskleri oluşturur çünkü bir saldırganın konteyneri tehlikeye atması durumunda, kök seviyesindeki erişimi kazanırlar.

No-root olarak koşmak, Dockerfile'de birkaç adım daha gerektirebilir, çünkü şimdi ABD'deki talimatda belirtilen kullanıcının konteyner içinde var olduğundan ve işlem okunacağı yerlerde uygun dosya sistemi izinler vermeniz gerekir.

FROM alpine:3.18

# Create a non-root user
RUN addgroup -g 1000 appgroup &&
 adduser -D -u 1000 -G appgroup appuser

# Set ownership of application directories
RUN chown -R appuser:appgroup /app

# Switch to non-root user
USER appuser

WORKDIR /app
COPY --chown=appuser:appgroup . .

CMD ["./myapp"]

Ayrıca, uygulama ortamınız varsayılan olarak kök olarak çalışan konteynerleri engelleyebilir (örneğin, Openchange ek güvenlik bağlam kısıtlamaları gerektirir). Birçok Kubernetes dağıtımları ve konteyner platformları, uyumluluk için bu uygulama gerekli hale getirir.

Implement Read-Only File Systems

Sadece konteyner dosyasının tamamını okutulan ve sadece basılı dosyaların tamamının okunuşuyla birlikte çalıştırılabilir yönetmenler, bu güvenlik önlemleri, konteyner içindeki dosyaları değiştirmelerini engeller, erişim kazanırlarsa bile.

Bu, okuma-sadece dosya sistemi kuralı uygular. Bir konteyner okuduğunuzda unutmayın, uygulama artık diske yazamaz. Uygulamanız geçici dosyaları yazmak zorundaysa (örneğin loglar veya önbellek gibi), geçici bir hacim araymalısınız.

docker run -d
 --read-only
 --tmpfs /tmp:rw,noexec,nosuid,size=64m
 --tmpfs /var/run:rw,noexec,nosuid,size=32m
 nginx:alpine

Kalıcı depolama gerektiren uygulamalar için, kök dosya sistemini kullanırken belirli yönetmenler için isim hacimleri kullanın.Bu yaklaşım güvenlik sınırlarını korurken gerekli yaz erişim sağlar.

Başarısız Linux Yetenekleri

Cap tasks, 1024'ün altındaki bir limana bağlanmak için gereken ikili "root/non-root" dichotomy'yi iyi bir erişim kontrol sistemi haline getiriyor. neredeyse tüm temel ayrıcalıklar genellikle gerekli olan tüm özel alanlar için.

Kullanıcıların için en iyi uygulama, süreçleri için açıkça gerekli olan tüm yetenekleri ortadan kaldırmak olacaktır. Linux yetenekleri, eski kök / küme ikilisini değiştirmiş olan iyi izinlerdir. Docker, konteynerlere ihtiyaç duydukları varsayılan bir set verir.

docker run -d
 --cap-drop=ALL
 --cap-add=NET_BIND_SERVICE
 --security-opt=no-new-privileges:true
 myapp:latest

[FONT:0] Yeni-privilegeler[[Dönemli: 1) Bayrak, belirli veya ayarlı binler aracılığıyla ek ayrıcalıklar elde etmeyi önleyecek şekilde, ayrıcalıklara karşı koruma katmanını önleyecek.

Gelişmiş Güvenlik Tasarımı Stratejileri

Bu yükün çoğu, sol güvenliği değiştirmek, gelişim iş akışınızda mümkün olduğunca kısa sürede potansiyel sorunları çözmekle engellenebilir.Gelişmekte olan güvenlik, riskleri azaltır ve yeniden aracılaştırır.

Implement Container Image Scanning

Düzenli konteyner kırılganlığı tarama önemlidir. Güvenli bir boru hattında, Docker kırılgan tarama CI/CD sürecinizin zorunlu bir adım olması ve herhangi bir görüntünün üretim kümelerine girmeden önce taranması ve onaylanması gerekir.

Docker görüntüleri için birkaç güçlü araç mevcuttur:

Görüntüleri zorlamadan önce, onları her zaman açıklığa kavuştunuz. Trivy gibi araçlar bu basit yapar. Trivy güvenlikleri, onların ciddiyetleri ve önerilen düzeltmeleri rapor eder.

# Scan an image with Trivy
trivy image myapp:latest

# Scan and fail on high/critical vulnerabilities
trivy image --severity HIGH,CRITICAL --exit-code 1 myapp:latest

Genrate ve Malzeme Yazılım Bills (SBOM)

Bir SBOM size konteynerinizin içindeki her şeyin tam bir envanterini verir. Bir sonraki sıfır günlük düşüşler, etkilenmediğinizi anında kontrol edebilirsiniz. AB Cyber Resilience Act (Eylül 2026), SBOM'nin AB pazarında satılan tüm yazılımlar için üretimini görevletirecektir - bu artık güzel bir şey değildir.

Görüntü Provenance, her görüntü için bir Yazılım Bill (SBOM) oluşturur, tüm bileşenleri, kütüphaneleri ve şeffaflık yönetimi için bağımlılık ve kırılganlık yönetimi için bağımlılıkları detaylandırır.

Grype, Syft gibi bir konteyner oluşturan tüm metadata, bileşenler, kütüphaneler ve paketler otomatik olarak SBOM'leri üretebilecek olan bir veritabanı sunuyor.

Enable Docker Content Trust and Image Signing

Docker Engine sadece imzalanmış görüntülerle yapılandırılabilir. Docker Content Trust imza doğrulama özelliği doğrudan dockerd ikilisine inşa edilmiştir.Bu, görüntüler güvenilir kaynaklardan elde edilememesini sağlar.

Cosign v3 (şimdi: v3.0.5) Sigstore'ın sertifika otoritesi ve şeffaflık logları aracılığıyla anahtarsız doğrulama için varsayılan varsayılan varsayılanlar. Bu, anahtarları kendiniz imzalamaktan daha basit ve daha güvenli.

# Enable Docker Content Trust
export DOCKER_CONTENT_TRUST=1

# Sign an image with Cosign
cosign sign myregistry.io/myapp:v1.0.0

# Verify a signed image
cosign verify myregistry.io/myapp:v1.0.0

Görüntü imzası, gerçek ve bütünlüğün kriptografik kanıtı sağlar, kötü niyetli aktörlerin kayıtlarınıza uzlaşmak için atlatabileceği zincir saldırılarına karşı koruma sağlar.

Uygulama Ağı Segmentasyon ve izolasyon

Network segmentasyon, potansiyel güvenlik ihlallerinin patlama yarışını sınırlayan kritik bir savunma stratejisidir.In isolating kapsayıcıları işlevleri ve güven düzeyine dayanarak, daha sonra hareketlerinin saldırganlar tarafından engelleyebilirsiniz.

Farklı uygulama tiers için özel Docker ağları oluşturun:

# Create isolated networks
docker network create --driver bridge frontend-net
docker network create --driver bridge backend-net
docker network create --driver bridge database-net

# Run containers on specific networks
docker run -d --name web --network frontend-net nginx:alpine
docker run -d --name api --network backend-net myapi:latest
docker run -d --name db --network database-net postgres:14

# Connect API to both frontend and backend networks
docker network connect frontend-net api

Docker Engine 28 ilgili bir konu ele aldı: yayınlanmamış konteyner limanları artık varsayılan olarak LAN erişimden engelleniyor.Bu, ağdan erişilebilir olmaması gereken hizmetlerin kazara maruz kalmamasını engelliyor.

Kubernetes ortamlarındaki ağ politikalarını kullanarak pods arasındaki trafiği daha da kısıtlamak için kullanın. Sadece gerekli iletişim yollarını açık bir şekilde sağlayan giriş ve egress kuralları.

Runtime Security Profilleri

Runtime security profilleri, konteynerlerin infaz sırasında ne yapabileceğini kısıtlamak için koruma ek katmanları sağlar. Üç birincil mekanizma mevcuttur:

Seccomp Profilleri

Seccomp (Secure Computing Mode) filtreler sistemi, konteynerlerin çekirdeke yapabileceğini söylüyor.Mevcut sistem çağrılarını sınırlandırarak, saldırı yüzeyinin önemli ölçüde azaltılmasını sağlar.

# Run container with custom seccomp profile
docker run --security-opt seccomp=/path/to/seccomp-profile.json myapp:latest

AppArmor Profilleri

AppArmor profilini yükleyin ve AppArmor profili ile konteyner çalıştırın. AppArmor, programların programlarını programların program dışı profilleri ile kısıtlayarak zorunlu erişim kontrolü sağlar.

# Load AppArmor profile
sudo apparmor_parser -r /etc/apparmor.d/docker-webapp

# Run container with AppArmor
docker run --security-opt apparmor=docker-webapp myapp:latest

SELinux Entegrasyonu

SELinux Entegrasyonu, konteynerler üzerinde zorunlu erişim kontrolleri ve ev sahibi sistemle etkileşimleri sağlayarak daha fazla güvenlik katmanı sağlar. SELinux etiketleri, konteyner süreçleri ve kaynaklar için iyi erişim kontrolü sağlar.

Sır Yönetimi ve Hassas Data Protection

Görüntülerde veya çevre değişkenlerinde sert-kahkalama sırları, en yaygın hatalardan biridir. Güvenli bir şekilde saklamalı ve betonları enjekte etmeliyiz. Proper sırları yönetimi, konteynerli uygulamaları güvenliğini korumak için önemlidir.

Asla Görüntülerde Sırları Embed

Şifreler, API anahtarları ve jetonlar asla görüntüde depolanmalıdır, girişlerde veya Git havuzlarında maruz kalan çevre değişkenleri içinde. yerine, onları Docker sırları, Kubernetes sırları veya dış tonlar (AWS Sırları Yöneticisi, HashiCorp Vault) olarak güvenli.

Kaçmak için ortak hatalar:

Swarm Mode için Docker Sırları Kullan

Docker, şifreli depolama için yerleşik bir sır özelliği sunar. Docker Swarm, geri kalanında ve transitte sırları şifreleyen yerel sırları yönetimi içerir.

# Create a secret
echo "my-db-password" | docker secret create db_password -

# Use secret in service
docker service create
 --name myapp
 --secret db_password
 myapp:latest

Konteyner içinde, sırlar, ortamlardaki dosyalar olarak monte edilir:0)/run/gizlilikler /), onları sadece çevre değişkenleri veya logları açığa çıkarmadan konteyner işlemine erişilebilir hale getirir.

Dış Sırlar Yönetimi Çözümleri

Hashicorp Vault: Güvenli bir şekilde depolamak ve konteyner ortamlarında sırları yönetmek için kullanılan merkezileştirilmiş sırları yönetim aracı. özellikle Kubernetes'te, özel sırları yönetim çözümleri kullanmayı düşünün.

Popüler seçenekler şunları içerir:

Docker Sırları genellikle Docker ortamlarda hassas verileri yönetmenin güvenli bir yolunu sağlarken, bu yaklaşım Kubernetes için önerilmemektedir, sırların varsayılan olarak düzelmesinde depolandığı yerde.In Kubernetes, vd şifreleme veya üçüncü taraf aletler gibi ek güvenlik önlemleri kullanmayı düşünün.

Host System Security ve Bakım

Leaky Gemiler gibi bilinen konteyner kaçışı korumak için, bu genellikle saldırganlara kök erişim elde etmek için, hem ev sahibi hem de Docker motorunu düzenli olarak güncellemek önemlidir.

Takip Sistemleri Güncelleme ve Patched

Bu, konteynerlerin ev sahibinin çekirdeğini paylaşması nedeniyledir. Eğer ev sahibinin çekirdeği savunmasızsa, konteynerler de savunmasızdır. Örneğin, çekirdek ayrıcalıkları escalation sömürülmüş, Kirli COW, iyi izole bir konteyner içinde idam edilmiş bir kontenja sahip olur.

Docker gibi konteyner runtime motorları, yazılımlarını sık sık düzeltmeler ve özelliklerle güncelleyebilir. Son güncellemeleri uygulayarak kırılganları hafifletebilirsiniz.

Run docker bir kez çeker ve bunun hakkında unutmak, aylarca açık havada nakliye görüntüler anlamına gelir. Renovate Bot'un konteyner görüntü veri kaynağı ile Automate güncelleştirmeleri - temel görüntüler güncellemeleri olduğunda PR'ler yaratır, CI tarama boru hattınızla otomatik remediasyon için çiftler.

Güvenli Host Access ve Kimlik

OS'ye doğrudan tüm kimlik doğrulama denetimli ve giriş yapmanız gerekir. Sadece uygun kullanıcılara erişmeniz ve uzaktan giriş için anahtarlar kullanmalısınız.Ve sadece güvenilir ağlara erişim sağlamak ve erişime izin vermeniz gerekir.

Ev sahibi güvenlik için en iyi uygulamalar şunları içerir:

Asla Docker Daemon Use

Bu, kaçınmanız gereken kötü bir uygulamadır çünkü bir saldırgan, Docker servisinin çalıştırabileceği ve potansiyel olarak tüm ev sahibi sisteme erişim sağlayabilir, çünkü Docker hizmeti kök olarak çalışır.

Docker soketi ([[DÜ:0) /var/run /docker.sock) bir konteyner içinde, Docker daemon üzerinde tam kontrol sağlar, ev sahibine kök erişim sağlarsanız, Docker’ye erişim sağlamanız gerekir.

Run Docker in Rootless Mode

Köksüz Docker, Docker daemon ve konteynerleri, potansiyel konteyner molalarının açıklarını önemli ölçüde azaltır. Bu mod, ev sahibi sistemdeki kök ayrıcalıklarının ihtiyacını ortadan kaldırır.

# Install rootless Docker
dockerd-rootless-setuptool.sh install

# Run Docker commands as non-root user
docker run -d nginx:alpine

Köksüz mod gelişmiş güvenlik sağlarken, sınırlı ağ yetenekleri ve performans değerlendirmeleri gibi bazı kısıtlamalar vardır. Bu ticaretten ayrılanların kullanım durumunuz için kabul edilebilir olup olmadığını Evaluate.

Runtime Security Watch and Tespit

Statik güvenlik, dağıtımdan önce sorunları yakalar. Runtime security, görüntüler güvenli olsa bile, konteynerler hala iş zamanında saldırıya uğrayabilir.İş ortamındaki tehditleri tespit etmek ve cevap vermek için gereklidir.

İşsiz Runtime Güvenlik Araçları

Falco 0.43.0 (Ocak 2026) - modern eBPF sürücüsü lehine bir anormallik tespit eder. yeni açılan girişim, sempreasyona giriş olayları boru hattından önemli ölçüde geliştirmektedir.

Falco, eBPF'yi konteyner davranışını izlemek ve şüpheli faaliyetleri tespit etmek için kullanan açık kaynaklanmış bir güvenlik aracıdır.

# Example Falco rule for detecting shell in container
- rule: Shell Spawned in Container
 desc: Detect shell process started in container
 condition: >
 spawned_process and
 container and
 proc.name in (bash, sh, zsh)
 output: >
 Shell spawned in container (user=%user.name container=%container.name
 shell=%proc.name parent=%proc.pname cmdline=%proc.cmdline)
 priority: WARNING

Kapsamlı Logging ve İzleme

Docker olayları, konteyner yaşam döngüsü için yerel denetim akışı sağlar, Prometheus + cAdvisor konteyner başına kaynak kullanımını takip eder. beklenmedik süreç yürütme, ağ bağlantıları veya dosya değişiklikleri acil uyarıları tetikler.

Yararlanan kapsamlı bir giriş stratejisi oluşturun:

ELK yığını gibi araçları kullanarak girişler (Elasticsearch, Logstash, Kibana), Loki ile Grafana veya AWS CloudWatch veya Azure Monitor gibi bulut destekli çözümler. Merkeziized log, birçok konteyner ve ev arasındaki korelasyona olanak sağlar, dağıtık saldırıları tespit etmek daha kolay hale getirir.

# Configure Docker to use JSON file logging driver with rotation
{
 "log-driver": "json-file",
 "log-opts": {
 "max-size": "10m",
 "max-file": "3",
 "labels": "production_status",
 "env": "os,customer"
 }
}

DoS Saldırılarını Önlemek için Kaynak Sınırları

Kaynak limitleri, hizmet saldırıları ve kaynak egzozasyonu inkar etmeyi önler. Uygun kaynak kısıtlamaları olmadan, uzlaşmacı veya yanlış bir konteyner mevcut tüm sistem kaynaklarını tüketebilir, diğer konteynerleri ve ev sahibini etkileyebilir.

# Docker Compose with resource limits
version: "3.9"
services:
 app:
 image: myapp:latest
 deploy:
 resources:
 limits:
 cpus: "2.0"
 memory: 512M
 pids: 100
 reservations:
 cpus: "0.5"
 memory: 256M
 ulimits:
 nofile:
 soft: 65536
 hard: 65536
 nproc:
 soft: 100
 hard: 200

Kaynak limitleri, başvuru gereksinimleri ve kapasite planlamasına dayalı olarak belirlenmelidir. Bu sınırları uygun şekilde ayarlamak için gerçek kaynak kullanımı izlemek, konteynerlerin kaynak egzoz saldırıları önlemek için yeterli kaynaklara sahip olmasını sağlamak.

CI/CD Boru Güvenliği Entegrasyon

CI/CD boru hatları, Dockerfile yazarken bazı en iyi uygulamaları takip etmek için gerekli olan birçok sorun, inşaat boru hattında bir adım olarak bir güvenlik kontrolü, daha fazla baş ağrısından kaçınmak için uzun bir yol katmalıdır.

Implement Dockerfile Linting

Dockerfiles, Dockerfiles'lerinizi ortak hatalar, güvenlik sorunları ve görüntüler inşa edilmeden önce en iyi uygulama ihlalleri analiz eder. Hadolint gibi araçlar gelişim sürecinde erken sorunları yakalayabilir.

# Run Hadolint on Dockerfile
docker run --rm -i hadolint/hadolint < Dockerfile

# Example output showing issues
DL3008: Pin versions in apt get install
DL3009: Delete the apt-get lists after installing
DL3015: Avoid additional packages by specifying --no-install-recommends

Automate Security Scanning in CI /CD

Konteyner tarama araçları özellikle başarılı bir güvenlik stratejisinin bir parçası olarak önemlidir. Bilinen açıkları, sırları ve konteyner görüntülerindeki yanlış yapıları tespit edebilir ve bulguların onları nasıl düzelteceği konusunda bir rapor sunar.

Docker Hardized Image'nin tümleşik özelliği, Docker Hardized Image'den inşa edilen görüntülerin, inşa sürecinde bilinen güvenliklerden ücretsiz kalmasını sağlar.Bu proaktif yaklaşım, gelişim yaşam döngüsü boyunca görüntülerinizin devam ettirilmesini sağlar.

# GitHub Actions workflow example
name: Container Security Scan

on:
 push:
 branches: [ main ]
 pull_request:
 branches: [ main ]

jobs:
 security-scan:
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v3

 - name: Build image
 run: docker build -t myapp:${{ github.sha }} .

 - name: Run Trivy vulnerability scanner
 uses: aquasecurity/trivy-action@master
 with:
 image-ref: myapp:${{ github.sha }}
 format: 'sarif'
 output: 'trivy-results.sarif'
 severity: 'CRITICAL,HIGH'
 exit-code: '1'

 - name: Upload Trivy results to GitHub Security
 uses: github/codeql-action/upload-sarif@v2
 if: always()
 with:
 sarif_file: 'trivy-results.sarif'

 - name: Push image if scan passes
 if: success()
 run: |
 docker tag myapp:${{ github.sha }} myregistry.io/myapp:latest
 docker push myregistry.io/myapp:latest

Uygulama Politikası Uygulama

Politika uygulamaları yalnızca uygun görüntülerin üretime dağıtılmasını sağlar. Açık Politika Ajanı (OPA) ve Kyverno, organizasyon politikalarını otomatik olarak uygulayabilir.

Uygulanması gereken ortak politikalar:

Kubernetes-Specific Security Thinkations

Kubernetes güvenlik kümeleri yönetmek için hayati bir hale gelir. Rol tabanlı erişim kontrolleri (RBAC) veya maruz panjurlar riskini arttırır. Kubernetes'te çalışan Docker konteynerleri çalışırken, ek güvenlik önlemleri gereklidir.

Uygulamayı Uygulamayı Uygulamayı Uygulamayı

Kubernetes Pod Güvenlik Standartları üç güvenlik poliçesini tanımlar: Privileged, Baseline ve Restricted. Restrikted politika en sıkı güvenlik gerekliliklerini uygular ve mümkün olduğunca üretim iş yükleri için kullanılmalıdır.

apiVersion: v1
kind: Pod
metadata:
 name: secure-app
 labels:
 app: myapp
spec:
 securityContext:
 runAsNonRoot: true
 runAsUser: 1000
 fsGroup: 1000
 seccompProfile:
 type: RuntimeDefault
 containers:
 - name: app
 image: myapp:latest
 securityContext:
 allowPrivilegeEscalation: false
 readOnlyRootFilesystem: true
 capabilities:
 drop:
 - ALL
 runAsNonRoot: true
 runAsUser: 1000
 resources:
 limits:
 cpu: "1"
 memory: "512Mi"
 requests:
 cpu: "100m"
 memory: "128Mi"
 volumeMounts:
 - name: tmp
 mountPath: /tmp
 volumes:
 - name: tmp
 emptyDir: {}

Network Politikaları

Kubernetes Network Politikaları, pod-to-pod iletişimi üzerinde iyi bir kontrol sağlar. varsayılan olarak, tüm pods birbirleriyle iletişim kurabilir ve en azından ayrıcalık ilkesini ihlal eder.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
 name: api-network-policy
 namespace: production
spec:
 podSelector:
 matchLabels:
 app: api
 policyTypes:
 - Ingress
 - Egress
 ingress:
 - from:
 - podSelector:
 matchLabels:
 app: frontend
 ports:
 - protocol: TCP
 port: 8080
 egress:
 - to:
 - podSelector:
 matchLabels:
 app: database
 ports:
 - protocol: TCP
 port: 5432

Kabul denetçileri kullanın

Kabul kontrolörleri Kubernetes API sunucusuna nesneler devam etmeden önce istekler gönderiyor, Politikaları uygulamanıza ve yapılandırmaları doğrulamanıza izin veriyor. OPA Gatekeeper ve Kyverno gibi araçlar politika kod yetenekleri sağlıyor.

Uygulamanın Örnek politikaları:

Uyum ve Düzenlemeler

Düzenlenen endüstrilerde faaliyet gösteren kuruluşlar, konteyner dağıtımlarının belirli uyumluluk gerekliliklerini karşılamalarını sağlamalıdır. Ortak çerçeveler ve standartlar şunları içerir:

Docker Bench for Security ve kube-bench gibi araçlar, bu kıyaslamalara karşı çevrenizi otomatik olarak değerlendirebilir ve yeniden düzenleme rehberliği sağlayabilir.

# Run Docker Bench for Security
docker run --rm --net host --pid host --userns host --cap-add audit_control
 -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST
 -v /var/lib:/var/lib
 -v /var/run/docker.sock:/var/run/docker.sock
 -v /usr/lib/systemd:/usr/lib/systemd
 -v /etc:/etc --label docker_bench_security
 docker/docker-bench-security

# Run kube-bench for Kubernetes
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml
kubectl logs job/kube-bench

Konteyner Kayıt Güvenliği

Konteyner kayıtları konteyner tedarik zincirinin kritik bileşenleridir. Kayıtlarınızı kontrol etmek, görüntülere izin verme ve tedarik zinciri saldırılarına karşı korumayı önler.

Özel Kayıtları Kullanın

Docker Hub gibi kamu kayıtları uygun olsa da, üretim iş yükleri uygun erişim kontrolleri ile özel kayıt kullanmalıdır. Seçenekler şunları içerir:

Implement Kayıt Kayıtları

Kayıt erişim için doğrulama ve yetkilendirme:

Enable Otomatik Vulnerability Scanning

Docker Hub, Docker Hub repository'de görüntü analizine dönüş yaptıktan sonra, Docker Path görüntü analizinde, Docker Hub repository'de görüntü analizi yaparak, Video analizi, Yazılım Bill of Material (SBOM) ve diğer görüntü metadata'yı otomatik olarak kullanarak görüntü analizi yapar ve güvenlik danışmanlarından gelen verilere karşı değerlendirir.

Çoğu modern kayıt, otomatik olarak baskılandığında görüntüleri tarayan entegre kırılganlığı sunar. Kayıtlarınızı yapılandırın:

Olay Yanıtı ve Kurtarma

Kapsamlı güvenlik önlemleri uygulanmasına rağmen, olaylar hala meydana gelebilir. İyi tanımlanmış bir olay yanıt planına sahip olmak, zarar vermek ve hızlı bir şekilde kurtarmak için çok önemlidir.

Bir Olay Yanıt Planı Geliştirmek

Olay yanıt planınız şunları içermelidir:

Implement Konteyner Forensics Cap tasks

Konteyner adlileri, konteynerlerin saf doğası nedeniyle zorlanabilir. Bu uygulamaları soruşturmaları desteklemek için uygular:

Uygulama Afeti

Düzenli olarak felaket kurtarma prosedürlerinizi test edin:

Üretim için Güvenlik Kontrol Listesi

Yüksek performanslı öğelerle başlayın: minimum görüntüler, kök olmayan kullanıcılar, CI tarama ve pinning. Katmanı runtime monitoring, network segmentasyon ve sırları yönetimi.Docker konteynerlerinin üretim dağıtımdan önce güvenlik gereksinimleri karşılamasını sağlamak için bu kapsamlı kontrol listesini kullanın:

Görüntü Güvenliği

Konteyner Runtime Security

Host ve Altyapı Güvenliği

Sırlar ve Yapı Yönetimi

İzleme ve Logging

CI/CD Boru Güvenliği Güvenlik

Kubernetes-Specific (if uygulanabilir)

Gelişen Trendler ve Gelecek Tahminleri

Konteyner güvenliği yeni teknolojiler ve yaklaşımlarla gelişmeye devam ediyor. Gelişen trendler hakkında bilgi edinin:

Tedarik Zinciri Güvenliği

2025 olayları - aylarca geri döndük temel görüntüler, Dockerfiles aracılığıyla sızdırılan binlerce üretim kimlikleri - temellerin hala önemli olduğunu kanıtlayın. Tedarik zinciri konteyner ekosistemleri hedeflemekte olan saldırılar artıyor. Implement SLSA (Supply-chain Levels for Software Artifacts) framework to verifyed through your software supply chain.

Zero Trust Architecture

Her isteği kabul ederek konteyner ortamları için sıfır güven ilkeleri uygulayın.Istio veya Linkerd gibi hizmet ağ teknolojileri karşılıklı TLS kimlik doğrulama, konteynerle ilgili izin ve gözlemlenebilirlik sağlamak için karşılıklı olarak onaylanır.

eBPF-Based Security

Extended Berkeley Packet Filter (eBPF) teknolojisi, minimum performans yükü ile güçlü bir koşu zaman güvenliği izlemesine olanak sağlar. Tools komplike eBPF, çekirdek modülleri veya konteyner modifikasyonları olmadan konteyner davranışına derin bir görünürlük sağlayabilir.

Gizlilik

Gizlilik bilişim teknolojileri, donanım tabanlı güvenilir yürütme ortamlarında hesaplama yaparak verileri korur (TEEs). Bu ortaya çıkan yaklaşım, ayrıcalıklı kullanıcılardan bile hassas iş yüklerini koruyabilir ve ev sahibi sistemlerden ödün verebilir.

Önerilen Araçlar ve Kaynaklar

Kapsamlı bir konteyner güvenlik programı kurmak doğru araçları kullanmak gerektirir. İşte kategori tarafından organize edilen kaynaklar:

Vulnerability Scanning

Runtime Security

Politika ve Uyum Politikası

Sır Yönetimi

Ek Kaynaklar

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Konteyner güvenliği, görüntü oluşturma, gizli kullanım, çalışma zamanı davranışı ve devam eden izleme dahil olmak üzere çeşitli yönleri kapsayan sürekli bir süreçtir. Güvenlik, yapılandırmalarınızı düzenli olarak denetim eder, güncel verilerle ilgili bilgilendirilir ve bugün konteyner güvenliğine yatırım yaptığınız çaba yarınınızı korur.

Güvenli Docker konteynerlerini uygulamak, konteyner yaşam döngüsünün her aşamasında güvenlik içeren kapsamlı, katmanlı bir yaklaşım gerektirir. minimum temel görüntüler seçmek ve iş dışı kullanıcılar olarak çalıştırın ve uyum sağlamak için her güvenlik önlemi sağlam bir savunma stratejisine katkıda bulunur.

Docker konteynerleri modern gelişim için güçlü araçlar sağlar, ancak güvenli kalmasını sağlamak için dikkatli bir gözetim gerektirir.Docker görüntüleri, konteyner ayrıcalıkları ve ev sahibi sistemler, organizasyonlar, konteynerleşmiş ortamlarının güvenilirliğini en aza indirmek için dikkatli bir gözetim sağlayabilir.

Başarılı konteyner güvenliği anahtarı, bir kez uygulama olarak değil, bu kılavuzda belirtilen stratejileri ve önerileri kullanarak, organizasyonunuzun mallarını koruyan ve sürekli olarak çalıştırılan kapsayıcıları ve verimliliğinizi sağlayan güvenli bir şekilde koruyabilirsiniz.

Güvenlikin paylaşılan bir sorumluluğu olduğunu unutmayın.Docker ve konteyner orkestrası platformları, araçların ve yeteneklerin sağ kombinasyonuna sahip olsa da, güçlü bir güvenlik önlemlerinin uygulanması ve sürdürülmesi için gelişim ve operasyonlar ekiplerine kadar sürekli olarak yatırım yapın. Ekibinizi eğitimde araştırma, net güvenlik politikaları kurmak ve güvenlik politikaları oluşturmak ve güvenlik güvenliğini sağlamak için güvenlik önlemlerinin doğru kombinasyonu ile, uygulamalar ve vigilance, güçlü bir güvenlik önlemlerinin tamamını kullanabilirsiniz.