برای جداسازی، از فناوریهای مجازیسازی کانتینر لینوکس سنتی بر اساس استفاده از cgroups، namespaces، Seccomp و SELinux استفاده میشود. برای انجام عملیات ممتاز برای پیکربندی یک کانتینر، Bubblewrap با حقوق ریشه (یک فایل اجرایی با پرچم suid) راهاندازی میشود و پس از مقداردهی اولیه کانتینر، امتیازات را بازنشانی میکند.
Активация в системе пространств имён идентификаторов пользователя (user namespaces), позволяющих использовать в контейнерах собственный отдельный набор идентификаторов, для работы не требуется, так как по умолчанию не работает во многих дистрибутивах (Bubblewrap позиционируется как ограниченная suid-реализация подмножества возможностей user namespaces — для исключения всех идентификаторов пользователей и процессов из окружения, кроме текущего, используются режимы CLONE_NEWUSER и CLONE_NEWPID). Для дополнительной защиты исполняемые под управлением
Bubblewrap программы запускаются в режиме PR_SET_NO_NEW_PRIVS, запрещающем получение новых привилегий, например, при наличии флага setuid.
جداسازی در سطح فایل سیستم با ایجاد یک فضای نام mount جدید به طور پیش فرض انجام می شود که در آن یک پارتیشن خالی ریشه با استفاده از tmpfs ایجاد می شود. در صورت لزوم، پارتیشنهای خارجی FS در حالت mount —bind به این پارتیشن متصل میشوند (به عنوان مثال، هنگام راهاندازی با گزینه bwrap —ro-bind /usr /usr، پارتیشن /usr از سیستم اصلی ارسال میشود. در حالت فقط خواندنی). قابلیتهای شبکه محدود به دسترسی به رابط Loopback با جداسازی پشته شبکه از طریق پرچمهای CLONE_NEWNET و CLONE_NEWUTS است.
تفاوت کلیدی با پروژه مشابه
Новый выпуск примечателен реализацией поддержки присоединения существующих пространств имён идентификаторов пользователей (user namespaces) и процессов (pid namespaces). Для управления подключением пространств имён добавлены флаги «—userns», «—userns2» и «—pidns».
Данная возможность не работает в режиме setuid и требует применения отдельного режима, который может работать без получения прав root, но требует активации
user namespaces в системе (по умолчанию отключены в Debian и RHEL/CentOS) и не исключает возможность
منبع: opennet.ru