Vaša storitev brez operacijskega sistema
Unikernel je en samostojen program, ki teče neposredno na virtualnem strežniku (KVM), brez Linuxa, lupine in procesov. Vašo storitev prilagodimo taki osnovi, vi pa jo zaženete z ene slike diska. Osnovo smo razvili sami in jo preizkusili na lastnem izdelku, MQTT brokerju urMQTT.
Prednosti
Majhna površina za napad
Ena statično povezana slika brez operacijskega sistema, lupine in uporabniških procesov; odpre se le tisto, kar storitev potrebuje. Komponente, ki jim ni mogoče povsem zaupati (npr. knjižnica v C), lahko tečejo izolirano, v ločenem naslovnem prostoru brez dostopa do jedra.
Manj vzdrževanja
Ni operacijskega sistema, ki bi ga bilo treba krpati in nadgrajevati: nova različica je nova slika. Slika je velika le nekaj megabajtov.
Manj delov, manj presenečenj
Obnašanje določa en program in njegova konfiguracija; ni storitev v ozadju, paketov ali stvari, ki se zaženejo same.
Konfiguracija je podatek
Nastavitve in certifikati se zapakirajo v preverjeno konfiguracijo, ki se preveri ob vsakem zagonu; slika izpiše prstni odtis svoje konfiguracije, tako da lahko preverite, da je tista, ki ste jo naročili.
Varnost je vgrajena v osnovo
TLS 1.3 z vzajemno overitvijo, zaščita pred preplavljanjem omrežja, omejitve virov in nadzorna ura preprečujejo, da bi en slab odjemalec ustavil druge; shramba je preizkušena z izpadom elektrike ob vsakem zapisu, po želji s šifriranjem diska.
Preverljivo in brez vezanosti
Ponovljive gradnje, podpisane izdaje, seznam programskih komponent (SBOM), osnova z odprto kodo in revizijski paket, ki navaja tudi znane slabosti.
Primerno za majhna in velika okolja
Ista koda teče na virtualnih strežnikih aarch64 in x86_64.
Kaj ponujamo
Cena za vse: na zahtevo
Ocena izvedljivosti
Pregledamo vašo storitev (jezik, odvisnosti, omrežne in diskovne potrebe) in povemo, kaj je mogoče, kaj je treba spremeniti in koliko dela je to, preden se zavežete h karkoli drugemu.
Prilagoditev storitve unikernelu
Storitev (najlažje v Rustu; knjižnice v C v izoliranem delavcu) prenesemo na našo osnovo: omrežje, TLS, shramba, konfiguracija in beleženje dogodkov.
Pilot na vašem strežniku
Storitev zaženemo na vaši infrastrukturi (KVM), jo preizkusimo z vašim prometom in predamo poročilo o zmogljivosti.
Podpora in vzdrževanje
Nadgradnje slike, obravnava prijavljenih ranljivosti in usposabljanje vaše ekipe.
urMQTT kot končni izdelek
Če potrebujete MQTT broker: konfigurirana, podpisana slika z vašimi certifikati.
Dober kandidat in slabši kandidat
Dober: storitev z enim namenom, ki sprejema omrežne povezave: protokolni strežnik, prehod (gateway), zbiralnik podatkov, končna točka TLS, robna naprava. Slabši: program, ki potrebuje ekosistem Linux, datotečni sistem, veliko procesov ali veliko odhodnih povezav. Današnja osnova sprejema povezave (strežnik TCP), ne odpira odhodnih povezav TCP in podpira samo IPv4; razširitve ocenimo po projektu.
Platforme in jeziki: kaj podpiramo danes
| Platforma | Stanje |
|---|---|
| Virtualni strežniki KVM, aarch64 | Preverjeno (Apple HVF in TCG) |
| Virtualni strežniki KVM, x86_64 (UEFI in BIOS) | Zagnano na pravem KVM VPS (AMD EPYC), poleg tega testi v emulatorju; na fizični strojni opremi ni bilo preizkušeno |
| Virtualne naprave | virtio (omrežje, disk, SCSI, naključna števila) |
| Omrežje | IPv4; TCP kot strežnik (sprejema povezave, ne odpira odhodnih) |
| Fizični strežniki (bare metal), VMware, Hyper-V, Xen | Ni podprto (še) |
| Jezik storitve | Stanje |
|---|---|
| Rust | Naravna izbira: vsa osnova je v Rustu |
| C | Samo kot izoliran program z našo majhno plastjo libc (tako teče SQLite); ni POSIX |
| C++ | Mogoče kot C, ni dokazano; ocenimo po projektu |
| Go, Java, Python, Node.js, .NET, PHP | Ni podprto: potrebujejo operacijski sistem. Storitev se takrat prepiše v Rust ali ostane na Linuxu z unikernel prehodom na robu |
Kaj je treba vedeti takoj
Osnova je v zgodnji fazi (različica pred 1.0). Cilja na virtualne strežnike KVM; x86_64 je tekel na pravem KVM VPS in v emulatorju, ne pa na fizični strojni opremi; varni zagon (Secure Boot) je delen, neodvisna varnostna revizija pa še ni bila opravljena. Zato ponujamo pilot s podporo, ne certificiranega izdelka.
Primer: urMQTT
MQTT broker na tej osnovi: TLS 1.3 z vzajemno overitvijo, preklic certifikatov brez nove slike, izolirana podatkovna baza SQLite, šifriranje diska po želji. Oglejte si izvorno kodo na GitHubu ali nas kontaktirajte.