Даниэль Беррандж (Daniel Berrange), работающий в компании Red Hat над развитием средств виртуализации, представил первый публичный выпуск пакета libvirt-sandbox, позволяющего организовать выполнение произвольных пользовательских приложений в изолированном окружении, построенном с использованием libvirt. В рамках libvirt-sandbox подготовлен API, расширяющий возможности libvirt в плане изолированного запуска отдельных приложений, и специальная сервисная утилита virt-sandbox.
Несколько лет назад компания Red Hat подготовила утилиту sandbox, которая позволяла организовать безопасное выполнение не испытывающих доверия программ с обеспечением изоляции при помощи SELinux. Утилита virt-sandbox существенно отличается от своего предшественника тем, что использует для изоляции полноценные виртуальные машины и не ограничивается только запуском подозрительных программ, а позиционируется также для более безопасного выполнения программ в повседневной практике и для организации быстрого запуска виртуальных машин для различных сетевых приложений. При использовании virt-sandbox требующие изоляции приложения запускаются напрямую из файловой системы базового хоста, без предварительной установки, сборки и настройки начинки гостевой системы. В настоящее время virt-sandbox поддерживает изоляцию с использованием гипервизора KVM или изолированных контейнеров LXC, но теоретически могут быть использованы любые системы виртуализации, поддерживаемые в libvirt.
При использовании полной виртуализации возникает проблема с необходимостью формирования полного программного окружения при выполнении каждого приложения, запускаемого в virt-sandbox. Разработчики virt-sandbox нашли простой выход: при каждом запуске на лету создаётся минимальный загрузочный initrd-образ, содержащий специально созданную программу инициализации. После того как данный образ получит управление, программа инициализации загружает модуль ядра virtio-9p и монтирует корневую ФС текущей базовой системы в режиме только для чтения. Таким образом для изолированного приложения формируется гостевое окружение, полностью аналогичное по своему составу базовой системе, но не допускающее внесение изменений. После монтирования ФС производится запуск указанного приложения и перенаправление ввода/вывода на хост-систему. После завершения работы программы, виртуальная машина автоматические завершает своё выполнение. На формирование гостевой системы тратится всего несколько секунд, например, запуск /bin/false под управлением virt-sandbox занимает около 4 секунд.
В настоящее время полноценно работают только консольные приложения. Реализована начальная поддержка запуска GUI-программ, но она ещё требует значительной доработки. Среди планов на будущее отмечается: Адаптация virt-viewer и использование SPICE/VNC для организации запуска в sandbox-режиме графических приложений; Создание надлежащих политик SELinux для доступа к базовой файловой системе в режиме только для чтения (в настоящее время virt-sandbox работает только в permissive-режиме SELinux); Подготовка утилиты для автоматического формирования типовых окружений для различных сервисов, например, для обеспечения запуска изолированной копии apache; Задействование возможностей libvirt по формированию межсетевого экрана для дополнительной фильтрации сетевого трафика от изолированных приложений.