← Powrót do strony głównej

Twoja usługa bez systemu operacyjnego

Unikernel to jeden samodzielny program uruchamiany bezpośrednio na serwerze wirtualnym (KVM), bez Linuksa, powłoki i procesów. Dostosowujemy Twoją usługę do takiej podstawy, a Ty uruchamiasz ją z jednego obrazu dysku. Podstawę opracowaliśmy sami i sprawdziliśmy na własnym produkcie, brokerze MQTT urMQTT.

Zalety

Mała powierzchnia ataku

Jeden statycznie zlinkowany obraz, bez systemu operacyjnego, powłoki i procesów użytkownika; otwierane jest tylko to, czego usługa potrzebuje. Komponenty, którym nie można w pełni ufać (np. biblioteka w C), mogą działać w izolacji, we własnej przestrzeni adresowej, bez dostępu do jądra.

Mniej utrzymania

Brak systemu operacyjnego do łatania i aktualizowania: nowa wersja to nowy obraz. Obraz ma tylko kilka megabajtów.

Mniej części, mniej niespodzianek

Zachowanie wyznacza jeden program i jego konfiguracja; nie ma usług w tle, pakietów ani rzeczy uruchamiających się samoczynnie.

Konfiguracja to dane

Ustawienia i certyfikaty są pakowane w zweryfikowaną konfigurację, sprawdzaną przy każdym uruchomieniu; obraz wypisuje odcisk swojej konfiguracji, więc można sprawdzić, że to ten, który zamówiono.

Bezpieczeństwo wbudowane w podstawę

TLS 1.3 z wzajemnym uwierzytelnianiem, ochrona przed zalewaniem sieci, limity zasobów i watchdog zapobiegają temu, by jeden zły klient zatrzymał pozostałych; pamięć masowa jest testowana odcięciem zasilania przy każdym zapisie, z opcjonalnym szyfrowaniem dysku.

Weryfikowalne i bez uzależnienia

Odtwarzalne kompilacje, podpisane wydania, wykaz komponentów oprogramowania (SBOM), podstawa o otwartym kodzie źródłowym i pakiet audytowy, który wymienia także znane słabości.

Dla małych i dużych środowisk

Ten sam kod działa na serwerach wirtualnych aarch64 i x86_64.

Co oferujemy

Cena za całość: na zapytanie

Ocena wykonalności

Przeglądamy Twoją usługę (język, zależności, potrzeby sieciowe i dyskowe) i mówimy, co jest możliwe, co trzeba zmienić i ile to pracy, zanim zobowiążesz się do czegokolwiek innego.

Dostosowanie usługi do unikernela

Przenosimy usługę (najłatwiej w Rust; biblioteki C w izolowanym workerze) na naszą podstawę: sieć, TLS, pamięć masowa, konfiguracja i rejestrowanie zdarzeń.

Pilotaż na Twoim serwerze

Uruchamiamy usługę w Twojej infrastrukturze (KVM), testujemy ją na Twoim ruchu i przekazujemy raport o wydajności.

Wsparcie i utrzymanie

Aktualizacje obrazu, obsługa zgłoszonych podatności i szkolenie Twojego zespołu.

urMQTT jako gotowy produkt

Jeśli potrzebujesz brokera MQTT: skonfigurowany, podpisany obraz z Twoimi certyfikatami.

Dobry kandydat i gorszy kandydat

Dobry: usługa o jednym przeznaczeniu, przyjmująca połączenia sieciowe: serwer protokołu, brama (gateway), kolektor danych, punkt końcowy TLS, urządzenie brzegowe. Gorszy: program, który potrzebuje ekosystemu Linuksa, systemu plików, wielu procesów lub dużej liczby połączeń wychodzących. Dzisiejsza podstawa przyjmuje połączenia (serwer TCP), nie otwiera wychodzących połączeń TCP i obsługuje tylko IPv4; rozszerzenia oceniamy dla każdego projektu osobno.

Platformy i języki: co obsługujemy dziś

Platformy i języki: co obsługujemy dziś
PlatformaStan
Serwery wirtualne KVM, aarch64Sprawdzone (Apple HVF i TCG)
Serwery wirtualne KVM, x86_64 (UEFI i BIOS)Uruchomione na prawdziwym KVM VPS (AMD EPYC), a także testy w emulatorze; na fizycznym sprzęcie nie próbowano
Urządzenia wirtualnevirtio (sieć, dysk, SCSI, liczby losowe)
SiećIPv4; TCP jako serwer (przyjmuje połączenia, nie otwiera wychodzących)
Serwery fizyczne (bare metal), VMware, Hyper-V, XenNieobsługiwane (jeszcze)
Język usługi
Język usługiStan
RustNaturalny wybór: cała podstawa jest w Rust
CTylko jako izolowany program z naszą małą warstwą libc (tak działa SQLite); to nie jest POSIX
C++Możliwe jak C, niesprawdzone; oceniane dla każdego projektu
Go, Java, Python, Node.js, .NET, PHPNieobsługiwane: wymagają systemu operacyjnego. Wtedy usługę przepisuje się na Rust albo zostaje na Linuksie z bramą unikernel na brzegu

Co warto wiedzieć na wstępie

Podstawa jest na wczesnym etapie (wersja przed 1.0). Jest przeznaczona dla serwerów wirtualnych KVM; x86_64 działało na prawdziwym KVM VPS i w emulatorze, ale nie na fizycznym sprzęcie; Secure Boot jest częściowy, a niezależnego audytu bezpieczeństwa jeszcze nie przeprowadzono. Dlatego oferujemy pilotaż ze wsparciem, a nie produkt certyfikowany.

Przykład: urMQTT

Broker MQTT zbudowany na tej podstawie: TLS 1.3 z wzajemnym uwierzytelnianiem, unieważnianie certyfikatów bez nowego obrazu, izolowana baza SQLite, opcjonalne szyfrowanie dysku. Zajrzyj do kodu źródłowego na GitHubie albo napisz do nas.