Dünyanın en detaylı ücretsiz FDE + DevOps kütüphanesi: 140 üzeri ders, 70 üzeri lab ve 80 uzun yazı, İngilizce ve Türkçe. Öğrenmeye başla →

DevOps Foundations · Modül 5: Container temelleri

Root-dışı Çalışma ve Konteyner Ortamı

Konteyner içindeki root, tek yanlış yapılandırma ötede host çekirdeğinde roottur. Bu ders root-dışını varsayılan yapar; çalışma ortamı sınırını dürüst anlatır.

10 dk okuma

Kazanımlar

  • Konteynerleri root-dışı çalıştırıp yapmayınca neyin kırıldığını açıklamak
  • İmaj içinde dosya sahipliğini çalışma kullanıcısı iş görecek kurmak
  • Çalışma ortamının neyi yalıttığını ve neyi yalıtmadığını anlatmak
  • Ortam destekliyorsa rootsuz veya kullanıcı ad-alanlarını seçmek

Neden önemli

Root ile çalışan konteyner bağlı Docker soketi veya çekirdek açığıyla kaçar; saldırgan hostu tutar. Aynı iş yükü sayısal root-dışı kullanıcı ve yeni ayrıcalıksız çalışınca aynı açık tek konteynerde kalır. USER satırı bedavadır ve en yaygın yükseltme yolunu kaldırır; atlamak M01'deki chmod 777 karşılığıdır.

Kavramlar

Konteynerler host çekirdeğini paylaşır; ad-alanları ve cgroup'lar görünümü yalıtır, çekirdeği değil. PID, bağlama, ağ ve kullanıcılar konteyner başına özel görünür ama sistem çağrıları aynı çekirdeğe gider; çekirdek açığı veya aşırı izinli bağlama (--privileged, Docker soketi, yazılabilir host yolları) sınırı bu yüzden bozar. Çalışma ortamı gerçek dayatmalı kolaylık sınırıdır, tek başına güvenlik sınırı değil. Derinlemesine savunma: root-dışı kullanıcı, mümkünse salt-okunur dosya sistemi, düşürülmüş yetiler, yeni ayrıcalık yok, asgari bağlama.

Dockerfile içindeki USER çalışma kullanıcısını kurar; sayısal UID'ler (USER 10001) isimlerin çözülmediği ortamlarda sağ kalır. Uygulamanın yazdığı dosyalar o UID'ye sahiplik veya grup erişimi ister; derlemede chown ile veya ayrıcalığı düşürmeden önce sahipliği düzelten giriş noktasıyla kurulur. İlk yazıda çöken root-dışı imaj root olarak test edilmiştir; çalışma kullanıcısı gibi test et, M01 1. dersin servisler için istediği gibi.

Rootsuz çalışmalar ve kullanıcı ad-alanları konteyner rootunu ayrıcalıksız host UID'sine eşler; konteyner-root süreç dışarıda nobody olur. Podman varsayılan rootsuz çalışır; Docker rootsuz kipi destekler. Mümkünse tercih et: eşleme, host-root yükseltme sınıfını konteyner başına hafifletmek yerine tümüyle kaldırır.

Uygulamalı örnek

Servis yükleme yazar, root-dışı çöker. Teşhis EN metindeki gibidir: dizin roota aittir, UID 10001 dosya oluşturamaz. Düzeltme imaja aittir, çalışma bayraklarına değil: yazılabilir yolları Dockerfile içinde chown ile kur (veya doğru sahiplikle ilklendirilen adlandırılmış birim), yeniden derle, sayısal kullanıcıyla yazma duman testiyle doğrula. Çalışma anı --user geçersiz durum bayrağıdır; pişmiş sahiplik düzeltmedir.

Yaygın yanlış hamle

İzin hatası geçsin diye --privileged çalıştırmak. Çalışmanın sağladığı izolasyonu (cihazlar, bağlamalar, yetiler) kalıcı kapatır; tek chown ile çözülecek soruna. Ayrıcalıklı kip çalıştırıcı derlemek içindir, uygulama çalıştırmak için değil; uygulama kodu için içeren her öğretici adım şüphelidir.

Lab ve sonraki adım

L13 labı son imajın kanıtlı root-dışı çalışmasını ister. Sırada 3. ders: konteynerleri dünyaya bağlar; birimler, ağlar ve konfigürasyon.

Mini kontrol

4 soruluk isteğe bağlı öz kontrol. Yanıtlar cihazından çıkmaz, saklanmaz ve hiçbir değerlendirmeye sayılmaz.

Ders geri bildirimi

Henüz yayında geri bildirim yok.

Geri bildirim yazmak için giriş yap ve dersi tamamla.

Kaynaklar

Alıştırma

İmajlarından birini --read-only ve --user 10001 ile çalıştır; neyin kırıldığını kaydet. İmajı düzeltene kadar onar (sahiplik, yazılabilir yollara tmpfs veya birim); önce/sonra çalıştırma komutlarını göster.

Geçme kriterleri

Kırılma alıntıyla yeniden üretilmiş; düzeltilmiş imaj sayısal root-dışı salt-okunur çalışıyor; her yazılabilir yol mekanizmasıyla hesaba katılmış.

İlerlemeni kaydetmek için giriş yapÜcretsiz hesap: yalnızca ders ilerlemen ve quiz sonuçların saklanır.