Все по песочницам!

Представьте, что вам нужно запустить некоторый процесс Linux в изолированной среде. Так, чтобы он не смог нанести вред системе, на которой запускается. Какие инструменты мы используем в таких случаях? Первое, что приходит в голову, это технологии виртуализации или контейнеризации. Но что, если нам нужно что-то более легковесное и простое в использовании? Bubblewrap — это утилита командной строки, которая является одним из проектов сообщества Containers (знаменито авторством таких инструментов, как Podman, Buildah, Skopeo и др.).

• Когда может быть полезен:

Невысокие требования к изоляции процесса и системы;
Недопустимы накладные расходы как у более сложных средств изоляции;
Тестирование (поведения) программы в разных условиях эксплуатации;
Запуск программ/скриптов/кода, полученных из ненадежных источников;
Лимитирование расхода ресурсов для отдельно взятого процесса;
Изменение структуры файловой системы для запускаемого процесса.

Стоит сказать, что bubblewrap — это не то ПО, которое предоставляет готовую "песочницу" с определенной политикой безопасности. В некоторых вариантах использования bubblewrap требуется граница безопасности между изолированной средой и реальной системой; в других вариантах использования требуется возможность изменять расположение файловой системы для процессов внутри изолированной среды, но не ставится цель создания границы безопасности. В результате уровень защиты между изолированными процессами и хост-системой определяется аргументами, передаваемыми bubblewrap.

Таким образом, используя аргументы командной строки, вы сами определяете уровень изоляции запускаемого процесса. При этом под капотом Bubblewrap использует стандартные средства Linux, которые не требуют повышения привилегий пользователя: chroot, clone, seccomp, cgroups, landlock.

• Основные плюсы:


Не требуются root-привилегии;
Изолирует работу только одного процесса;
Может использоваться для изоляции приложений с графическим UI;
Предоставляет большой спектр настроек лимитирования;
Простая установка и использование;
Низкие накладные расходы на изоляцию.

Основной минус — это то, что ограничение на ресурсы системы устанавливаются только с использованием cgroup. Это значит, что для полноценной работы bwrap в Docker/Kubernetes-контейнере последний придется запустить в privileged-режиме!

emoji https://github.com/containers/bubblewrap

Дополнительно:

Firejail — гибкий и мощный инструмент изоляции, который не просто контролирует доступ к файловой системе, а полностью отрезает приложение от основной системы с помощью механизма Linux Namespaces. Подробнее тут: @it_secur1053

#Linux #Песочница
45 2.2K

Обсуждение 0

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram