Une cle administration sur un lien de opnsense_liens_sites :
- entrante : les reseaux d'administration du pair (lus dans son plan) entrent par
l'interface du lien, en SSH et HTTPS, vers la patte de gestion de la frontiere seulement ;
- sortante : la gestion et le tunnel des admins sortent vers le rebond du pair, et rien
d'autre.
Routes derivees, gardees avec celles du lien. vpn_admin.py route le rebond de chaque pair.
frontiere-plan ne declare plus absentes du noyau les routes d'hote, que FreeBSD affiche
sans masque.
Sans la cle, le devis des deux sites est identique a l'ancien. Pas encore applique.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le contrat du site porte dns_public_noms_pairs : nom et adresse publique du
serveur de chaque pair actif, lus dans son plan et sa carte de frontiere par
les memes fonctions que pour le site lui-meme. Le gabarit de zone ecrit un NS
par serveur ; la zone qui contient un de ces noms en porte le A, a l'adresse
de son site. Sans pair, le rendu est identique a l'ancien.
Garde au role (nom, adresse publique, jamais redeclare) ; la preuve du DNS
public refuse un pair actif sans dns_public_nom ; dns_bascule compte les
serveurs designes et sonde la colle de chacun.
Deploye chez les deux locataires : les deux serveurs publics servent
chezlepro.ca et technolibre.ca au meme serial, deux NS signes.
CHANGELOG 151.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- underlay.py : sites pairs lus dans leur depot frere (sites_pairs_actifs, sur_le_site,
dns_public_des_pairs).
- Contrat du site : dns_public_pairs ; serveur_powerdns notifie et admet le pair ;
resoudre_flux l'admet sur 5300.
- devis_opnsense : opnsense_liens_sites (regles et routes selon ou vit chaque locataire) ;
P24 juge les routes du lien a part ; noms d'alias < 32 caracteres gardes ; le refus du
groupe wireguard ne tranche plus (quick=0), et la garde le verifie.
- appliquer_opnsense : quick=0 transmis et dans l'identite d'une regle.
- proxmox_api : SETOPS_PROXMOX_API pour joindre l'API par un rebond.
Temoin depuis l'Internet : les deux zones repondent sur 51.79.45.193, signees.
95 preuves (make verifier), make test passe. CHANGELOG 149.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- underlay.py : role d'hote frontiere_pair ; reseaux_tunnel() ecarte les tunnels des pattes
de la frontiere (reseaux de gestion, SETOPS_FABRIC, SETOPS_FRONTIERE, resoudre_flux,
supervision des pattes).
- devis_opnsense : seuls les roles des machines du plan font un alias (le relais en faisait un vide).
- La machine du cache recoit artefacts_amorcage_direct au lieu d'une valeur vide : le vide
ouvrait la sortie 80/443 du socle a toutes les machines du site (jamais applique). P79
revient a sa forme stricte.
95 preuves (make verifier), make test passe. CHANGELOG 148.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Couche depot_etat juste apres le socle (serveur_backup, serveur_backup_site) : l'AC, les
bases et la supervision trouvent un depot qui repond quand elles naissent.
- site-deployer-tout amorce d'abord la machine du cache, seule (socle, serveur_artefacts,
serveur_cache_site) : aucune couche ne peut exprimer cet ordre par machine.
- verifier_flux_site.py refuse le deploiement si une machine active n'a pas ses regles
nftables generees ; test_verifier_flux_site.py l'eprouve.
Simulation complete contre le site de TechnoLibre : aucun echec sur les neuf machines.
95 preuves (make verifier), make test passe. CHANGELOG 147.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Un runner neuf face a une forge neuve n'avait aucun clone a avancer : recevoir() refusait.
Il clone desormais depuis le colis, puis suit le chemin ordinaire (verification, avance
rapide, poussee). Une destination existante qui n'est pas un depot reste un refus.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- cloner_vm_debian / supprimer_vm_debian suivent SETOPS_UNDERLAY (le clonage visait le
cluster du lien underlay.yml) ; sept cibles du Makefile aussi pour la voute.
- site_machines.py transmet au clone la cle, le domaine et le resolveur du plan du site.
- La machine qui porte le cache recoit artefacts_amorcage vide ; le socle retire alors le
proxy herite du gabarit. P79 n'admet ce vide que sur la machine qui porte le cache.
- serveur_icingaweb2 : la base et le compte d'amorcage apres l'installation des paquets.
- genome_pousser : cle du runner, organisation genome et depots crees s'ils manquent.
- common_packages : la lecture apt-daily s'execute en simulation (check_mode: false).
95 preuves (make verifier), make test passe. CHANGELOG 146.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le site de TechnoLibre n'a qu'une adresse DHCP. Trois adresses fixes sont louees sur un VPS
(le relais), qui repond a l'ARP pour elles et les route en /32 dans un tunnel WireGuard que la
frontiere initie. Aucune traduction : l'adresse du client arrive intacte.
- underlay.py : `tunnel: wireguard` dispense de VLAN ; role d'hote `relais`.
- devis_opnsense.py : `opnsense_face_publique`. Les entrees publiques s'y posent avec
reply-to ; les sorties des locataires du pool passent par le relais ; une redirection n'y
vise plus `wanip`. Le devis de Chezlepro est identique au caractere pres.
- appliquer_opnsense.py : replyto et gateway transmis et dans l'identite (seulement s'ils
existent) ; le NAT sortant en mode automatic arrete l'application au lieu de dupliquer.
- role serveur_relais, inventorie depuis la carte comme un hyperviseur ; cle privee dans la
voute du site. Deploye, idempotent.
- site_inventaire.py : les hyperviseurs ne sont plus filtres sur 192.168.11. ; site-appliquer
charge la voute designee par SETOPS_UNDERLAY ; voute.py n'exige plus d'un locataire un
secret du site.
- prouver.py : P67 lit le plan par underlay.plan_site() ; P53 couvre la face publique.
- Tests : test_underlay_tunnel, test_face_publique_relais, test_mode_nat_sortant.
95 preuves (make verifier), make test passe. CHANGELOG 144 et 145.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Metriques et journaux (CHANGELOG 142). Le site pose les quatre interrupteurs TLS
que chaque locataire pose dans ses group_vars : node_exporter et Loki servaient
en HTTP sur les neuf VM, le certificat etait la, inutilise. test_parite_tls_site.py
compare desormais le site aux locataires. Les hyperviseurs poussent leurs
journaux en HTTPS verifie, avec la racine du site comme simple fichier.
L'exportateur PostgreSQL sert en HTTPS partout, sur l'interrupteur de PostgreSQL
lui-meme, que Prometheus lit pour choisir son schema.
La frontiere (CHANGELOG 143). Une autorite subordonnee signee par la racine du
site, bornee (pathlen 0, noms sous le domaine et adresses du site, contrainte
critique), cle nee sur la boite (scripts/frontiere_pki.py). Syslog vers Loki en
TLS mutuel (seule la frontiere peut ecrire), exportateur en HTTPS, interface web
sur le certificat de services ; les clients d'API verifient la frontiere contre
la racine du site. La lecture du magasin passe par config.xml : l'API de
recherche renvoie les cles privees.
Deploye et mesure au site, chez les deux locataires et sur la frontiere ; 95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La sonde demandait `doveadm user`, que le userdb static (static_allow_all_users,
requis par la remise LMTP) satisfait pour n'importe quel nom : elle disait
« daniel » resolu chez deux locataires ou ce compte n'existe pas. Elle interroge
desormais le passdb (`doveadm auth lookup`), sans mot de passe, et cherche le
compte d'amorcage (amorcage_acces_courriel) plutot qu'un nom ecrit.
Le 143 (IMAP en clair) ecoutait par defaut a cote du 993 : eteint par
`inet_listener imap { port = 0 }`, eprouve sur banc Debian 13.
Deploye chez les deux locataires : 24 et 993 seulement ; sonde verte sur
sysadmin, rouge sur un compte inexistant. test_dovecot_sonde_et_imap.py garde
les deux ; 95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Postfix (edge-mta) faisait verifier chaque mot de passe de soumission par le
Dovecot du mailstore, sur :12345. Le client SASL Dovecot de Postfix ne chiffre
pas : chaque mot de passe traversait le reseau en clair, et le registre disait
ce flux tls.
Le flux est supprime, pas chiffre. serveur_postfix pose a cote de lui un
Dovecot d'authentification seule (serveur_dovecot/tasks/auth_locale.yml) :
coeur + LDAP, aucun protocole, aucun port, joint par private/auth, qui verifie
sur l'annuaire en LDAPS. Le 12345 disparait des deux roles et du pare-feu ;
serveur_dovecot_sasl_reseau est retire, et une garde arrete l'instance qui le
pose encore.
Deploye chez les deux locataires ; prouve par un envoi reel chez chacun
(sasl_username au journal, remise LMTP, relu par IMAP). test_sasl_local.py
garde le changement ; 95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La forge exige STARTTLS et verifie le certificat du relais. Le relais du site
exige le TLS en entree, verifie le serveur joint en sortie (autorites
publiques, lues avant le chroot), et journalise chaque session TLS.
Mesure sur un envoi reel : TLS 1.3 sur les deux troncons, remis.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La forge nommait infra-mail-01 en dur comme relais : une machine de
locataire, absente du site. Elle derive maintenant son relais du groupe
serveur_postfix. Le relais du site admet les machines dont un role declare
un flux vers lui, lues dans le registre des flux (aujourd'hui la forge).
Deploye au site ; un courriel de mot de passe oublie est arrive et a servi.
Aussi : forge-comptes ne compte plus de changement en mode plan.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lot 3b. make forge-comptes cree un compte par mainteneur declare (plan/mainteneurs.yml
du site), collaborateur en lecture sur les seuls depots de ses locataires, sans mot de
passe connu ; et le compte console-site en lecture seule, son jeton range sur le runner
du site hors de tout depot. La console du site met les demandes ouvertes dans A traiter ;
celle du locataire propose des demandes pre-remplies et le lien vers les siennes.
95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L'epreuve du colis sur le runner de Technolibre : git bundle verify exige un depot
existant, et l'insemination est le cas ou il n'existe pas encore. Le clone verifie le
colis lui-meme ; un depot existant le verifie avant de tirer. Les colis restes d'un
passage interrompu sont retires.
make forge-cles rend aussi chaque depot prive ou public selon le role que lui donne le
plan du site, et seulement une fois les cles de lecture en place.
95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Mesure sur le terrain : chaque runner lit son depot en SSH avec sa cle de deploiement,
et la forge lui refuse les autres, alors meme que les depots sont publics. Le role ne
clone plus en HTTPS que les depots publics ; les depots instance, tenant et hebergeur
passent en SSH, cle d'hote epinglee, commande SSH posee dans leur config git. Avant
l'armement, le controleur les apporte en git bundle. La cle d'hote de la forge est
declaree au plan du site et offerte par la fiche. genome_etat et genome_pousser lisent
l'API authentifies ; la sonde genome-servi compte les publics ; forge_amorcer cree
prives les depots des ecosystemes et du site. make forge-etancheite mesure le tout.
Les depots restent publics.
95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Debut du chantier des depots prives (docs/depots-prives-conception.md). La face reseau
publie genome: {depot, cle_lecture} ; P95 exige que la cle soit connue de la flotte, et
l'armement refuse une voute qui en remettrait une autre. make forge-cles enregistre
chaque cle en lecture seule sur le seul depot que la face nomme, retire une cle
perimee, ne touche jamais celle du runner du site. Flux SSH vers la forge du site
depuis les seuls runners des locataires (paire runners_locataires).
Rien n'est encore applique sur le terrain ; les depots restent publics.
95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Route en lecture /api/a-traiter et vue sous Veille, par gravite (a prendre, a savoir,
verifie). Locataire : genome face a la forge, face reseau, fiche du site, plan face a
l'inventaire, machines prevues. Site : genome, sa carte et chaque depot de locataire
face a la forge, face, index et fiche de chaque locataire. Les deux : joignabilite et
prerequis. Le niveau de la forge se lit par git ls-remote, sans rien ecrire.
94 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La cle du runner du site transitait par la face du locataire : lue dans le plan du
site, publiee dans la face, relue par le site. Le runner d'un locataire, sans ce
plan, recalculait une face sans elle. La face ne la porte plus ; le site l'ajoute en
clonant la machine qui porte serveur_ops_tenant, et elle seule, en tete des cles
(clonage_rendu). Le clonage par la face reste identique a l'octet pres au chemin du
poste (P93 le compare cle comprise). La console juge de nouveau la face partout.
94 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sur le runner de Technolibre, la vue Lien avec le site disait la face a republier :
la cle d'amorcage d'ops-01 vient du plan du site, absent du runner, et la face
recalculee la perdait. Republier d'ici l'aurait retiree. La face se lit partout et
ne se juge plus que la ou le site est monte, comme la fiche. Un test le garde.
94 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deux routes en lecture, /api/lien-site et /api/locataires-heberges, et deux vues
sous Veille : le locataire voit sa face reseau publiee et la fiche que son site lui
a deposee, le site voit ce que chaque locataire lui a publie. Chaque fichier est
montre avec son commit, que l'autre bout lit.
Un site de reprise ne juge plus la fiche deposee par l'hebergeur actif : il la
declarait perimee a chaque lecture (SITE-Technolibre). Un test le garde.
94 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lot 1 de la refonte (affichage seul, aucune route ni pouvoir touche) :
- en-tete d identite colore par portee, PROD avec le nom ;
- navigation propre au locataire et au site, encadre Cette console peut ;
- parc en tableau groupe par categorie ; noeuds de la fabric et machines du site ;
- Verifier puis Deployer en tete de fiche ; assistants hors portee replies ;
- bandeau Plan modifie a la place du point sur le bouton.
Rapport de preuves du jour versionne, carte a 53 pieces d audit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La sortie 80/443 que le socle donnait a toute machine ne servait plus a apt
(tout passe par le cache du site) mais a de la telemetrie et a des sorties
non declarees. Elle devient conditionnelle (seulement_si artefacts_amorcage
vide) ; la telemetrie de Grafana, Loki, Alloy et la verification de version
de Collabora sont coupees a la source ; rspamd et la sonde du genome
declarent leur sortie. Le devis du site evalue enfin seulement_si, ce qui
retire aussi le 465/587 vers un Postfix du site qui n'ecoute que sur 25.
Garde : test_conditions_site.py. Journal (125).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le requirements.yml genere portait version: \1 (regex_replace dans un bloc
YAML) ; ansible-galaxy refusait, et la reprise de la reconstruction de
Technolibre s'est arretee apres avoir pris roues et collections au site.
Version tiree du nom par decoupage, sans expression reguliere ; rejoue sur
le poste, les trois collections s'installent hors ligne.
test_verrou_runner.py rend desormais le fichier avec Jinja2 et compare.
94 preuves. CHANGELOG (121).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La copie fichier par fichier du verrou ne cree pas son dossier, contrairement
a l'ancienne copie du cache entier. La reconstruction de Technolibre s'est
arretee a l'insemination sur un runner neuf (roues bien prises au site).
test_verrou_runner.py exige desormais que chaque dossier vise soit cree avant.
CHANGELOG (121) : l'arret, et le blocage site-pki-01 -> 10.37.32.1:8006 vu a
la frontiere, qui est la sonde de connectivite (resultat attendu).
94 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
verrou-runner.yml fige les 15 roues et les 3 collections qui tournent sur le
runner de Technolibre, avec URL amont et somme SHA-256. Le cache du runner
tenait deux versions de six bibliotheques selon le jour du montage.
- serveur_artefacts depose ces 18 fichiers au depot de binaires du site.
- serveur_ops les prend au site d'abord, somme verifiee ; repli sur Internet
dit en clair ; plus aucun pip download ni collection download ; seuls les
fichiers du verrou sont deposes sur le runner.
- ansible-core epingle a 2.18.19 (la version deployee).
- P70 exige le verrou au site ; test_verrou_runner.py dans make test.
AGENTS.md et CLAUDE.md : version allegee par l'operateur.
94 preuves. CHANGELOG (121).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
user_oidc et richdocuments epinglees (version, sha256), tenues par site-cache-01 dans le depot de binaires, installees par app_tierce.yml : site d'abord, amont en repli dit, somme puis signature (occ integrity:check-app), activation. P70 comprend les listes d'artefacts. L'app store a 77 ko/s avait arrete la reconstruction de Technolibre.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
restic snapshots --latest 1 rend un instantane par groupe (machine et chemins) : la sonde gardait le premier, l'ancien, depuis qu'un jeu a ete ajoute a site-mon-01 (EN RETARD a tort, PERIME promis a 50 h). Meme motif cote serveur_backup. Le temoin de Loki ne compte plus l'index compacte. Journal (114), (115).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copier 6 550 morceaux arretait Loki 13 s au site ; les lier prend 40 ms. Ils sont adresses par leur contenu ; chunks/index loge delete_requests.gz, qui se reecrit, et reste vraiment copie.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Les metriques et les journaux repartaient de zero a chaque reconstruction. setops-copie-a-froid arrete le service le temps de copier et le relance quoi qu il arrive ; les roles remettent la copie avant de demarrer ; les temoins jugent la couverture, pas les fichiers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le colis du genome ne portait que la branche : les etiquettes de release
n'arrivaient jamais sur la forge du site. Il les porte desormais, le runner les
pousse sans forcer, et la forge est relue par son API. publier.py pousse aussi
les etiquettes vers eregion. Le wiki, jamais publie sur la forge du site, l'est.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L'historique d'Icinga DB etait exclu de la restauration (2026-09-30) : son
environnement derive de l'AC d'Icinga, recreee a chaque reconstruction. L'AC est
desormais un jeu de sauvegarde, remis avant api setup ; la base d'Icinga est
restauree, et son schema n'est importe que sur une base vierge.
Les temoins comparaient PostgreSQL par nombre de lignes et n'ont pas vu 412
lignes d'historique remplacees par 380 neuves. Ils comparent desormais par cle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le devis lisait le gabarit du tenant : il validait chez Technolibre un 99998 que
plus rien ne clone, et refusait Chezlepro, qui suit la regle et n'en declare plus.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Premier essai reel sur Technolibre : pg_dumpall --clean recree template1, et
les bases vivantes etaient lues sans les modeles. Le test reproduit le filtre.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
M4 a reconstruit Technolibre par le site qui la nomme ; les 7 jeux sont revenus
de l'instantane de 11:34, mais le premier depot d'apres reconstruction l'a chasse
par --keep-daily le jour meme : plus rien a quoi comparer.
Le depot d'avant rasage est etiquete avant-raser et garde jusqu'a la
reconstruction suivante. Le bilan dit ce qui a ete restaure et si c'est encore
au depot. setops-restaurer temoins et make temoins-etat comparent l'etat vivant
a cet instantane : une perte ou une identite changee est un ecart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sur le chemin TENANT=, raser annoncait un ecosysteme monte (rien n'est
monte sur le runner du site) et le devis de placement un tenant « ? ».
Les deux en-tetes disent desormais ce qui est vise et d'ou vient la liste.
Le pre-vol lui-meme est consigne : 13 VM, aucun conflit, placement conforme.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
reconstruire_locataire lance locataire-raser et locataire-creer TENANT= sur
le runner du site, sans monter le depot du locataire comme instance.
Trou de M2 corrige avant tout usage : le sous-make cloner-vm nommait le pool
par l'instance montee (hors de tout pool sur le site, pool de l'autre
locataire sur le poste). devis_proxmox_pools.py --pool-du-locataire le
derive de la face.
test_appels_locataire.py : un faux ansible-playbook consigne la ligne qui
part ; 26 machines, ancien chemin, site et poste identiques a l'argument
pres. Temoin : l'ancienne ligne de pool fait echouer le test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
locataire-creer, locataire-raser et placement-plan TENANT= lisent la face
reseau du locataire, sans monter son depot comme instance. flotte-creer,
creer-vm et raser acceptent TENANT= ; sans lui, l'ancien chemin est inchange.
P94 : creer, raser et placer par la face visent les memes machines, VMID,
valeurs et ponts que l'ancien chemin, chacun mesure par sa commande lancee
a part. 116 controles dans test_contexte.py, temoins compris.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Chaque machine porte ce que parametres-proxmox rend, par la meme fonction.
P93 compare a la commande lancee a part pour les 26 machines.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
devis_proxmox_pools et vpn_admin prennent machines, VMID, etat, pairs et
index dans la face publiee. Sorties identiques a un worktree complet de
la version precedente ; temoins d'alteration verts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La face publie aussi fonctions ; les pools retrouvent leurs VM. La
comparaison a l'ancien code est refaite dans un git worktree complet :
les sept sorties du site sont identiques. Garde de regression ajoutee.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
decouvrir_du_site part de underlay.tenants et prend index et zones dans
la face publiee. Les sept sorties du site sont identiques a HEAD, a
l'octet pres ; frontiere-plan ne voit rien a faire.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
devis_opnsense prend dans la face publiee les adresses des groupes,
l'intrant d'administration, les verdicts, le tunnel et les zones
publiees. Devis identique a l'octet pres, a HEAD comme par le repli.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La face publie le verdict des flux conditionnels ; devis_proxmox_fw y lit
inventaire, verdicts et administration. Devis identique, octet pour octet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
face-reseau.yml publiee chez chaque locataire (make face-reseau-publier) ;
les comptes de sauvegarde et le DNS public du site la lisent au lieu des
fichiers internes. Inventaire du site identique, octet pour octet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le site depose fiche-site.yml chez ses locataires (make fiches-site-
deposer) ; l'instancier y lit temps, delegation DNS et routage. Sans le
site, l'inventaire genere est identique au versionne, a l'octet pres.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
resoudre_flux publie les sorties vers l'Internet de chaque machine ;
verifier_sorties les confronte aux regles de sortie de la frontiere.
Le contrat site <-> locataire est entierement publie et prouve.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La face reseau dit quelles entrees publiques sont ouvertes au poste ;
verifier_administration confronte gestion, VPN et tunnel. La sortie 8006
de serveur_ops vers externe ne laissait passer aucun paquet (hyperviseurs
en plages privees) et affirmait un pouvoir qu aucun locataire n a.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La face reseau porte le port de son tunnel ; verifier_entrees_publiques
confronte regles WAN, redirections et tunnel aux entrees que la face
ouvre a tous. Aucun ecart ; quatre alterations vues.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>