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ś
| Platforma | Stan |
|---|---|
| Serwery wirtualne KVM, aarch64 | Sprawdzone (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 wirtualne | virtio (sieć, dysk, SCSI, liczby losowe) |
| Sieć | IPv4; TCP jako serwer (przyjmuje połączenia, nie otwiera wychodzących) |
| Serwery fizyczne (bare metal), VMware, Hyper-V, Xen | Nieobsługiwane (jeszcze) |
| Język usługi | Stan |
|---|---|
| Rust | Naturalny wybór: cała podstawa jest w Rust |
| C | Tylko 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, PHP | Nieobsł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.