Ваш сервис без оперативног система
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-у или нам се јавите.