La forge du site sert son propre TLS (443) : le flux 3000 derriere un edge ne vaut que si serveur_forgejo_tls est faux. L'AXFR 5300 ne vaut que la ou l'instance publique existe (dns_public_site non vide) : pas au site. Absente partout = vide ; une expression Jinja garde le statu quo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
3.5 KiB
YAML
72 lines
3.5 KiB
YAML
---
|
|
# Flux réseau de Forgejo (forge Git). Voir docs/flux-conception.md.
|
|
flux:
|
|
# LE PORT DE LA FORGE N'EST PAS LE MÊME PARTOUT (2026-08-25).
|
|
#
|
|
# `3000` est le port qu'elle écoute DERRIÈRE un edge, en clair : le nginx termine le TLS
|
|
# et lui parle sur la boucle locale. C'était vrai de toutes les forges tant qu'il y avait
|
|
# toujours un edge devant.
|
|
#
|
|
# La forge du SITE n'en a pas — le site n'a pas d'edge — et sert son propre TLS sur le
|
|
# port du schéma, `443`. Écrire `3000` en dur ici serait donc devenu faux pour elle,
|
|
# sans que rien ne le signale : ce flux ne traverse pas la frontière, donc aucun devis
|
|
# ne s'en plaint. Une déclaration fausse qui ne gêne personne est une déclaration qui
|
|
# dérive jusqu'au jour où quelqu'un s'y fie.
|
|
#
|
|
# `derive` dit la vérité : le port vient de `serveur_forgejo_http_port`, et
|
|
# `verifier_ports` sait qu'il n'y a pas d'écoute fixe à comparer.
|
|
# DEUX ENTREES, PARCE QUE CE SONT DEUX SITUATIONS — pas une ligne qui dirait « ça
|
|
# dépend ». Le vocabulaire des flux n'a pas de mot pour l'indécision, et c'est tant
|
|
# mieux : un flux se lit pour savoir ce qui circule et comment. Une valeur ambiguë
|
|
# rendrait l'audit impossible sans aller lire le déploiement.
|
|
#
|
|
# ET LA SITUATION SE LIT DANS LE REGLAGE (2026-09-30) : la premiere seulement si la forge ne
|
|
# sert pas son propre TLS. Au site (`serveur_forgejo_tls: true`), elle ecoute 443 et rien
|
|
# sur 3000 ; la regle restait posee parce que le site a un edge — et la sonde
|
|
# `connectivite` la montrait coupee chaque minute.
|
|
- sens: ingress
|
|
port: 3000
|
|
protocole: tcp
|
|
pair: edge
|
|
chiffrement: clair
|
|
seulement_si: {variable: serveur_forgejo_tls, egal: false}
|
|
raison: >-
|
|
Interface web + Git HTTP derrière un edge : le nginx termine le TLS et parle en
|
|
clair à la forge. C'est le cas de tout tenant.
|
|
- sens: ingress
|
|
port: derive
|
|
protocole: tcp
|
|
# `admin` EN PLUS DE `flotte` (2026-09-12). Sans edge devant elle, la forge du SITE
|
|
# n'etait joignable que par les machines de l'ecosysteme — jamais par l'exploitant.
|
|
# Ca passait inapercu tant que son plan d'administration vivait dans le supernet d'un
|
|
# locataire, que les expositions acceptent deja. Une fois le site sorti de ce
|
|
# supernet, l'exploitant ne pouvait plus ni amorcer sa forge ni y pousser le genome.
|
|
#
|
|
# `admin` se resout depuis `nftables_admin_ssh` : un ecosysteme qui ne declare aucun
|
|
# administrateur n'emet aucune regle, et c'est le comportement voulu — une source
|
|
# vide ouvrirait le port a tous.
|
|
pair: [flotte, admin]
|
|
chiffrement: tls
|
|
raison: >-
|
|
Sans edge devant elle — la forge du SITE — elle sert son propre TLS sur le port du
|
|
schéma (443), avec le certificat de la machine. `derive` parce que le port vient de
|
|
`serveur_forgejo_http_port` : écrire 3000 en dur ici serait faux pour elle, et rien
|
|
ne le signalerait puisque ce flux ne traverse pas la frontière.
|
|
- sens: egress
|
|
port: 5432
|
|
protocole: tcp
|
|
pair: serveur_postgresql
|
|
chiffrement: tls-requis
|
|
raison: "Base de données Forgejo (verify-full)."
|
|
- sens: egress
|
|
port: 25
|
|
protocole: tcp
|
|
pair: serveur_postfix
|
|
chiffrement: starttls
|
|
raison: "Notifications courriel (relais via le MTA Postfix)."
|
|
- sens: egress
|
|
port: 443
|
|
protocole: tcp
|
|
pair: edge
|
|
chiffrement: tls-requis
|
|
raison: "Découverte OIDC et jetons auprès de Keycloak (via son FQDN publié à l'edge)."
|