Il tuo servizio senza sistema operativo
Un unikernel è un unico programma autonomo che gira direttamente su un server virtuale (KVM), senza Linux, shell e processi. Adattiamo il tuo servizio a una base di questo tipo e tu lo avvii da una sola immagine disco. La base l'abbiamo sviluppata noi e provata sul nostro prodotto, il broker MQTT urMQTT.
Vantaggi
Superficie d'attacco ridotta
Un'unica immagine collegata staticamente, senza sistema operativo, shell né processi utente; si apre solo ciò di cui il servizio ha bisogno. I componenti di cui non ci si può fidare del tutto (ad esempio una libreria C) possono girare isolati, in uno spazio di indirizzi separato e senza accesso al kernel.
Meno manutenzione
Nessun sistema operativo da aggiornare: una nuova versione è una nuova immagine. L'immagine pesa solo pochi megabyte.
Meno parti, meno sorprese
Il comportamento è definito da un solo programma e dalla sua configurazione; non ci sono servizi in background, pacchetti o cose che partono da sole.
La configurazione è un dato
Impostazioni e certificati sono impacchettati in una configurazione validata, controllata a ogni avvio; l'immagine stampa l'impronta della propria configurazione, così puoi verificare che sia quella che hai ordinato.
La sicurezza è parte della base
TLS 1.3 con autenticazione reciproca, protezione dai flood di rete, limiti di risorse e un watchdog impediscono che un client difettoso blocchi gli altri; l'archiviazione è provata con un'interruzione di corrente a ogni scrittura, con cifratura del disco facoltativa.
Verificabile e senza vincoli
Build riproducibili, release firmate, distinta dei componenti software (SBOM), base a codice aperto e un pacchetto di audit che elenca anche le debolezze note.
Adatto a installazioni piccole e grandi
Lo stesso codice gira su server virtuali aarch64 e x86_64.
Cosa offriamo
Prezzo per tutto: su richiesta
Valutazione di fattibilità
Esaminiamo il tuo servizio (linguaggio, dipendenze, esigenze di rete e di disco) e ti diciamo cosa è possibile, cosa va modificato e quanto lavoro richiede, prima che tu ti impegni su qualsiasi altra cosa.
Adattamento del tuo servizio all'unikernel
Portiamo il servizio (più semplice in Rust; librerie C in un worker isolato) sulla nostra base: rete, TLS, archiviazione, configurazione e registrazione degli eventi.
Un progetto pilota sul tuo server
Avviamo il servizio sulla tua infrastruttura (KVM), lo proviamo con il tuo traffico e consegniamo un rapporto sulle prestazioni.
Supporto e manutenzione
Aggiornamenti dell'immagine, gestione delle vulnerabilità segnalate e formazione del tuo team.
urMQTT come prodotto pronto
Se ti serve un broker MQTT: un'immagine configurata e firmata con i tuoi certificati.
Un buon candidato e uno meno adatto
Buono: un servizio con un solo scopo che accetta connessioni di rete: un server di protocollo, un gateway, un raccoglitore di dati, un endpoint TLS, un dispositivo edge. Meno adatto: un programma che richiede l'ecosistema Linux, un filesystem, molti processi o un gran numero di connessioni in uscita. La base attuale accetta connessioni (server TCP), non apre connessioni TCP in uscita e supporta solo IPv4; le estensioni si valutano progetto per progetto.
Piattaforme e linguaggi: cosa supportiamo oggi
| Piattaforma | Stato |
|---|---|
| Server virtuali KVM, aarch64 | Verificato (Apple HVF e TCG) |
| Server virtuali KVM, x86_64 (UEFI e BIOS) | Eseguito su un vero VPS KVM (AMD EPYC), più test in emulatore; non provato su hardware fisico |
| Dispositivi virtuali | virtio (rete, disco, SCSI, numeri casuali) |
| Rete | IPv4; TCP come server (accetta connessioni, non ne apre in uscita) |
| Server fisici (bare metal), VMware, Hyper-V, Xen | Non supportati (per ora) |
| Linguaggio del servizio | Stato |
|---|---|
| Rust | La scelta naturale: tutta la base è in Rust |
| C | Solo come programma isolato con il nostro piccolo strato libc (così gira SQLite); non è POSIX |
| C++ | Possibile come C, non dimostrato; valutato progetto per progetto |
| Go, Java, Python, Node.js, .NET, PHP | Non supportati: richiedono un sistema operativo. In tal caso il servizio viene riscritto in Rust, oppure resta su Linux con un gateway unikernel al margine |
Cosa devi sapere subito
La base è in una fase iniziale (prima della versione 1.0). Punta ai server virtuali KVM; x86_64 è stato eseguito su un vero VPS KVM e in un emulatore, ma non su hardware fisico; il Secure Boot è parziale e non è ancora stato fatto un audit di sicurezza indipendente. Per questo offriamo un progetto pilota con supporto, non un prodotto certificato.
Esempio: urMQTT
Un broker MQTT su questa base: TLS 1.3 con autenticazione reciproca, revoca dei certificati senza una nuova immagine, un database SQLite isolato, cifratura del disco facoltativa. Guarda il codice sorgente su GitHub o contattaci.