Vaš servis bez operacijskog sustava
Unikernel je jedan samostalan program koji se pokreće izravno na virtualnom poslužitelju (KVM), bez Linuxa, ljuske i procesa. Prilagodimo vaš servis tako da radi na takvoj osnovi, a vi ga pokrećete s jednom slikom diska. Osnovu smo sami razvili i provjerili na vlastitom proizvodu, MQTT brokeru urMQTT.
Prednosti
Mala površina napada
Jedna statički povezana slika bez operacijskog sustava, ljuske i korisničkih procesa; otvara se samo ono što servis treba. Komponente koje nisu pouzdane (npr. biblioteka u C-u) mogu raditi izolirano, u zasebnom adresnom prostoru bez pristupa jezgri.
Manje održavanja
Nema operacijskog sustava koji treba krpati i nadograđivati: nova verzija je nova slika. Slika je velika samo nekoliko megabajta.
Manje komponenti, manje iznenađenja
Ponašanje je određeno jednim programom i njegovom konfiguracijom; nema pozadinskih servisa, paketa ni usluga koje se pokreću same.
Konfiguracija je podatak
Postavke i certifikati pakiraju se u provjerenu konfiguraciju koja se provjerava pri svakom pokretanju; slika ispisuje otisak konfiguracije, pa se može provjeriti da je to ona koju ste naručili.
Sigurnost je ugrađena u osnovu
TLS 1.3 s uzajamnom autentikacijom, zaštita od preplavljivanja mreže, ograničenja resursa i čuvar vremena sprječavaju da jedan loš klijent zaustavi ostale; pohrana je provjerena prekidom napajanja na svakom zapisu, s mogućnošću šifriranja diska.
Provjerljivo i bez vezanosti
Ponovljive gradnje, potpisana izdanja, popis sastavnica (SBOM), otvoreni izvorni kod osnove i revizijski paket koji navodi i poznate nedostatke.
Pogodno za mala i velika okruženja
Isti kod radi na aarch64 i x86_64 virtualnim poslužiteljima.
Što nudimo
Cijena za sve: na upit
Procjena izvedivosti
Pregledamo vaš servis (jezik, ovisnosti, mrežne i diskovne potrebe) i kažemo što je moguće, što treba prepraviti i koliko je to posla, prije nego što ugovorite bilo što drugo.
Prilagodba servisa unikernelu
Servis (najlakše u Rustu; C biblioteke u izoliranom radniku) prilagodimo našoj osnovi: mreža, TLS, pohrana, konfiguracija i evidencija događaja.
Pilot na vašem poslužitelju
Pokrenemo servis na vašoj infrastrukturi (KVM), isprobamo s vašim prometom i predamo izvještaj o performansama.
Podrška i održavanje
Nadogradnje slike, obrada prijavljenih ranjivosti i obuka vašeg tima.
urMQTT kao gotov proizvod
Ako vam treba MQTT broker: konfigurirana, potpisana slika s vašim certifikatima.
Što je dobar kandidat, a što nije
Dobar kandidat: servis s jednom namjenom koji prima mrežne veze: protokolski poslužitelj, pristupnik (gateway), prikupljač podataka, TLS završna točka, rubni uređaj. Slabiji kandidat: program koji treba Linux ekosustav, datotečni sustav, mnogo procesa ili velik broj odlaznih veza. Današnja osnova prihvaća veze (TCP poslužitelj), ne otvara odlazne TCP veze i podržava samo IPv4; proširenja procjenjujemo po projektu.
Platforme i jezici: što danas podržavamo
| Platforma | Stanje |
|---|---|
| KVM virtualni poslužitelji, aarch64 | Provjereno (Apple HVF i TCG) |
| KVM virtualni poslužitelji, x86_64 (UEFI i BIOS) | Pokrenuto na pravom KVM VPS-u (AMD EPYC), uz testove u emulatoru; na fizičkom hardveru nije probano |
| Virtualni uređaji | virtio (mreža, disk, SCSI, slučajni brojevi) |
| Mreža | IPv4; TCP kao poslužitelj (prima veze, ne otvara odlazne) |
| Fizički poslužitelji (bare metal), VMware, Hyper-V, Xen | Ne podržavamo (još) |
| Jezik servisa | Stanje |
|---|---|
| Rust | Prirodan izbor: cijela osnova je u Rustu |
| C | Samo kao izolirani program uz naš mali libc sloj (tako radi SQLite); nije POSIX |
| C++ | Moguće kao C, bez dokaza; procjenjuje se po projektu |
| Go, Java, Python, Node.js, .NET, PHP | Ne podržavamo: traže operacijski sustav. Servis se u tom slučaju prepisuje u Rustu, ili ostaje na Linuxu uz unikernel-pristupnik na rubu |
Što treba znati odmah
Osnova je u ranoj fazi (verzija prije 1.0). Cilja virtualne poslužitelje pod KVM-om; x86_64 je pokrenut na pravom KVM VPS-u i u emulatoru, ali ne na fizičkom hardveru; sigurno pokretanje (Secure Boot) je djelomično, a neovisna sigurnosna revizija još nije napravljena. Zato ponudu dajemo kao pilot uz podršku, a ne kao certificirano rješenje.
Primjer: urMQTT
MQTT broker na toj osnovi: TLS 1.3 s uzajamnom autentikacijom, opoziv certifikata bez nove slike, izolirana SQLite baza, šifriranje diska po želji. Pogledajte izvorni kod na GitHubu ili nam se javite.