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:
- [FONT:0]Trivy[[DÜT:1): konteyner görüntüleri, dosya sistemleri için tüm bir kırılganlık tarayıcısı ve depoları Git.It's popular for its simple, speed, and ekmekth of cover, including support for scan Infrastructure as Code (IaC şablonları ve bağımlılık uygulamaları.
- [FONT:0]Docker İz[[[Dönetici: Docker Desktop ve Docker CLI'ya entegre edilmiş durumda. kırılganlık öngörüleri, CVE summaries ve yönlendirme yönlendirmesi için doğrudan bağlantılar sağlar.
- [FONT:0]Anchore Engine[[Dönetici: A open-source Docker görüntü tarama aracı, güvenlik sorunları ve politika ihlalleri için konteyner görüntülerini incelemektedir. Özel güvenlik politikalarının oluşturulmasına izin verir.
- [FONT:0)Snyk Konteyner): CI/CD boru hatlarıyla otomatik olarak algılama ve açıklama için entegre olan kırılgan bir tarayıcı.
- [FONT:0)Clair[DÜT:1): Ortak Vulner yükümlülükleri ve Exposures (CVE) veritabanı gibi veritabanında listelenen bilinen açık uçlar için konteyner görüntüleri.
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:
- Dockerfiles'te bilgilendiriciler
- Versiyon kontrol için sırları olan .env dosyaları
- Gizlileri bir tartışma olarak devre dışı bırakmak (resmi tarihte kalıyorlar)
- Günlüklerde görünür olan çevresel değişkenlerdeki sırların
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:
- [FONT:0)HashiCorp Vault[[Dönetici sırları, bir hizmet olarak şifreleme ve ayrıntılı denetim logları sağlar.
- [FONT:0]AWS Sır Yöneticisi): AWS hizmetleri ve otomatik rotasyon ile Yerli entegrasyon
- [FONT=0) Azure Key Vault): Azure iş yükleri için merkezileştirilmiş sırları yönetimi
- [0]Google Gizli Yöneticisi)[FONT anahtarları, şifreler ve GCP'deki sertifikalar için Güvenli depolama
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:
- SSH için uygun şifre doğrulama, anahtar tabanlı doğrulamayı sadece kullanın
- ayrıcalıklı erişim için çok faktörlü kimlik doğrulama
- Üretim sistemlerine erişmek için bastion host veya at sunucuları kullanın
- Tüm idari eylemler için enable denetim giriş
- Restrict Docker daemon soketi yalnızca yetkili kullanıcılara erişim
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.
- Docker-in-Docker (DinD)'ı uygun izolasyon ile kullanın
- Köksüz Docker modu uygulama
- Sınırlı izinlerle konteyner runtime APIs kullanmak
- Doğrudan Docker erişimi yerine Kubernetes CRI'yi ele alalım
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.
- Beklenmeyen süreç yürütme
- Una Yetkili dosya değişiklikleri
- Suspicious ağ bağlantıları
- Privilege escalation girişimleri
- Shell konteynerler içinde yuvarlanıyor
# 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:
- [FONT:0)Container logs[Döncüm: Uygulama çıktısı ve hata mesajları
- [FONT=0]Docker daemon logları[[Dönler: Konteyner yaşam döngüsü olayları ve daemon operasyonları
- [0]Host sistemi loglar[Döneticiler[Dönler: Elektronik mesajlar ve sistem olayları
- [FONT:0]Denetmenler[[Dönemli olaylar ve erişim girişimleri[FONT=0)
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:
- Görüntüler taranmalıdır ve kritik açıklığa sahip olmamalıdır
- Görüntüler güvenilir yetkililer tarafından imzalanmalıdır
- Konteynerler, kök olmayan kullanıcılar olarak çalıştırılmalıdır
- Konteynerler ayrıcalıklı modu kullanmamalıdır
- Kaynak limitleri tanımlanmalıdır
- Görüntüler onaylanmış kayıtlardan gelmelidir
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ı:
- Onaylanmış kayıtlardan gelen tüm görüntülere ihtiyaç duyulması
- Enforce kaynağı tüm konteynerlerde limitler
- Yaratılmış konteynerlerin oluşturulması
- Tüm kaynaklarda özel etiketler
- Geçerli güvenlik bağlamları minimum gereksinimleri karşılıyor
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:
- [FONT=0)CIS Docker Benchmark[[Dönem: Docker için güvenli bir yapılandırma duruşu oluşturmak için önbellek rehberlik sağlar
- [FONT=0)CIS Kubernetes Benchmark[DÜT:1): Kubernetes dağıtımları için güvenlik önerileri
- [FONT:0)PCI DSS): Ödeme kartı verileri ile ilgili kuruluşlar için Gereksinimler
- [FONT:0)HIPAA): Hassas hasta sağlığı bilgilerini korumak için standartlar
- [FONT:0) SOS 2): Müşteri verilerini beş güven servis ilkelerine dayanarak yönetmek için Çerçeve
- [FONTNT:0)GDPR[DÜT:1)[[Üye Olmayanlar İçin Veri Koruma ve Gizlilik Koşulları
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:
- [FONT:0)Harbor[DÜT:1): Açık kaynaklı kayıt, güvenlik tarama, görüntü imzası ve RBAC
- [FONT:0]AWS ECR): Yönetilen kayıt AWS hizmetleri ile entegre edilmiştir.
- [FONT=0) Azure Konteyner Kayıt): Azure iş yükleri için Yönetilen kayıt
- [0]Google Konteyner Kayıt)[değiştir | kaynağı değiştir)
- [FONT=0)JFrog Artiksiyon[Dönetici: Universal artifact repository ile gelişmiş güvenlik özellikleri
Implement Kayıt Kayıtları
Kayıt erişim için doğrulama ve yetkilendirme:
- CI/CD boru hatları için minimum izinlerle servis hesapları kullanın
- Farklı takımlar için rol tabanlı erişim kontrolü (RBAC)
- Tüm kayıt işlemleri için enable denetim giriş
- Uzun vadeli kimlik doğrulamaları yerine kısa ömürlü jetonları kullanın
- Kayıt erişim için IP beyaz listesi
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:
- Tüm görüntüleri otomatik olarak itmeye
- Yeni keşfedilen açıklar için sürekli olarak yeniden kullanılabilir görüntüler
- Görüntülerin kritik açıklarla dağılımı
- Güvenliklerin tespit edildiği zaman bildirimleri gönderin
- Tanımlanan konular için yeniden düzenleme rehberliği sağlayı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:
- [FONT:0)Deteksiyon[[DÜT 1: 1): Güvenlik olayları izleme ve uyarı yoluyla tanımlamak için mekanikler
- [FONT:0)Containment[Dönemli konteynerler için prosedürler ve yayılmayı önleme
- [FONT=0)Investigation[[[Döntgen: 1): Olayı analiz etmek ve kök nedenini belirlemek için adımlar
- [FONT=0)[[Dönem: 1)[Dönemli)
- [FONT:0)Recovery[DÜT:1): Hizmetleri geri yükleme Prosedürleri ve güvenlik doğrulama güvenlik işlemleri
- [FONT:0]Post-incident inceleme[[Dönem: Ne olduğunu ve nasıl yeniden değerlendirmeyi önlemeyi önlemeyi önlemeyi önlemeyi önlemeyi önlemeyi önlemeyi sağlayan bir analiz[Dönlendirme:0).
Implement Konteyner Forensics Cap tasks
Konteyner adlileri, konteynerlerin saf doğası nedeniyle zorlanabilir. Bu uygulamaları soruşturmaları desteklemek için uygular:
- Gümrükten önce anlık görüntüler yaratarak konteyner devleti koruma
- Yeterli tutma dönemi ile kapsamlı oturumlar koruyun
- Kanıtların tamperinging olmasını engellemek için imkansız altyapı kullanın
- Tüm konteyner operasyonları için uygulama denetimi girişi
- Görüntü kanıtlanmışlığı ve tarih inşa etmek
Uygulama Afeti
Düzenli olarak felaket kurtarma prosedürlerinizi test edin:
- Masa top egzersizleri güvenlik olayları basitleştiriyor
- Konteyner verileri için yedekleme ve geri yükleme prosedürleri
- ortamları sıfırdan yeniden inşa edebileceğinizi doğrulama
- Gerekli Belgeler mevcut ve erişilebilir
- Olay yanıt prosedürlerinde tren ekibi üyeleri
Ü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
- En az temel görüntüler kullanın (Alpine, distroless)
- Pin specific image versiyonları, sindirimleri kullanarak
- CI/CD boru hattında açıklığa yönelik görüntüler
- Docker Content Trust veya Cosign ile görüntüler
- Tüm görüntüler için SBOM'leri korumak ve korumak
- gereksiz paketler ve dosyaları çıkarın
- Son görüntü boyutunu en aza indirmek için çok aşamalı inşalar kullanın
- Asla görüntülerde sırları içer
Konteyner Runtime Security
- Kapalı olmayan kullanıcılar olarak konteynerleri çalıştırın
- Sadece kök dosya sistemleri kullanın
- Tüm yetenekleri bırak ve sadece gerekli olanları ekleyin
- Yeni-privilegeler bayrakları
- Uygulamayı gizlilik, AppArmor veya SELinux profillerini uygulayın
- Kaynak limitleri (CPU, hafıza, PIDs)
- Uygulama ağ segmentasyon
- Inter-clusive iletişim için özel ağ kullanın
Host ve Altyapı Güvenliği
- Ev sahibi OS ve çekirdek güncellendi
- Update Docker Engine düzenli olarak
- Docker daemon soketi asla ortaya çıkma
- Mümkün olduğunda köksüz Docker kullanın
- Ev tabanlı güvenlik duvarları
- Enable denetim log log
- Restrict SSH anahtar tabanlı kimlik doğrulama ile erişim
- Üretim erişimi için bastion host for production access
Sırlar ve Yapı Yönetimi
- Docker Sırları veya dış tonları kullanın
- Asla zor kodlama kimlikleri
- Rotate sırları düzenli olarak düzenli olarak
- Kısa ömürlü jetonları ve kimlik bilgilerini kullanın
- Geri kalanı ve transit geçişte sırları şifreleyin
- Denetim gizli erişim
İzleme ve Logging
- Implement runtime security monitoring (Falco)
- Tüm konteynerlerden Ortalama logları
- Enable Docker daemon log
- Monitor kaynak kullanımı
- Şüpheli aktiviteler için uyarılar oluşturun
- Yeterli günlük tutma tutma tutma süresi
- Implement denetim izinleri uyumluluk için
CI/CD Boru Güvenliği Güvenlik
- Lint Dockerfiles with Hadolint
- CI boru hattında görüntü
- Kritik kırılganlıklara karşı başarısız olur
- Uygulama politikası
- Dev /stating / prod için ayrı kayıt kullanın
- Automate güvenlik testleri
- Dockerfile değişiklikleri için kod incelemesi
Kubernetes-Specific (if uygulanabilir)
- Uygulamayı Uygulamayı Uygulamayı Uygulamayı
- Network Politikaları
- Politika uygulamaları için kabul kontrolörleri kullanın
- En az ayrıcalık olan RBAC
- Kubernetes API sunucusu
- Şifre vsleştirilmiş veriler geri kalanı
- Run CIS Kubernetes Benchmark checks
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
- [FONT:0)Trivy[[Dön kaynağı değiştir] (Open Source): Hızlı, kapsamlı kırılgan tarayıcı
- [FONT:0]Docker İz[[Dönem: Docker Desktop ve CLI ile bütünleşik tarama
- [FONT:0)Anchore Engine[[Dön kaynağı değiştir] (Open Source): Politika bazlı tarama ve uyumluluk
- [FONT:0)Snyk Konteyner): Geliştirici odaklı düzeltme önerileri ile
- [FONT:0)Clair[DÜDÜT:1) (Açık Kaynak): Açıklıkların dinamik analizi
Runtime Security
- [FONT:0)Falco[[Dön kaynağı değiştir] (Açık Kaynak): EBPF kullanarak zaman tehdit algılaması
- [FONT:0]Aqua Güvenlik[[Dönemli konteyner güvenlik platformu)
- [FONT:0]Sysdig Güvenli[[Dönem: Runtime security and forensics
Politika ve Uyum Politikası
- [FONT:0) Açık Politika Ajanı[Dönemli: 1)
- [FONT=0)Kyverno[Döntme: 0,4|Açık Kaynak: Kubernetes-native politika yönetimi
- [FONT=0)Docker Bench for Security) (Açık Kaynak): CIS Docker Benchmark checks
- [FONT=0)kube-bench[[Dön kaynağı değiştir] (Open Source): CIS Kubernetes Benchmark checks
Sır Yönetimi
- [FONT=0)HashiCorp Vault[[Dönetici: Enterprise sırları yönetim kurulu:
- [FONT=0]AWS Sır Yöneticisi)
- [FONT=0) Azure Key Vault): Azure için Sır yönetimi
- [0]Google Gizli Yöneticisi)
Ek Kaynaklar
- [FONT=0]Docker Güvenlik Belgesi[[Dönemli: 1)
- [FONT=0)OWASP Docker Güvenlik Hile Belgesi).
- [FONT=0) BORBİRMALARI[FONT][/FONT][/FONT][/TRNT][/FONT][/TRNT=0)
- [FONTD:0)Kubernetes Güvenlik Belgesi[Dönem: 1 )
- [FONT=0)YORYORDÜSÜŞÜNÜŞÜNÜŞÜŞÜŞÜNÜŞÜŞÜŞÜNÜŞÜNÜ:0.
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.