Представлен virt-sandbox, инструмент для обеспечения изолированного запуска приложений
19 января 2012 года
Даниэль Беррандж (Daniel Berrange), работающий в компании Red Hat над развитием средств виртуализации, представил первый публичный выпуск пакета libvirt-sandbox(недоступная ссылка), позволяющего организовать выполнение произвольных пользовательских приложений в изолированном окружении, построенном с использованием libvirt. В рамках libvirt-sandbox подготовлен API, расширяющий возможности libvirt в плане изолированного запуска отдельных приложений, и специальная сервисная утилита virt-sandbox.
Несколько лет назад компания Red Hat подготовила утилиту sandbox, которая позволяет организовать безопасное выполнение не вызывающих доверия программ с обеспечением изоляции при помощи SELinux, что накладывало определённые ограничения на функциональность sandbox. Утилита virt-sandbox существенно отличается от своего предшественника тем, что использует для изоляции полноценные виртуальные машины и не ограничивается только запуском подозрительных программ, а позиционируется также для более безопасного выполнения программ в повседневной практике и для организации быстрого запуска виртуальных машин для различных сетевых приложений. При использовании virt-sandbox требующие изоляции приложения запускаются напрямую из файловой системы базового хоста, без предварительной установки, сборки и настройки начинки гостевой системы. В настоящее время virt-sandbox поддерживает изоляцию с использованием гипервизора KVM и изолированных контейнеров LXC, но теоретически могут быть использованы любые системы виртуализации, поддерживаемые в libvirt (Xen, VirtualBox и т.п.).
При использовании системы виртуализации KVM возникает проблема с необходимостью формирования полного программного окружения при выполнении каждого приложения, запускаемого в virt-sandbox. Разработчики virt-sandbox нашли простой выход: при каждом запуске на лету создаётся минимальный загрузочный initrd-образ, содержащий специально созданную программу инициализации. После того как данный образ получит управление, программа инициализации загружает модуль ядра virtio-9p и монтирует корневую ФС текущей базовой системы в режиме только для чтения. Таким образом для изолированного приложения формируется гостевое окружение, полностью аналогичное по своему составу базовой системе, но не допускающее внесения изменений. После монтирования ФС производится запуск указанного приложения и перенаправление ввода/вывода на хост-систему. После завершения работы программы, виртуальная машина автоматические завершает своё выполнение. На формирование гостевой системы тратится всего несколько секунд, например, запуск /bin/false под управлением virt-sandbox занимает около 4 секунд (после оптимизации время планируется сократить до 2 секунд).
Подготовка специального API для изолированного запуска отдельных приложений сулит интересные возможности для разработчиков сторонних систем. Например, программист может определить желаемые характеристики изолированного окружения, указав какую программу следует выполнить, какие части ФС смонтировать и какие использовать параметры сети. После вызова соответствующей функции libvirt-sandbox на базе указанной конфигурации можно получить на выходе XML-конфигурацию libvirt для формирования гостевой системы, соответствующей заданным характеристикам и адаптированной для конкретной системы виртуализации.
В настоящее время полноценно работают только консольные приложения. Реализована начальная поддержка запуска GUI-программ, но она ещё требует значительной доработки. Среди планов на будущее отмечается: адаптация virt-viewer и использование SPICE/VNC для организации запуска в sandbox-режиме графических приложений; создание надлежащих политик SELinux для доступа к базовой файловой системе в режиме только для чтения (в настоящее время virt-sandbox работает только в permissive-режиме SELinux); подготовка утилиты для автоматического формирования типовых окружений для различных сервисов, например, для обеспечения запуска изолированной копии apache; задействование возможностей libvirt по формированию межсетевого экрана для дополнительной фильтрации сетевого трафика от изолированных приложений.
Готовые rpm-пакеты с libvirt-sandbox подготовлены(недоступная ссылка) для Fedora Linux и доступны в репозитории rawhide (Архивная копия от 16 января 2012 на Wayback Machine). Планируется, что новая система изоляции будет включена в состав релиза Fedora 17.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.