‫Dağıtımsız görüntüler hakkında ne düşünüyorsunuz?
‫Boyut ve güvenlik arasında iyi bir denge var mı?
‫Eğer dağıtımsız imajlar yapabiliyorsanız ve bununla
‫neyi kastettiğimizi biliyorsanız, bu terimin değişken
‫olduğunu söyleyebilirim.
‫Dağıtımsız görüntülerin karmaşık olduğunu
‫hissediyorum. Sadece çizik resimler demek daha kolay
‫bir yol olabilirmiş gibi hissediyorum. Ancak, dağıtımsız imaj demek doğrudur,
‫yani temel paket sistemi yoktur.
‫Apt yok. Yum yok.
‫Resmi imajlardan birini kullanırsanız
‫bir konteynerde olduğunu varsayacağınız tüm bu
‫farklı komutlar yoktur. Mesele şu ki, dağıtımsız görüntüler
‫iki nedenden dolayı çok yaygın değildir.
‫Birincisi, çoğu programın çalışması
‫için tüm bu şeylere ihtiyacı vardır.
‫Apt paket bağımlılıklarına ihtiyaç duyarlar.
‫Kendi açık SSL kütüphanelerine
‫ihtiyaçları vardır. Orada bulunan programa ek olarak her türlü şeye
‫ihtiyaçları var, değil mi?
‫Günümüzdeki çoğu uygulama bu şekildedir.
‫Golang, C ve diğer bazı diller, temelde çekirdek dışında
‫çalıştırmak için ihtiyaç duydukları her şeye sahip
‫olan tek ikili dosyalar oluşturabilir.
‫Bu
‫şeyler teknik olarak altındaki her şeyi kaldırabilir.
‫Tüm katmanlar ve görüntünüz kaybolabilir.
‫Google, Netflix ve bu konuda süper profesyonel
‫olan devasa ekiplerle çalışmadığım için bunları
‫henüz çok fazla göremiyorum.
‫Bunun iki nedeni var: Birincisi, bunu destekleyen bir
‫dile sahip olmanız ve bunları nasıl düzgün bir şekilde inşa edeceğini
‫bilen bir ekibe sahip olmanız gerekiyor.
‫Ardından, sorun giderme ve ad alanlarındaki kapsayıcıların nasıl çalıştığı konusunda
‫gerçekten iyi olmanız gerekir.
‫Çünkü bu dağıtımsız imaj bir konteynerde çalıştığı ve
‫bir sorun yaşadığınız anda, içine kabuk bile gönderemezsiniz.
‫Kabuk yok. İçine giremezsin.
‫Ona bakamazsın. Dolayısıyla, artık takımlarınız
‫sınırlıdır ve takımlarınızı bu konteynerlere bağlamanın başka
‫yollarını aramaya başlamanız gerekir.
‫Öyle bir şey var. Dışarıda bunu sizin için yapacak
‫şeyler var, ancak bu büyük ölçüde ad alanlarıyla nasıl başa çıkacağınız
‫konusundaki beceri setinize bağlı.
‫Docker kullanmadan komut satırından kendi ad
‫alanında çalışan bir konteynere nasıl yan araç olarak atlayabilirsiniz?
‫Bunlar, dağıtımsız görüntülere sahip olduğunuzda
‫sorun giderme veya sistem izleme ve bakım ile uğraşırken
‫ortaya çıkan türden sorunlardır.
‫Konteynerlerle çalışmaya başlayan herkesle çalışıyorum,
‫konteynerlerdeki ilk birkaç projelerinde
‫bunlardan bahsetmiyorum çünkü boyut sadece boyuttur.
‫Bir sunucuya her zaman daha fazla disk alanı ekleyebilirsiniz, değil mi?
‫Sırf bir sunucuda daha az disk alanı kullanabilmek
‫için bütün bir ekibin yeni araçlar öğrenmesi için koşturmasına
‫gerek yok.
‫Ben şahsen boyutu önemsemiyorum.
‫Güvenlik teorik bir şeydir.
‫Teorik olarak, tüm bu şeylerin bir konteyner görüntüsünden kaldırılması
‫onu daha güvenli hale getirebilir.
‫Yine de vahşi doğadan bahsedelim.
‫Birisi uygulamanızın dışında konteynerinizdeki
‫diğer araçlarla uğraşmak için kaç fırsata
‫sahip? Diyelim ki cURL'de bir güvenlik açığı var,
‫ancak uygulamanız cURL kullanmıyor.
‫Sadece görüntüde yer alıyor.
‫Birisi buna nasıl erişecek, değil mi?
‫Uygulamanızı aşmaları gerekecek.
‫Yani, uygulamanızın bir istismarı olmalı.
‫O zaman teorik olarak, cURL komutunu konteynerde çalıştırabilirler,
‫değil mi? Yani, bu dağıtımsızlığın
‫asıl amacı, diğer uygulamaları dahil etmemenin
‫teorik güvenlik bonuslarıdır.
‫Gerçek şu ki, statik bir ikili oluşturduğunuzda,
‫uygulamaları SSL güvenliği ile bağlamanın yaygın
‫bir yolu olan açık SSL gibi savunmasız olabilecek
‫bu kütüphanelerin çoğunu zaten dahil ediyorsunuz, değil
‫mi?
‫Eğer bir güvenlik açığı varsa ve bunu uygulamanıza statik olarak
‫eklerseniz, hala orada olacaktır.
‫Sadece konteyner üzerinde ayrı bir dosya değildir.
‫Uygulamanızda tek bir ikili olarak bulunur.
‫Aslında bu durum güvenlik taraması yapmayı daha da zorlaştırıyor
‫çünkü artık bildiğim tüm tarayıcılar yerleşik olması halinde açık
‫SSL ikili dosyasını yakalayamıyor.
‫Yani, bu şeylerin çoğu teorik.
‫Ekipleri teorik güvenlik özelliklerine doğru
‫itme eğiliminde değilim. Ben daha çok vahşi doğada neler
‫olduğuna bakıyorum.
‫Docker daemon'ları açığa çıkıyor.
‫Kubernetes'in uygun kimlik doğrulaması yoktur,
‫bu yüzden açığa çıkar. Gördüğüm gerçek sorunlar bunlar,
‫bilirsiniz, odaklanılan şeyler haberlerde duymaya
‫devam ettiğimiz, insanların hacklendiği
‫şeyler, doğru. Bu tür şeyler, resimlerden dosya
‫kaldırmada teorik güvenlik sağlar.
‫Bu daha çok teorik bir konu.
‫Bu yapmamak için bir sebep değil.
‫Tıpkı bu listede olduğu gibi, bu listedeki
‫her şeyi, o zor şeylere başlamadan önce
‫yapardım.
‫Dağıtımsız görüntülerin nispeten zor olduğunu düşünüyorum.
‫Tabii halihazırda bir Go programcısı değilseniz ve tüm
‫ekibiniz isim alanları, Docker komutları ve bunun gibi
‫konularda çok iyi değilse.
‫Sadece normal Docker komutlarını kastetmiyorum.
‫Örneğin, içinde kabuk bulunmayan konteynerlerde sorun gidermenize
‫yardımcı olan karmaşık şeylerden bahsediyorum.
‫Bu harika bir soru.
‫Her zaman gündeme gelir.
‫Güvenlik tartışmaları yaptığımızda herkes bana bunu soruyor
‫çünkü bu popüler bir konu. Ama benim ilk 10'umda
‫bile değil.
‫Umarım bu yardımcı olur.