Servie par le runner d un SITE, la console montrait zero serveur sans une erreur : serveur_ops retire le lien instance sur un hebergeur, charger_yaml rend un inventaire vide sur un fichier absent, et la page dessinait ce vide comme un plan vide. La portee se DERIVE des deux symlinks (instance = je configure, underlay = je materialise), jamais d un reglage declare. Une console de site sert desormais son inventaire dynamique ; POUVOIR_REQUIS exige un pouvoir pour chaque route POST et le refus dit pourquoi ; la page nomme la console. P81 refuse une portee sans source d inventaire, un site sans machines, et toute route qui echapperait a la table. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
118 lines
11 KiB
Markdown
118 lines
11 KiB
Markdown
> **Pour qui :** le locataire **et** l'hébergeur — les deux lisent le même texte, et c'est
|
|
> le but. Un partage de responsabilités dont chaque partie aurait sa version est un
|
|
> désaccord qui attend son incident.
|
|
|
|
# Responsabilités du locataire et de l'hébergeur
|
|
|
|
## 1. Le principe : une responsabilité est la conséquence d'un pouvoir
|
|
|
|
Ce document ne distribue pas des devoirs par bonne volonté. Il les **dérive** :
|
|
|
|
> **Qui peut, doit. Qui ne peut pas, ne peut pas être tenu — et personne ne peut se
|
|
> décharger sur celui qui ne peut pas.**
|
|
|
|
Trois règles en découlent, et elles décident de tout le reste :
|
|
|
|
1. **À chaque pouvoir sa responsabilité.** Un pouvoir sans devoir correspondant est une
|
|
prise sur autrui ; un devoir sans pouvoir correspondant est un piège.
|
|
2. **Une responsabilité sans mécanisme est un vœu.** Chaque ligne du tableau nomme
|
|
l'endroit du système qui la rend vraie — un rôle, une garde, une commande. Ce qui n'a
|
|
pas de mécanisme est écrit au §5, parmi les points non tranchés, plutôt que promis.
|
|
3. **Le silence ne crée pas de responsabilité.** Si une ligne n'a pas de vis-à-vis, ce
|
|
n'est pas une zone partagée : c'est un trou, et il se voit.
|
|
|
|
## 2. La ligne de partage : trois portées, et aucun pouvoir total
|
|
|
|
C'est la structure même du moteur, pas une convention de contrat
|
|
(`roles/serveur_ops_tenant/README.md`) :
|
|
|
|
```
|
|
calculer plan → inventaire aucune voûte n'importe quel runner
|
|
configurer des rôles sur ses machines voûte du TENANT le runner du locataire
|
|
matérialiser créer / détruire des VM voûte du SITE le runner de l'hébergeur
|
|
```
|
|
|
|
**Aucun runner n'est omnipotent.** Celui de l'hébergeur matérialise le terrain et n'entre
|
|
jamais chez un locataire ; celui du locataire configure son écosystème et ne touche jamais
|
|
la fabric. Tout ce qui suit découle de cette coupure.
|
|
|
|
## 3. Le tableau
|
|
|
|
<!-- TABLE:RESPONSABILITES — canonique. Le PDF remis aux locataires LIT ce tableau ;
|
|
il n'en porte pas de copie. Le modifier ici le modifie partout. -->
|
|
|
|
| Le pouvoir | Qui le détient | La responsabilité qui en découle | Ce que l'autre ne peut donc pas faire à sa place |
|
|
|---|---|---|---|
|
|
| **Créer et détruire les machines** (`raser`, `site-raser`, clonage du gabarit) | l'hébergeur | Que les machines existent, démarrent et tiennent ; qu'aucune destruction n'ait lieu sans confirmation explicite ni sans sauvegarde hors du site au préalable | Le locataire ne peut pas garantir l'existence de ses machines, ni se les rendre lui-même |
|
|
| **Le réseau, la frontière et le stockage** (SDN, VLAN, OPNsense, Ceph) | l'hébergeur | Que le chemin existe et que la bordure refuse ce qui n'est pas déclaré ; prévenir avant toute coupure planifiée | Le locataire ne peut pas ouvrir un flux vers l'extérieur sans que l'hébergeur l'applique |
|
|
| **Déclarer ses flux** (`roles/*/meta/flux.yml`, pare-feu d'hôte) | le locataire | Déclarer ce que ses services ont besoin d'échanger ; ce qui n'est pas déclaré est refusé, et c'est voulu | L'hébergeur ne peut pas deviner un flux applicatif ; il n'ouvrira rien « au cas où » |
|
|
| **Configurer les services** (son runner, sa voûte) | le locataire | L'état de ses services : ce qui est déployé, à jour, et conforme à son plan | L'hébergeur ne peut pas configurer un service du locataire : il n'a pas sa voûte |
|
|
| **L'annuaire et l'entrée unique** (LDAP, Keycloak) | le locataire | Qui entre, qui sort, et **quand** — créer, désactiver, révoquer sans attendre personne | L'hébergeur ne peut retirer l'accès de personne : mutualiser l'annuaire serait lui confier ses gens |
|
|
| **Les habilitations** (appartenance aux groupes, D-66/D-67) | le locataire | Tenir ses groupes à jour. Le moteur amorce **un** accès puis se retire : il ne réconcilie jamais les appartenances | Ni l'hébergeur ni l'outillage ne corrigeront un groupe : un redéploiement n'efface pas le compte créé la veille |
|
|
| **Son autorité de certification** (step-ca, D-87) | le locataire | Renouveler ses certificats, et **recharger** les services qui les servent — un certificat renouvelé sur disque reste servi périmé en mémoire | L'hébergeur ne peut pas émettre de certificat au nom du locataire, et c'est délibéré : il pourrait sinon se faire passer pour n'importe lequel de ses services |
|
|
| **Ses journaux** (Loki, D-87) | le locataire | Les lire, les conserver, et les fournir s'il demande de l'aide | L'hébergeur ne voit pas les journaux du locataire : il ne peut donc pas diagnostiquer un incident applicatif à sa place |
|
|
| **La disponibilité de la fabric** (une VM est-elle debout ?) | l'hébergeur | Constater qu'une machine est tombée et le dire — c'est sa fabric | Le locataire n'a pas de vue sur l'hyperviseur qui porte ses VM |
|
|
| **Les métriques d'hébergement** (charge, disque) | l'hébergeur, **avec réserve** | S'en servir pour dimensionner et prévenir, pas pour lire l'activité d'une organisation — elles disent *quand* et *combien* | — (elles ne disent pas *quoi* : le contenu reste hors de portée) |
|
|
| **Le dépôt de sauvegarde** (`serveur_backup`, chiffré côté client) | l'hébergeur | Que le dépôt **accepte encore une écriture** : espace, droits, système de fichiers en lecture seule. Sa sonde constate l'endroit, jamais le contenu | L'hébergeur **ne peut pas** juger un instantané : il héberge des octets qu'il ne peut pas ouvrir |
|
|
| **La clé de ses sauvegardes** (restic) | le locataire | Juger que ses instantanés sont **récents, complets et restaurables**, et éprouver une restauration. *La vérification suit la clé* | Personne ne peut vérifier une sauvegarde à la place de qui détient la clé — et sa perte les rend définitivement illisibles |
|
|
| **Sa voûte et ses secrets** (jamais mutualisée) | le locataire | Garder sa clé hors de l'infrastructure qu'elle ouvre, en double, et faire tourner ses secrets | L'hébergeur ne peut pas recouvrer une clé de voûte perdue : il n'en a aucune copie, par construction |
|
|
| **Le courriel** (relais à la bordure) | partagé | L'**enveloppe** transite chez l'hébergeur, qui en répond ; le **contenu** appartient au locataire, qui en répond | L'hébergeur ne lit pas le contenu ; le locataire ne tient pas la réputation de la bordure |
|
|
| **La forge du génome** (D-81) | l'hébergeur | Tenir l'autorité du génome disponible : c'est de là qu'un écosystème se reproduit | Le locataire ne dépend pas d'elle pour **vivre** — seulement pour se reconstruire ; il peut en garder son propre miroir |
|
|
| **L'accès de secours par `sudo`** (D-40) | l'hébergeur, **tant qu'il exploite** | Le dire plutôt que de le taire : exploiter une machine, c'est pouvoir tout y lire. C'est la raison d'être du second temps de la remise, et de sa date | Le locataire ne peut pas le supprimer sans reprendre lui-même l'exploitation — d'où une **échéance écrite**, pas une confiance indéfinie |
|
|
| **La remise des clés** (`make remise-*`, garde **P80**) | l'hébergeur remet, le locataire reçoit | Remettre en deux temps : l'identité le jour de la livraison, la machine à l'échéance — sa clé entre, la nôtre sort, la voûte est re-clétée | Un accès qu'on oublie de rendre ne devient pas légitime en vieillissant : la garde signale tout retard |
|
|
| **Nommer le responsable désigné** (D-18, `remise.yml`) | le locataire | Nommer la personne qui engage l'organisation, et la maintenir à jour | L'hébergeur ne peut pas la désigner : ce serait choisir qui a le droit de le quitter |
|
|
| **Décider de partir** (migration, émancipation) | le locataire | Mandater, et emporter ce qui est à lui : son plan, ses données, sa voûte, ses domaines | L'hébergeur ne peut ni retenir ni décider à sa place ; la machine **instruit**, l'humain décide |
|
|
| **Libérer un partant** (`migration-tenant.md` §6) | l'hébergeur | **Révoquer, pas transmettre** : ses accès tombent, puis rétention convenue, puis purge | Le locataire ne peut pas vérifier lui-même la purge ; elle est un engagement daté, pas une mesure |
|
|
|
|
<!-- /TABLE:RESPONSABILITES -->
|
|
|
|
## 4. Ce que personne ne peut déléguer
|
|
|
|
Trois choses ne se confient à aucune des deux parties, parce que les confier les annule :
|
|
|
|
- **La phrase de passe d'un paquet de remise** ne voyage jamais avec le support qu'elle
|
|
ouvre. Séparés, ils ne valent rien l'un sans l'autre ; ensemble, ils valent l'écosystème.
|
|
- **La seconde copie** d'une clé, dans un autre lieu physique. Un support unique dans un
|
|
tiroir unique n'est pas une sauvegarde, c'est le même risque déplacé de quelques mètres.
|
|
- **La comparaison d'une empreinte** avant d'installer une autorité de certification.
|
|
Installer une AC, c'est lui donner le droit de signer n'importe quel nom : la
|
|
comparaison est ce qui distingue sa racine d'une racine interceptée.
|
|
|
|
## 5. Ce qui n'est pas tranché — et qui reste donc à convenir
|
|
|
|
Nommer un point ouvert vaut mieux qu'une ligne rassurante sans mécanisme derrière.
|
|
|
|
- **Le recouvrement de la clé du responsable désigné.** Elle se perd, se compromet, ou la
|
|
personne quitte l'organisation. Sans procédure, un locataire devient *inmigrable* :
|
|
captif non par contrat mais par accident. Piste retenue : un **contact de secours nommé
|
|
en même temps que le responsable**, tant que personne n'est en situation d'urgence.
|
|
- **Comment on change de responsable désigné** — acte au moins aussi sensible que la
|
|
migration, puisqu'il décide qui pourra la mandater ensuite.
|
|
- **La durée de rétention** avant purge chez un hébergeur sortant : elle se convient, elle
|
|
ne se dérive pas.
|
|
- **La preuve que l'hébergeur ne peut plus entrer.** Le plan déclare la révocation et le
|
|
déploiement l'applique ; le vérifier depuis l'extérieur demande d'essayer d'entrer, donc
|
|
une machine vivante (`make emancipation-prouver`).
|
|
|
|
## 6. Comment chaque ligne se vérifie
|
|
|
|
Aucune de ces responsabilités n'est laissée à la parole :
|
|
|
|
```
|
|
make prouver le dépôt est-il cohérent avec lui-même (81 preuves, zéro réseau)
|
|
make remise-verifier le second temps de la remise est-il fait, ou en retard ? (P80)
|
|
make certificats-plan ce que le disque porte contre ce que la mémoire sert
|
|
make expositions-plan chaque service publié répond-il, et depuis où
|
|
make identite-plan royaume, fédération, politique de mot de passe, comptes
|
|
make emancipation-prouver un lien d'hébergement est-il réellement coupé
|
|
```
|
|
|
|
`make deployer` **répare**, les devis **constatent** : les confondre fait perdre
|
|
l'information au moment où elle sert.
|
|
|
|
---
|
|
|
|
*Le partage décrit ici n'est pas une politique commerciale : c'est la forme du système.
|
|
Chaque fois qu'il a été possible de donner un pouvoir au locataire, il lui a été donné —
|
|
et chaque fois que l'hébergeur a conservé un pouvoir, c'est parce que quelqu'un doit porter
|
|
la fabric, et cela s'écrit ici plutôt que de se découvrir le jour d'un incident.*
|