Set-OPS-Public/roles/serveur_ops/meta/flux.yml
Daniel Allaire 627ef00ec7 la console d exploitation devient un service, et elle n avait aucune serrure
Le GUI n a aucune authentification : GET / sert la page a qui la demande, jeton
ecrit dedans, et POST /api exige ce jeton que la page vient de donner. Le jeton
garde contre le CSRF, pas contre un visiteur — la seule serrure est
--hote 127.0.0.1. Ce qu il offre a qui entre : deployer, creer, raser, editer le
plan. La fabric entiere.

Le service reste donc sur la boucle locale. Ce qui est publie est un nginx local
qui authentifie d abord : oidc par defaut (oauth2-proxy, donc un groupe
d annuaire qu on revoque sans deploiement), locale en repli pour un ecosysteme
sans annuaire. L authentification est posee au niveau du server, pas d un
location.

La sonde console-ops mesure une SERRURE : une requete anonyme doit etre REFUSEE.
Un 200 y est la pire des reponses, et il ne fait echouer personne.

P54 a attrape une contrainte ratee : serveur_ops est insemine par le SITE, qui
ne detient pas la voute du locataire. Le role ne nomme donc aucune voute — il
declare un parametre, et la couche qui detient le secret le remplit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 19:27:28 -04:00

59 lines
2.5 KiB
YAML

---
# Flux réseau du poste d'exploitation. Voir docs/flux-conception.md.
#
# Le poste est presque tout en sortie : il va chercher son génome, puis il pilote. Rien
# ne s'y connecte, sinon l'administration elle-même.
flux:
# LA CONSOLE D'EXPLOITATION, PUBLIEE PAR L'EDGE DE L'ECOSYSTEME (2026-09-14).
#
# `[edge, admin]` — la meme paire que `serveur_grafana` et `serveur_icingaweb2`, et
# pour la meme raison : sans edge, un ecosysteme n'aurait plus de console du tout.
#
# CE PORT N'EST PAS CELUI DU GUI. Le GUI ecoute `127.0.0.1:8765` et n'est joignable de
# nulle part ailleurs — c'est sa seule serrure, il sert sa page a qui la demande. Ce
# qui s'ouvre ici est le NGINX qui authentifie devant.
#
# LA REGLE N'EST EMISE QUE SI LE PLAN L'EXPOSE : un runner qui ne publie pas sa console
# n'a pas ce port ouvert, et `serveur_ops_gui_actif` reste faux.
- sens: ingress
port: 8090
protocole: tcp
pair: [edge, admin]
chiffrement: clair
raison: >-
Console d'exploitation servie par l'edge (TLS terminé à l'edge), et joignable
depuis le plan d'administration là où il n'y a pas d'edge. Le GUI lui-même reste
sur la boucle locale : c'est nginx qui authentifie devant.
- sens: egress
port: 443
protocole: tcp
pair: edge
chiffrement: tls-requis
raison: "Cloner et resynchroniser le génome depuis la forge de l'écosystème."
- sens: egress
port: 22
protocole: tcp
pair: flotte
chiffrement: ssh
raison: "Piloter la flotte — c'est la raison d'être du poste."
# L'HYPERVISEUR N'EST PAS DANS L'ÉCOSYSTÈME : il appartient au monde physique, de
# l'autre côté de la frontière. C'est donc un pair `externe`, et ce flux est le seul
# par lequel un écosystème peut en engendrer un autre.
- sens: egress
port: 8006
protocole: tcp
pair: externe
chiffrement: tls-requis
raison: "API de l'hyperviseur : créer et cloner les VM d'un écosystème descendant."
# LIRE LE GENOME CHEZ UN VOISIN. La forge du genome se mutualise par SITE : le moteur,
# les modeles et la fabric sont le meme contenu pour tous les tenants. Seul le plan
# `OPS-xxx` differe.
#
# La forge DE TRAVAIL d'un ecosysteme -- celle qui sert ses gens -- reste un service du
# tenant, et n'a rien a voir avec ce flux.
- sens: egress
port: 443
protocole: tcp
pair: voisins_site
chiffrement: tls-requis
raison: "Cloner le genome depuis la forge du site, quand cet ecosysteme n'heberge pas la sienne."