ADR-121 — Provisioning air-desktop-host : image first-boot anonyme, publication de la clé d’hôte, amorçage par clé/cert jetable (pas hostbased)
Statut : Accepté (2026-07-26, décision BDFL). RFC de direction
(ADR-015).
S’appuie sur ADR-109 (cert court / CA),
ADR-108 (air-keystore : clé d’hôte,
révocation), ADR-100 (base de comptes + création),
ADR-096 (authorized_keys binaire),
ADR-089 (SecurityManager), ADR-029
(nommage).
Compagnon d’ [ADR-120] : le provisioning n’utilise PAS hostbased (§3).
Catégorie : Flux de déploiement de flotte (orchestration couche 2 + air-keystore).
Vague 2 #9 (dernier).
Contexte
Objectif BDFL : déployer à la chaîne des « air-desktop-host » — une image Air bootable mais anonyme. Au premier démarrage, la machine doit devenir joignable et personnalisable à distance, sans intervention physique.
Directive BDFL (2026-07-26). « Une image air-desktop bootable mais anonyme… en mode “first boot”, elle génère une hostkey air-sshd et publie la clé sur un serveur chez moi ; le démon air-sshd est lancé ; je peux me connecter à distance grâce à la hostkey et finaliser l’installation/personnalisation en créant le compte utilisateur. » Et, en discussion : pas hostbased pour ce chemin (le plus sensible) — clé/cert d’amorçage jetable.
Décision
1. Séquence first-boot
Un service first-boot (couche 2, unité air-service) exécute, au premier démarrage d’une
image anonyme :
- Génère la clé d’hôte du serveur
air-sshd(viaair-keystore[ADR-108]). - Publie la clé d’hôte publique (empreinte + identité machine) sur un serveur central (« chez moi ») — canal réseau Air.
- Lance
air-sshd. - Attend la finalisation à distance par l’installeur (propriétaire).
2. Deux besoins distincts, deux mécanismes
- (a) L’installeur vérifie l’identité de la machine fraîche = vérification de la clé
d’hôte serveur (le
known_hostsclient [ADR-108] est alimenté par la clé publiée en §1.2). Pas de TOFU aveugle : l’identité est connue d’avance via la publication. - (b) L’installeur s’authentifie sur une machine SANS compte = confiance d’amorçage.
Design retenu (façon cloud-init) : un compte d’amorçage éphémère portant une clé
publique de provisioning embarquée (dans l’image, magasin
authorized_keysbinaire [ADR-096]) OU un certificat SSH court ([ADR-109], réutiliseair-keystore/CA). Ce secret d’amorçage est révoqué / le compte supprimé en fin d’installation (révocationair-keystore[ADR-108]).
3. Pas hostbased dans ce chemin
Le provisioning n’utilise pas l’authentification hostbased ([ADR-120]) : on évite le service de signature privilégié et la confiance transitive précisément là où le risque serait maximal (une machine fraîche, pas encore durcie). La clé/cert d’amorçage jetable est plus étroite (un secret, une machine, une fenêtre courte, révocable).
4. Finalisation
L’installeur, authentifié par l’amorçage, crée le compte propriétaire (air-account
[ADR-100] — base binaire, éventuellement import [ADR-100]), personnalise, puis révoque
l’amorçage (clé/cert + compte éphémère). La machine passe alors en régime normal (publickey
utilisateur / certificats [ADR-109]).
Conséquences
Positives.
- Déploiement de flotte sans intervention physique : image anonyme → jointe et personnalisée à distance dès le first-boot.
- Identité vérifiable (clé d’hôte publiée) : pas de TOFU aveugle sur une machine neuve.
- Amorçage étroit et révocable (clé/cert jetable) : la fenêtre de confiance est courte et fermée en fin d’install — surface minimale sur le chemin le plus sensible.
- Réutilise l’existant :
air-keystore(clé d’hôte, cert court, révocation),air-account(création de compte),air-sshd.
Négatives / coûts assumés.
- Serveur central de publication = composant d’infrastructure à opérer et sécuriser (authenticité des clés publiées, anti-usurpation).
- Secret d’amorçage dans l’image : doit être jetable, à portée limitée, révoqué — un oubli de révocation = porte dérobée. Procédure de révocation obligatoire en fin d’install.
- Fenêtre first-boot = machine transitoirement peu durcie : minimiser sa durée, restreindre
l’amorçage (une machine / un secret / une IP source si possible, via
SecurityManager[ADR-089]).
Mise en œuvre (référence, hors décision). Incréments : (a) service first-boot (génération +
publication clé d’hôte + lancement air-sshd) ; (b) canal de publication + serveur central ;
(c) amorçage (compte éphémère + clé provisioning ou cert court [ADR-109]) ; (d) finalisation
(création compte [ADR-100] + révocation amorçage [ADR-108]). Non engagés par cet ADR.
Alternatives rejetées
Aucune alternative n’a été consignée lors de l’instruction.