Ваш сервис без операционной системы
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 или свяжитесь с нами.