← Retour à l'accueil

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

Plateformes et langages : ce que nous prenons en charge aujourd'hui
PlateformeÉtat
Serveurs virtuels KVM, aarch64Vé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 virtuelsvirtio (réseau, disque, SCSI, nombres aléatoires)
RéseauIPv4 ; TCP en tant que serveur (accepte des connexions, n'en ouvre pas de sortantes)
Serveurs physiques (bare metal), VMware, Hyper-V, XenNon pris en charge (pour l'instant)
Langage du service
Langage du serviceÉtat
RustLe choix naturel : toute la base est en Rust
CSeulement 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, PHPNon 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.