Votre service sans système d'exploitation
Un unikernel est un programme autonome unique qui s'exécute directement sur un serveur virtuel (KVM), sans Linux, sans shell et sans processus. Nous adaptons votre service à une telle base, et vous le démarrez à partir d'une seule image disque. Nous avons développé cette base nous-mêmes et l'avons éprouvée sur notre propre produit, le broker MQTT urMQTT.
Avantages
Une petite surface d'attaque
Une seule image liée statiquement, sans système d'exploitation, sans shell ni processus utilisateur ; seul ce dont le service a besoin est ouvert. Les composants auxquels on ne peut pas se fier entièrement (par exemple une bibliothèque C) peuvent s'exécuter isolés, dans un espace d'adressage distinct, sans accès au noyau.
Moins de maintenance
Aucun système d'exploitation à corriger et à mettre à niveau : une nouvelle version est une nouvelle image. L'image ne pèse que quelques mégaoctets.
Moins de pièces, moins de surprises
Le comportement est défini par un seul programme et sa configuration ; pas de services en arrière-plan, de paquets ni de choses qui démarrent seules.
La configuration est une donnée
Paramètres et certificats sont regroupés dans une configuration validée, contrôlée à chaque démarrage ; l'image affiche l'empreinte de sa configuration, ce qui permet de vérifier que c'est celle que vous avez commandée.
La sécurité est intégrée à la base
TLS 1.3 avec authentification mutuelle, protection contre les inondations réseau, limites de ressources et chien de garde empêchent un mauvais client de bloquer les autres ; le stockage est testé par une coupure de courant à chaque écriture, avec chiffrement du disque en option.
Vérifiable, sans dépendance
Compilations reproductibles, versions signées, nomenclature logicielle (SBOM), base en code source ouvert et dossier d'audit qui mentionne aussi les faiblesses connues.
Adapté aux petites comme aux grandes installations
Le même code fonctionne sur des serveurs virtuels aarch64 et x86_64.
Ce que nous proposons
Prix pour l'ensemble : sur demande
Étude de faisabilité
Nous examinons votre service (langage, dépendances, besoins réseau et disque) et vous disons ce qui est possible, ce qui doit changer et quel travail cela représente, avant que vous vous engagiez sur quoi que ce soit d'autre.
Adaptation de votre service à l'unikernel
Nous portons le service (plus simple en Rust ; bibliothèques C dans un worker isolé) sur notre base : réseau, TLS, stockage, configuration et journalisation.
Un pilote sur votre serveur
Nous faisons fonctionner le service sur votre infrastructure (KVM), l'essayons avec votre trafic et remettons un rapport de performances.
Support et maintenance
Mises à niveau de l'image, traitement des vulnérabilités signalées et formation de votre équipe.
urMQTT comme produit prêt à l'emploi
Si vous avez besoin d'un broker MQTT : une image configurée et signée, avec vos certificats.
Un bon candidat, et un moins bon
Bon : un service à usage unique qui accepte des connexions réseau : serveur de protocole, passerelle, collecteur de données, point de terminaison TLS, appareil en périphérie. Moins bon : un programme qui a besoin de l'écosystème Linux, d'un système de fichiers, de nombreux processus ou d'un grand nombre de connexions sortantes. La base actuelle accepte des connexions (serveur TCP), n'ouvre pas de connexions TCP sortantes et ne gère qu'IPv4 ; les extensions sont étudiées projet par projet.
Plateformes et langages : ce que nous prenons en charge aujourd'hui
| Plateforme | État |
|---|---|
| Serveurs virtuels KVM, aarch64 | Vérifié (Apple HVF et TCG) |
| Serveurs virtuels KVM, x86_64 (UEFI et BIOS) | A tourné sur un vrai VPS KVM (AMD EPYC), plus des tests en émulateur ; pas essayé sur du matériel physique |
| Périphériques virtuels | virtio (réseau, disque, SCSI, nombres aléatoires) |
| Réseau | IPv4 ; TCP en tant que serveur (accepte des connexions, n'en ouvre pas de sortantes) |
| Serveurs physiques (bare metal), VMware, Hyper-V, Xen | Non pris en charge (pour l'instant) |
| Langage du service | État |
|---|---|
| Rust | Le choix naturel : toute la base est en Rust |
| C | Seulement comme programme isolé avec notre petite couche libc (c'est ainsi que tourne SQLite) ; pas POSIX |
| C++ | Possible comme le C, non éprouvé ; étudié projet par projet |
| Go, Java, Python, Node.js, .NET, PHP | Non pris en charge : ils exigent un système d'exploitation. Le service est alors réécrit en Rust, ou reste sous Linux avec une passerelle unikernel en périphérie |
Ce qu'il faut savoir d'emblée
La base en est à un stade précoce (avant la version 1.0). Elle cible les serveurs virtuels KVM ; x86_64 a fonctionné sur un vrai VPS KVM et dans un émulateur, mais pas sur du matériel physique ; le Secure Boot n'est que partiel, et aucun audit de sécurité indépendant n'a encore été réalisé. C'est pourquoi nous proposons un pilote avec support, et non un produit certifié.
Exemple : urMQTT
Un broker MQTT sur cette base : TLS 1.3 avec authentification mutuelle, révocation de certificats sans nouvelle image, base SQLite isolée, chiffrement du disque en option. Consultez le code source sur GitHub ou contactez-nous.