1
🪨 Все по песочницам!
• Представьте, что вам нужно запустить некоторый процесс Linux в изолированной среде. Так, чтобы он не смог нанести вред системе, на которой запускается. Какие инструменты мы используем в таких случаях? Первое, что приходит в голову, это технологии виртуализации или контейнеризации. Но что, если нам нужно что-то более легковесное и простое в использовании? Bubblewrap — это утилита командной строки, которая является одним из проектов сообщества Containers (знаменито авторством таких инструментов, как Podman, Buildah, Skopeo и др.).
• Когда может быть полезен:
➡Невысокие требования к изоляции процесса и системы;
➡Недопустимы накладные расходы как у более сложных средств изоляции;
➡Тестирование (поведения) программы в разных условиях эксплуатации;
➡Запуск программ/скриптов/кода, полученных из ненадежных источников;
➡Лимитирование расхода ресурсов для отдельно взятого процесса;
➡Изменение структуры файловой системы для запускаемого процесса.
• Стоит сказать, что bubblewrap — это не то ПО, которое предоставляет готовую "песочницу" с определенной политикой безопасности. В некоторых вариантах использования bubblewrap требуется граница безопасности между изолированной средой и реальной системой; в других вариантах использования требуется возможность изменять расположение файловой системы для процессов внутри изолированной среды, но не ставится цель создания границы безопасности. В результате уровень защиты между изолированными процессами и хост-системой определяется аргументами, передаваемыми bubblewrap.
• Таким образом, используя аргументы командной строки, вы сами определяете уровень изоляции запускаемого процесса. При этом под капотом Bubblewrap использует стандартные средства Linux, которые не требуют повышения привилегий пользователя: chroot, clone, seccomp, cgroups, landlock.
• Основные плюсы:
➡Не требуются root-привилегии;
➡Изолирует работу только одного процесса;
➡Может использоваться для изоляции приложений с графическим UI;
➡Предоставляет большой спектр настроек лимитирования;
➡Простая установка и использование;
➡Низкие накладные расходы на изоляцию.
• Основной минус — это то, что ограничение на ресурсы системы устанавливаются только с использованием cgroup. Это значит, что для полноценной работы bwrap в Docker/Kubernetes-контейнере последний придется запустить в privileged-режиме!
➡️ https://github.com/containers/bubblewrap
• Дополнительно:
• Firejail — гибкий и мощный инструмент изоляции, который не просто контроли