Docker / LXC profilleri


11

MySQL çalıştıran bir Docker konteyner (LXC) var. Docker'ın arkasındaki fikir genellikle "kap başına çalışan bir işlem" olduğundan, MySQL ikili dosyasını hedefleyen AppArmor profillerini tanımlarsam, zorlanır mı? Bunu test etmemin bir yolu var mı?


neden kabın içinde apparmor kullanmak istiyorsunuz?
c4f4t0r

3
Veritabanına başka bir şeye erişmesini önlemek için sıfır gün veya başka bir istismar çalıştırılması durumunda . Linux'a güveniyorum cgroups, ama o kadar değil . Üzgün ​​olmak daha güvenlidir, MySQL sıfır gün bir gruptan kurtulmak için bir yol bulmak yerine MySQL kilitli olmasını tercih ederim.
Naftuli Kay

Yanıtlar:


8

Birincisi, cgroups bir uygulamayı bir sistemdeki diğerlerinden izole etmek için kullanılmaz. Kaynak kullanımını ve cihaz erişimini yönetmek için kullanılırlar. Bazı (sınırlı) izolasyon sağlayan çeşitli ad alanlarıdır (PID, UTS, mount, kullanıcı ...).

Ayrıca, bir Docker kapsayıcısında başlatılan bir işlem muhtemelen altında çalışmakta olduğu AppArmor profilini yönetemez. Şu anda alınan yaklaşım, kapsayıcıyı başlatmadan önce belirli bir AppArmor profili oluşturmaktır.

Docker'daki libcontainer yürütme sürücüsü, kaplar için AppArmor profillerini ayarlamayı destekliyor gibi görünüyor , ancak dokümanda herhangi bir örnek veya referans bulamıyorum.

Görünüşe göre AppArmor, Ubuntu'daki LXC ile de destekleniyor .

Uygulamanız için bir AppArmor profili yazmalı ve kap içindeki işlemleri başlatmadan önce LXC / libcontainer / Docker / ... 'nin yüklediğinden emin olmalısınız.

Bu şekilde kullanılan profiller uygulanmalı ve bunu test etmek için yasa dışı bir erişim denemeli ve başarısız olduğundan emin olmalısınız.

Bu durumda ikili ve gerçekte zorlanan profil arasında bağlantı yoktur. Docker / LXC'ye bu profili konteynırınız için kullanmasını açıkça söylemelisiniz. MySQL ikili dosyası için profil yazmak, kapsayıcıda değil, yalnızca ana bilgisayarda uygulanır.


Bu benim (sınırlı) benim deneyim oldu. Bir Docker kapsayıcısının içinden bir profil oluştururken sorun yaşadım, ancak kapsayıcı dışında bir profil oluşturulduysa ve daha sonra kopyalandıysa, çalıştırılmadan önce kapta AppArmor'u başlatmanız koşuluyla, sadece çalışması gerekir ™.
Naftuli Kay

@Siosm: LCX! = Libcontainer. Soru LXC sürücüsü ile ilgiliydi.
0xC0000022L

@ 0xC0000022L: AppArmor profil zorlama modeli, kapsayıcılardaki işlemleri sınırlamak için kullanılan herhangi bir araç için aynıdır.
Siosm

3

Cevap çok muhtemel: hayır.

Ubuntu Sunucu kılavuz konu LXC hemen hemen geçen tam soru şu açıklamayı yapıyor:

Bir kapsayıcıdaki programlar daha fazla sınırlandırılamaz - örneğin, MySQL kapsayıcı profili altında çalışır (ana bilgisayarı korur) ancak MySQL profilini giremez (kapsayıcıyı korumak için).

İstenmeyen etkilere sahip istismarlardan kaçınmak için daha iyi bir seçenek, kapsayıcıyı çalıştıran kullanıcıyı sınırlamak ve çekirdeğin özelliğini kullanan kullanıcı alanı LXC kapsayıcılarını kullanmaktır . Ancak, dockerşu anda - bildiklerime göre - desteklemiyor userns.

Böyle bir durumda MySQL - ana bilgisayarlar açısından - ayrıcalıksız kullanıcı olarak çalışır, kapsayıcı içinde ise çalıştırılabilir root. Daha sonra iptablesgerekirse MySQL'i ana bilgisayarın harici bir bağlantı noktasına bağlamak için kullanabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.