L'insemination avait un nom depuis ce matin ; elle n'avait pas de flux. Deux
declarations, aux deux bouts, et rien d'autre :
serveur_ops_site egress 22/tcp -> serveur_ops_tenant
serveur_ops_tenant ingress 22/tcp <- runner_site partage: true
ETROIT PAR CONSTRUCTION : il vise le GROUPE `serveur_ops_tenant`, qu'un ecosysteme
ne pose que sur une machine. Au socle, il aurait ouvert le SSH du site vers toute
la flotte du tenant.
L'en-tete disait « ce role n'entre JAMAIS chez un tenant ». Frontiere intenable :
`creer-vm` exige `_instance-requise`, et le runner du site avait deja du basculer
son symlink `instance` sur OPS-Chezlepro pour materialiser ses VM. Declarer ne cree
pas ce pouvoir — ca rend limitable un pouvoir qui s'exercait sans borne. Ce qui
reste interdit n'est pas une regle mais un FAIT : il n'a pas la voute du tenant.
LA REGLE EST EMISE D'UN SEUL COTE, et pas celui qu'on croit. Le paquet penetre le
pare-feu par la patte du SITE, pas par le transit : la regle appartient au cote
site du devis. L'emettre aussi depuis l'`ingress` du tenant aurait produit une
seconde regle sur la mauvaise interface — jamais evaluee, indiscernable d'une regle
utile. La declaration du tenant pose sa regle nftables, et elle seule :
ip saddr { 10.0.31.11 } tcp dport 22 accept
L'adresse DERIVE du plan du site. Ecrite a la main, elle aurait survecu au prochain
deplacement du runner sans bruit — le site a deja deplace ses machines le 08-25.
Plan de la frontiere : 2 objets a creer, 0 a retirer, 126 inchanges. RIEN D'APPLIQUE.
P41 APPLIQUEE AU PLAN DU SITE : `resoudre_flux` en avait besoin a son tour ; les
trois lecteurs demenagent dans `underlay` et `devis_opnsense` delegue.
DEUX GARDES ONT TRAVAILLE : P33 a refuse `ingress 22` sur un hote portant deja le
sshd du socle (reponse : `partage: true`, comme `serveur_backup`), et le devis a
refuse d'emettre vers un alias vide.
UN TEST ROUGE DEPUIS TROIS JOURS. `test_adressage_derive` construisait un site avec
un `index` — or un SITE n'en a pas depuis add94f2 (08-25), remplace par
`bande_basse_de`. Invisible parce que le geste quotidien est `make prouver`, qui ne
joue pas les tests. Remis sur le contrat actuel, avec sa contrepartie : sans
`bande_basse_de`, aucun chevauchement n'est tolere.
make verifier : vert. make prouver : CONFORME, 52 OK, 0 echec.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
72 lines
3.3 KiB
YAML
72 lines
3.3 KiB
YAML
---
|
|
# Flux réseau du runner de SITE. Voir docs/flux-conception.md.
|
|
#
|
|
# Les flux du POUVOIR DE MATERIALISER : API de l'hyperviseur, shell des noeuds, API de
|
|
# la frontiere. Chacun est un pouvoir distinct, donc declare a part.
|
|
#
|
|
# CE ROLE N'ENTRE PAS CHEZ UN TENANT — SAUF SUR SON RUNNER, POUR L'AMORCER (2026-08-28).
|
|
#
|
|
# Cette ligne disait « JAMAIS », et c'etait une frontiere qu'on ne pouvait pas tenir. Un
|
|
# ecosysteme neuf ne s'amorce pas lui-meme : sa premiere machine doit recevoir le socle,
|
|
# le moteur, son plan et son plancher de resolution avant de pouvoir configurer quoi que
|
|
# ce soit. Sans ce flux, ce travail retombe sur un humain qui le fait a la main — donc
|
|
# hors du depot, donc sans preuve.
|
|
#
|
|
# LE COUPLAGE EXISTAIT DEJA, NON DECLARE : `creer-vm` exige `_instance-requise`, et le
|
|
# runner du site doit donc basculer son symlink `instance` sur le depot du tenant qu'il
|
|
# materialise. Le declarer ne cree pas un pouvoir, il rend limitable un pouvoir qui
|
|
# s'exercait sans borne.
|
|
#
|
|
# CE QU'IL RESTE INTERDIT, ET QUI N'EST PAS UNE REGLE MAIS UN FAIT : armer. Le runner du
|
|
# SITE ne detient pas la voute d'un tenant — elle vit hors depot — et n'en connait pas le
|
|
# mot de passe. Il peut poser tout ce qui est public ; c'est un HUMAIN qui remet le
|
|
# secret, et c'est la que le pouvoir du site s'arrete. Voir docs/filiation-emancipation.md.
|
|
flux:
|
|
- sens: egress
|
|
port: 8006
|
|
protocole: tcp
|
|
pair: fabric
|
|
chiffrement: tls-requis
|
|
raison: >-
|
|
API de l'hyperviseur : créer, cloner et détruire les VM de la fabric. Le seul flux
|
|
par lequel un écosystème peut en matérialiser un autre.
|
|
|
|
# SSH VERS LES HYPERVISEURS. L'API Proxmox ne fait pas tout : deplacer un disque,
|
|
# lire une configuration reseau, poser un pont — cela passe par le shell du nœud.
|
|
# Le declarer separement de l'API rend visible que ce sont DEUX pouvoirs distincts.
|
|
- sens: egress
|
|
port: 22
|
|
protocole: tcp
|
|
pair: fabric
|
|
chiffrement: ssh
|
|
raison: >-
|
|
Shell des hyperviseurs : ce que l'API ne couvre pas — configuration reseau, ponts,
|
|
deplacement de disques. Un pouvoir distinct de l'API, donc declare a part.
|
|
|
|
# L'API DE LA FRONTIERE. Le runner du site pose les regles et les alias qui laissent
|
|
# passer les flux d'un tenant : sans ce flux, il prepare un terrain injoignable.
|
|
- sens: egress
|
|
port: 443
|
|
protocole: tcp
|
|
pair: fabric
|
|
chiffrement: tls-requis
|
|
raison: >-
|
|
API de la frontiere OPNsense : poser les alias et les regles qui ouvrent les flux
|
|
du tenant qu'on materialise. Preparer le terrain sans cela laisserait un terrain
|
|
injoignable.
|
|
|
|
# L'INSEMINATION — le seul flux de ce role qui entre chez un tenant.
|
|
#
|
|
# Etroit par construction : il vise le groupe `serveur_ops_tenant`, qu'un ecosysteme ne
|
|
# pose que sur une machine. Declare au socle, il aurait ouvert le SSH du site vers TOUTE
|
|
# la flotte du tenant ; declare ici, sa portee est celle du groupe, et le groupe est
|
|
# ecrit au plan du tenant.
|
|
- sens: egress
|
|
port: 22
|
|
protocole: tcp
|
|
pair: serveur_ops_tenant
|
|
chiffrement: ssh
|
|
raison: >-
|
|
Insemination : amorcer le runner d'un tenant — socle, moteur, plan, plancher de
|
|
resolution — pour qu'il prenne ensuite le relais sur ses propres machines. Ne
|
|
transporte aucun secret : la voute est remise par un humain.
|