Eminim bu sizin de başınıza gelmiştir: Kişisel kullanımınız için bir kap monte etmeye çalışıyorsunuz, onu daha güvenli hale getirmek istiyorsunuz... ayrıcalıksız konteynerler Ve aniden kendinizi bir izin hataları labirentinde kapana kısılmış buluyorsunuz. Kullanıcının ana dizinindeki klasörleri yapılandırmak için saatler harcamak, konteynerin bunlara yazamadığını veya yazabildiğinde ana bilgisayardaki dosyaların bozuk olduğunu keşfetmek sinir bozucu. yönetilmesi imkansız Çünkü bunlar hayali bir kullanıcıya ait.
Gerçek şu ki, konteynerleştirme yazılım teslimatını hızlandırırken, önemli risklere de kapı açmıştır. Son verilere göre, üretim imajlarının büyük çoğunluğu [belirsiz - muhtemelen "belirsiz" veya "belirsiz"] içermektedir. kritik güvenlik açıklarıBu durum, güvenliği pazarlık konusu edilemez bir temel haline getiriyor. Mesele sadece bilgisayar korsanlarının bize saldırmasını engellemek değil, sistemin nasıl çalıştığını anlamaktır. süreç izolasyonu Böylece altyapımız bir eleğe dönüşmesin.
Konteyner güvenlik ekosistemini anlamak
İzinlerle ilgili tahmin yürütmeyi bırakmak için öncelikle neyi koruduğumuzu bilmemiz gerekiyor. Bir konteynerin mimarisi birkaç kritik katmana ayrılmıştır. İlk olarak, şunlara sahibiz: konteynerin görüntüsüBu, orijinal plan şablonudur; eğer bu şablon savunmasızsa, dağıttığınız tüm örnekler güvensiz olacaktır. Bu nedenle, bunu kullanmak hayati önem taşır. güvenilir temel görüntüler ve onları güncel tutun.
Sonra çalışma zamanıBu, ana işletim sistemi ile uygulama arasında hakem görevi görür. Çalışma zamanı ortamı güncel değilse, risk artar. konteynerden kaçış Bu artış dramatik bir şekilde gerçekleşiyor. Buna, Kubernetes gibi orkestrasyon sistemlerini de eklememiz gerekiyor; burada rol tabanlı erişim denetimi (RBAC) Bu, yönetim API'sine yetkisiz erişime karşı tek gerçek engeldir.
Unutamayız ana işletim sistemiEğer bir saldırgan ana bilgisayar çekirdeğini ele geçirmeyi başarırsa, tüm etki alanının anahtarlarına sahip olur. Buradaki öneri açık: şunu kullanın: minimum işletim sistemi Saldırı yüzeyini azaltmak için. Son olarak, ağ en yaygın giriş noktasıdır; ihlallerin neredeyse %30'u bağlantı arızalarından kaynaklanmaktadır, bu nedenle ağ bölümlendirme ve TLS/SSL şifrelemesi Zorunludurlar.
İzinler ve root kullanıcısıyla ilgili baş ağrısı
Hobi amaçlı kullananlar için tipik sorun, disk birimleriyle ilgili iş akışıdır. Bir klasör oluşturursunuz, bağlarsınız ve sonra, hop!, bir hata çıkar. izin reddedildiBu durum, birçok konteynerin varsayılan olarak root olarak başlatılmasından kaynaklanmaktadır. Bunu zorlamaya çalıştığınızda... UID ve GID 0'da Bunları ana bilgisayar kullanıcınızla eşleştirmeye çalışmak tehlikeli bir köprü oluşturuyor. Eğer konteyner bu kimlikleri yapılandırmanıza izin vermiyorsa, uygulamanın hangi dahili kullanıcıyı kullanarak bir işlem gerçekleştirdiğini anlamaya çalışarak bir öğleden sonranızı boşa harcayacaksınız. chown manuel.
En etkili çözüm, şunu uygulamaktır: en az ayrıcalık ilkesiKesinlikle gerekli olmadıkça hiçbir şeyi root olarak çalıştırmamalısınız. Ana bilgisayarda silemediğiniz konteyner tarafından oluşturulan dosyalar sorununu çözmek için, Dockerfile'ı aşağıdaki talimatla yapılandırmak çok önemlidir: KULLANICIUygulama başlamadan önce yetkisiz bir kullanıcı tanımlamak.
Podman kullanıyorsanız, kavram şudur: köksüz kaplar Bu yerel ve çok faydalı, ancak ana bilgisayar kullanıcılarının kapsayıcı kullanıcılarına nasıl eşlendiğini anlamanızı gerektiriyor. İzinlerin kontrol dışına çıkmasını önlemek için, ideal olarak uygulama belirli rotalara yazacak şekilde tasarlanmalı ve hacim haritalama Bu işlem, süreci başlatan kullanıcının gerçek UID'si dikkate alınarak yapılır.
Zırhlı imajlar oluşturma stratejileri
Acı çekmeyi bırakmak istiyorsanız, imgelerinizi oluşturma biçiminizi değiştirmeniz gerekiyor. Son derece etkili bir teknik ise... çok aşamalı yapılarTemel olarak, ikili dosyayı oluşturmak için tüm derleme araçlarını içeren ağır bir imaj kullanıyorsunuz ve ardından yalnızca bu dosyayı nihai imaja kopyalıyorsunuz. son derece hafif.
Görüntüyü kullanarak daha da ileri gidebilirsiniz. çizikBu, içinde hiçbir şey bulunmayan bir konteyner oluşturur: kabuk yok, paket yöneticisi yok, sadece uygulamanız var. Bu da, bir saldırgan içeri girmeyi başarsa bile kötü amaçlı komutlar çalıştırmasını neredeyse imkansız hale getirir, çünkü Komut yorumlayıcısı yok. Mevcut.
Bir diğer güvenlik önlemi de, izinleri olan tüm ikili dosyaları imajdan temizlemektir. setuid veya setgidBu izinler, bir dosyanın, onu başlatan kullanıcının değil, dosya sahibinin ayrıcalıklarıyla yürütülmesine olanak tanır; bu da birçok açıdan bir açık kapı niteliğindedir... ayrıcalık yükseltmeGörüntü oluşturma sırasında bu parçaları arayıp kaldırmak için basit bir komut, size çok fazla zahmetten kurtarabilir.
Ayrıcalıklı modun tehlikeleri ve Linux'un yetenekleri
Bazen, izin sorununu çözememenin verdiği çaresizlikten, bayrağı kullanma cazibesine kapılıyoruz. -ayrıcalıklıBunu yapmayı unutun. Ayrıcalıklı mod, konteynerin izolasyonunu kırar ve size ana bilgisayarın cihazlarına tam erişim sağlar. Bu, bahçe kapısını nasıl açacağını bilmediği için evinizin anahtarlarını bir yabancıya vermek gibidir.
Bunun yerine, şunlarla oynamalısınız: Linux yetenekleriDocker, varsayılan bir dizi izin atar (örneğin CAP_CHOWN veya CAP_NET_RAW). Uygulamanızın ağ üzerinde düşük seviyede işlem yapmasına gerek yoksa, en akıllı yaklaşım şudur: gereksiz yetenekleri ortadan kaldırın ve yalnızca kesinlikle gerekli olanları ekleyin --cap-add.
Daha ciddi ortamları yönetenler için şunlar mevcuttur: yetkilendirme eklentileri Örneğin opa-docker-authz gibi araçlar, Docker daemon'unun API'sine yapılan çağrıları yakalamaya ve ayrıcalıklı modda bir kapsayıcı başlatma girişimini engellemeye olanak tanıyarak, hiç kimsenin, yanlışlıkla bile olsa, ana bilgisayara erişimi açık bırakmamasını sağlar.
Çevre optimizasyonu ve bakımı
Alpine Linux kullanırken 5 MB'lık imaj boyutunun kütüphanelerle uyumluluk sorunlarına yol açması durumunda takılıp kalmayın. Bazen biraz daha büyük bir Debian imajı tercih edilebilir. stabilize edilmiş ve bilinen ekip tarafından. Kritik olan şey, bir uygulamayı hayata geçirmektir. güvenlik açığı taraması Üretim aşamasına geçmeden önce CVE'leri tespit etmek için otomatikleştirilmiş CI/CD işlem hattı.
Depolama ile ilgili olarak, uygulamanın kök dosya sistemine yazmasını engeller. Bunu yapılandırın. salt okunur dosya sistemi (rootfs) ve yalnızca kalıcı olarak saklanması gereken veriler için belirli hacimler tanımlar. Bu, yalnızca daha güvenli olmakla kalmaz, aynı zamanda daha temiz bir mimariyi de zorunlu kılar. mülksüzyatay ölçeklendirmeyi kolaylaştırmak.
Planlanmış işlemler için, cron işini web sitesi kapsayıcısının içine koymayın. Altın kural şudur: konteyner başına bir işlemEn temiz yaklaşım, görevi yürüten ve ardından kendini yok eden geçici bir kapsayıcıyı başlatmak için uygulamanızın imajını kullanmak veya komutlar kullanarak kapsayıcı motorunu çağırarak cron'u ana bilgisayardan yönetmektir.
Konteyner güvenliği, kök erişimini ortadan kaldırmayı, çekirdek yeteneklerini kısıtlamayı ve konteyner imajlarından gereksiz araçları kaldırmayı içeren sürekli bir süreçtir. Ayrıcalıksız kullanıcıları, çalışma zamanı güvenliğini artırmayı ve sürekli izlemeyi birleştirerek, işlevselliğin ana sistemin bütünlüğünü tehlikeye atmadığı bir ortam elde edilir.
Genel olarak bayt ve teknoloji dünyası hakkında tutkulu bir yazar. Bilgilerimi yazarak paylaşmayı seviyorum ve bu blogda da bunu yapacağım; size gadget'lar, yazılım, donanım, teknolojik trendler ve daha fazlasıyla ilgili en ilginç şeyleri göstereceğim. Amacım dijital dünyada basit ve eğlenceli bir şekilde gezinmenize yardımcı olmaktır.

