Blog
Docker'da Gerçek Çok Kiracılı İzolasyonu Sağlamak
Docker'ın paylaşımlı çekirdek modeli, çok kiracılı ortamlar için riskler oluşturur. Bu kılavuz, kullanıcı ad alanları, seccomp, AppArmor, sanal alan araçları ve orkestrasyon en iyi uygulamaları ile izolasyonu güçlendirmek için somut adımlar sunar.
Özet
Docker konteynerleri, ana bilgisayar çekirdeğini paylaşır; bu, kiracıların birbirine güvenmediği çok kiracılı ortamlar için bir güvenlik endişesi olabilir. Bu makale, varsayılan Docker kurulumlarındaki izolasyon boşluklarını açıklar ve Linux ad alanları, cgroups, kullanıcı ad alanları, seccomp, AppArmor ve donanım sanallaştırması kullanarak izolasyonu güçlendirmek için somut adımlar sunar. Kiracı başına Docker arka plan programlarını nasıl yapılandıracağınızı, daha güçlü izolasyon için gVisor veya Firecracker gibi sanal alan araçlarını nasıl kullanacağınızı ve çok kiracılılık için Kubernetes ile nasıl orkestre edeceğinizi öğreneceksiniz. Ayrıca, ek bir ayırma katmanı için KVM tabanlı sanallaştırma sunan doğru altyapı sağlayıcısını seçmeyi de ele alacağız. Sonunda, Docker ile güvenli çok kiracılı iş yüklerini çalıştırmak için bir plana sahip olacaksınız.
Tek bir Docker ana bilgisayarında birden çok kiracı barındırırken, Linux ad alanları ve cgroups üzerine kurulu varsayılan konteyner izolasyonu genellikle yeterli değildir. Bir kiracıdaki konteyner kaçışı, tüm ana bilgisayarı ve diğer tüm konteynerleri tehlikeye atabilir. Bu sorun, özellikle paylaşımlı barındırma, SaaS platformları veya güvenilmeyen kodun kendi kodunuzla birlikte çalıştığı herhangi bir senaryoda akuttur. İyi haber: sağlamlaştırılmış bir çok kiracılı ortam oluşturmak için birden çok izolasyon tekniğini üst üste ekleyebilirsiniz. Bu kılavuz, kullanıcı ad alanları gibi düşük asılı meyvelerden sanal alan çalışma zamanları ve altyapı seçimleri gibi gelişmiş önlemlere kadar altı pratik adımda yol gösterir.
Docker'ın Varsayılan İzolasyonunu Anlama
Docker, süreçleri, ağı, dosya sistemini ve diğer kaynakları izole etmek için Linux ad alanlarını kullanır. Cgroups, CPU, bellek ve G/Ç'yi sınırlar. Ancak bunlar tek bir çekirdeği paylaşır—çekirdekteki bir güvenlik açığı tüm konteynerleri etkileyebilir. Özellikle güvenilmeyen kiracıların olduğu gerçek çok kiracılılık için derinlemesine savunmaya ihtiyacınız vardır. Çok Kiracılı Docker Mimarisi Tasarlamak: Doğru İzolasyon Seviyesini Seçmek başlıklı yazıda tartışıldığı gibi, izolasyon seviyeleri zayıf (yalnızca ad alanı) ile güçlü (donanım sanallaştırması) arasında değişir. En zayıftan başlayarak inşa edelim.
Adım 1: Kullanıcı Ad Alanlarını Etkinleştirin
Varsayılan olarak, bir konteyner içindeki root, ana bilgisayardaki root ile eşlenir. Bir konteyner kaçışı, tam ana bilgisayar erişimi sağlar. Kullanıcı ad alanları, konteyner root'unu dışarıdaki root olmayan bir kullanıcıya yeniden eşler. Bunu global olarak dockerd --userns-remap=default ile veya konteyner başına --userns=host ile etkinleştirin. Bu basit adım, birçok ayrıcalık yükseltme saldırısını ortadan kaldırır. Uygulamalarınızı test edin: ana bilgisayar düzeyinde ayrıcalıklar gerektirenler (örneğin, dosya sistemlerini bağlama) çalışmayabilir. Drupal veya WordPress siteleri için genellikle güvenlidir.
Adım 2: Seccomp ve AppArmor Profilleri Uygulayın
Seccomp, bir konteynerin yapabileceği sistem çağrılarını sınırlar. Docker, mount ve reboot gibi tehlikeli sistem çağrılarını engelleyen varsayılan bir seccomp profiliyle birlikte gelir. Çok kiracılı için daha da sıkılaştırın—kaçış araçlarının kullandığı nadir sistem çağrılarını engelleyin. Benzer şekilde, AppArmor konteyner süreçlerini sınırlayabilir. Çekirdek arayüzlerine yazma erişimini reddeden ve dosya yollarını kısıtlayan özel bir AppArmor profili oluşturun. Her ikisi de --security-opt bayraklarıyla ayarlanır. Katmanlı savunma için bunları birleştirin.
Adım 3: Kiracı Başına Docker Arka Plan Programlarını Kullanın
Tüm kiracılar için tek bir Docker arka plan programı çalıştırmak risklidir—herhangi bir konteyner kaçışı, arka plan programı soketine erişebilir. Docker-in-Docker (DinD) veya uzak arka plan programı uç noktaları kullanarak kiracı başına arka programları izole edin. Örneğin, --privileged ile bir konteyner içinde bir Docker arka plan programı başlatın (ancak bu izolasyonu zayıflatır). Daha iyi bir yaklaşım: ayrı VM'lerde ayrı arka plan programları çalıştırın veya kullanıcı ad alanlarıyla Docker'ın deneysel --group özelliğini kullanın. Orkestrasyon için, Konteyner Kaçışına Karşı Savunma: Çok Kiracılı Barındırma için Docker İzolasyonu İçin Pratik Bir Kılavuz başlıklı yazıda ele alındığı gibi, Kubernetes ad alanı tabanlı izolasyon daha pratiktir.
Adım 4: Sanal Alan Çalışma Zamanlarını Düşünün
Linux çekirdeğinin kendisine güvenilmediğinde, hafif bir VM katmanı ekleyen bir sanal alan çalışma zamanı kullanın. gVisor (runsc) sistem çağrılarını keser ve kendi çekirdeğini uygularken, Firecracker donanım sanallaştırmasıyla mikro VM'ler kullanır. Her ikisi de containerd çalışma zamanları aracılığıyla Docker ile entegre olur. Örneğin, Docker arka plan programı yapılandırmasına "runtimes": {"runsc": {}} ekleyin ve konteynerleri --runtime=runsc ile çalıştırın. Performans ek yükü %5–15'tir ancak izolasyon çok daha güçlüdür. Yüksek güvenlikli çok kiracılı kurulumlar için idealdir.
Adım 5: Kubernetes ve Güvenlik Politikaları ile Orkestrasyon
Kubernetes, ad alanları, Pod Güvenlik Standartları ve Ağ Politikaları aracılığıyla yerel çok kiracılılık sağlar. Kaynak kotaları olan kiracı başına ad alanları tanımlayın ve kısıtlanmış pod güvenlik bağlamlarını (tüm yetenekleri bırak, salt okunur kök dosya sistemi) zorunlu kılın. OPA/Gatekeeper giriş denetleyicileri yanlış yapılandırmaları engelleyebilir. Birçok kiracıyı yönetiyorsanız, Kubernetes izolasyon uygulamasını otomatikleştirir. Üretim ölçeğinde orkestrasyon için Docker Compose'un Ötesinde: Üretime Hazır Konteynerize Uygulamaları Orkestre Etme başlıklı yazıya başvurun.
Adım 6: Doğru Barındırma Sağlayıcısını Seçin
Altyapı sağlayıcınızın hipervizörü önemlidir. Paylaşımlı barındırmadaki Docker (OpenVZ) zayıf izolasyon sağlar—bir kiracı diğer süreçleri görebilir. Donanım düzeyinde ayırma sunan KVM veya VMware kullanan sağlayıcıları tercih edin. DigitalOcean, Kamatera veya AWS gibi sağlayıcılar, özel kaynaklara sahip KVM tabanlı VPS'ler sunar. Çıplak metal için, iç içe konteynerler için BIOS düzeyinde sanallaştırmanın etkinleştirildiğinden emin olun. Kiracıları hipervizör katmanında izole eden bir sağlayıcı, konteyner izolasyonunuzu tamamlar. Güvenli ve Verimli Web Barındırma için Docker İzolasyonunda Ustalaşma başlıklı yazıda detaylandırıldığı gibi, ana işletim sistemi de minimum saldırı yüzeyi ile sağlamlaştırılmalıdır.
Uyarılar ve Ödünleşimler
Her ek katman, karmaşıklık ve performans maliyeti ekler. Kullanıcı ad alanları, ana bilgisayara bağlı birimleri bozabilir. Seccomp profilleri, uygulama başına ayarlama gerektirir. gVisor gibi sanal alan çalışma zamanları tüm sistem çağrılarını desteklemez—uygulamanız çalışmayabilir. Kiracı başına Docker arka plan programları bellek ek yükünü artırır. Tehdit modelinize uygun izolasyon seviyesini seçin: güvenilir kiracılar için varsayılan ad alanları yeterli olabilir; genel SaaS için çalışma zamanı sanal alanlarına ve Kubernetes politikalarına yatırım yapın. Üretime geçmeden önce iyice test edin.
Sonuç
Docker'da gerçek çok kiracılı izolasyon, birden çok çekirdek özelliğini, çalışma zamanı sanal alanlarını ve orkestrasyon kontrollerini katmanlayarak elde edilebilir. Kullanıcı ad alanları ve seccomp ile başlayın, ardından kiracı başına arka plan programlarına veya sanal alan çalışma zamanlarına geçin. Büyük ölçekli için Kubernetes, politika odaklı izolasyon sağlar. Her zaman saygın bir sağlayıcıdan hipervizör düzeyinde ayrılmış bir ana bilgisayarla eşleştirin. Hiçbir teknik tek başına kurşun geçirmez değildir, ancak bunları birleştirmek sağlam bir savunma oluşturur. Kiracılarınız size teşekkür edecek—ve güvenlik denetiminiz de.
Sources (5)
- Docker and Container Isolation - Medium
- Enhanced Container Isolation - Docker Docs
- Container orchestration is the automated process of deploying, managing, scaling, and networking containers in production.
- Container Orchestration 101 - Docker
- Best 10 Docker Container Hosting Platforms in 2026 - Purvaco Technology

