← Вернуться на главную

Ваш сервис без операционной системы

Unikernel — это одна самостоятельная программа, которая запускается прямо на виртуальном сервере (KVM), без Linux, оболочки и процессов. Мы адаптируем ваш сервис под такую основу, а вы запускаете его с одного образа диска. Основу мы разработали сами и проверили на собственном продукте, MQTT-брокере urMQTT.

Преимущества

Малая поверхность атаки

Один статически скомпонованный образ без операционной системы, оболочки и пользовательских процессов; открывается только то, что нужно сервису. Компоненты, которым нельзя полностью доверять (например, библиотека на C), могут работать изолированно, в отдельном адресном пространстве без доступа к ядру.

Меньше обслуживания

Нет операционной системы, которую нужно патчить и обновлять: новая версия — это новый образ. Образ занимает всего несколько мегабайт.

Меньше частей, меньше сюрпризов

Поведение определяется одной программой и её конфигурацией; нет фоновых служб, пакетов и того, что запускается само.

Конфигурация — это данные

Настройки и сертификаты упаковываются в проверенную конфигурацию, которая проверяется при каждом запуске; образ выводит отпечаток своей конфигурации, так что можно убедиться, что это тот образ, который вы заказали.

Безопасность встроена в основу

TLS 1.3 с взаимной аутентификацией, защита от сетевого флуда, лимиты ресурсов и сторожевой таймер не дают одному плохому клиенту остановить остальных; хранилище проверяется отключением питания при каждой записи, с необязательным шифрованием диска.

Проверяемо и без привязки

Воспроизводимые сборки, подписанные релизы, перечень компонентов (SBOM), основа с открытым исходным кодом и аудиторский пакет, в котором перечислены и известные слабые места.

Подходит для малых и больших окружений

Один и тот же код работает на виртуальных серверах aarch64 и x86_64.

Что мы предлагаем

Цена на всё: по запросу

Оценка реализуемости

Мы изучаем ваш сервис (язык, зависимости, потребности в сети и диске) и говорим, что возможно, что придётся переделать и сколько это работы, прежде чем вы возьмёте на себя какие-либо другие обязательства.

Адаптация сервиса под unikernel

Мы переносим сервис (проще всего на Rust; библиотеки на C — в изолированном рабочем процессе) на нашу основу: сеть, TLS, хранилище, конфигурация и журналирование.

Пилот на вашем сервере

Запускаем сервис на вашей инфраструктуре (KVM), проверяем его на вашем трафике и передаём отчёт о производительности.

Поддержка и сопровождение

Обновления образа, обработка сообщений об уязвимостях и обучение вашей команды.

urMQTT как готовый продукт

Если вам нужен MQTT-брокер: настроенный, подписанный образ с вашими сертификатами.

Хороший кандидат и неподходящий

Хороший: сервис с одной задачей, принимающий сетевые соединения: сервер протокола, шлюз (gateway), сборщик данных, точка завершения TLS, пограничное устройство. Хуже: программа, которой нужна экосистема Linux, файловая система, много процессов или большое число исходящих соединений. Нынешняя основа принимает соединения (TCP-сервер), не открывает исходящие TCP-соединения и поддерживает только IPv4; расширения оцениваются по каждому проекту.

Платформы и языки: что мы поддерживаем сегодня

Платформы и языки: что мы поддерживаем сегодня
ПлатформаСостояние
Виртуальные серверы KVM, aarch64Проверено (Apple HVF и TCG)
Виртуальные серверы KVM, x86_64 (UEFI и BIOS)Запускалось на настоящем KVM VPS (AMD EPYC), плюс тесты в эмуляторе; на физическом оборудовании не пробовалось
Виртуальные устройстваvirtio (сеть, диск, SCSI, случайные числа)
СетьIPv4; TCP в роли сервера (принимает соединения, исходящие не открывает)
Физические серверы (bare metal), VMware, Hyper-V, XenНе поддерживается (пока)
Язык сервиса
Язык сервисаСостояние
RustЕстественный выбор: вся основа написана на Rust
CТолько как изолированная программа с нашим небольшим слоем libc (так работает SQLite); это не POSIX
C++Возможно, как C, но не доказано; оценивается по каждому проекту
Go, Java, Python, Node.js, .NET, PHPНе поддерживаются: им нужна операционная система. Тогда сервис переписывается на Rust либо остаётся на Linux с unikernel-шлюзом на границе

Что нужно знать сразу

Основа находится на ранней стадии (версия до 1.0). Она рассчитана на виртуальные серверы KVM; x86_64 запускался на настоящем KVM VPS и в эмуляторе, но не на физическом оборудовании; Secure Boot поддерживается частично, а независимый аудит безопасности ещё не проводился. Поэтому мы предлагаем пилот с поддержкой, а не сертифицированный продукт.

Пример: urMQTT

MQTT-брокер на этой основе: TLS 1.3 с взаимной аутентификацией, отзыв сертификатов без нового образа, изолированная база SQLite, необязательное шифрование диска. Посмотрите исходный код на GitHub или свяжитесь с нами.