Set-OPS-Public/roles/serveur_backup_site/defaults/main.yml
Daniel Allaire 3ea0c95492
Some checks are pending
verifier / verifier (push) Waiting to run
sauvegarde : l etat d un locataire quitte enfin sa propre flotte
Chezlepro rangeait ses instantanes sur une VM DE SA PROPRE FLOTTE. Raser
l ecosysteme pour le reconstruire, c etait raser le filet avec.

Le site a son depot ; les neuf detenteurs d etat y deposent ; une
restitution est sortie (annuaire LDAP lisible, hors flotte).

Isolation par compte Unix, pas par convention : home 0700, cle exclusive,
racine partagee a root en 0711 (traversable, non listable). Les deux refus
constates. Le site heberge du chiffre : il ne peut ni lire ni ouvrir, d ou
la verification deplacee chez le locataire qui detient la cle.

Quatre defauts reveles par ce deuxieme usage :
- la racine des depots ne peut etre le home de personne (StrictModes rendait
  Permission denied publickey pour un refus de CHEMIN)
- la racine nie le TLD internal, et harden-below-nxdomain etendait ce non a
  toute la zone sans jamais interroger l autoritatif : aucun locataire ne
  pouvait nommer un service du site
- le gabarit transporte des fichiers de durcissement perimes, et les machines
  du site ne recoivent jamais ssh_hardening
- MaxStartups compte les connexions non authentifiees : un depot de site en
  voit la somme de ses locataires

Constat non corrige : les machines du site ne sont pas durcies.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 22:16:20 -04:00

47 lines
2.7 KiB
YAML

---
# LE DÉPÔT DE SAUVEGARDE DU SITE — le marqueur, pas l'installateur.
#
# `serveur_backup` pose le dépôt et son utilisateur restreint ; ce rôle dit que CE dépôt
# est celui où les écosystèmes du site déposent leur état, et déclare le flux qui le
# permet.
#
# Les valeurs viennent de `serveur_backup` : on ne les redéclare pas ici, une seconde
# source finirait par diverger de la première.
# LA RACINE PARTAGÉE — parent des dépôts, home de personne.
#
# Chaque déposant (les locataires, et le site lui-même) a SON sous-répertoire en 0700.
# Celui-ci est leur parent commun : il appartient à root, et n'est ni le home ni la
# propriété d'aucun compte de dépôt. C'est ce que `sshd` exige (`StrictModes`) pour
# accepter une clé, et ce que le noyau exige pour qu'un compte puisse simplement
# atteindre son propre répertoire.
serveur_backup_site_parent: "/srv/restic"
# Le sous-répertoire du SITE lui-même. La même valeur est passée à `serveur_backup`
# dans `meta/main.yml` — un paramètre de dépendance n'est pas en portée ici, on ne peut
# donc pas la lire, seulement la répéter.
#
# Deux littéraux qui doivent s'accorder finissent toujours par diverger. Ce qui les
# tient, c'est la vérification plus bas : le marqueur EXIGE que ce répertoire existe
# réellement. S'ils divergent, l'installateur en aura créé un autre, celui-ci sera
# absent, et le déploiement s'arrêtera en le nommant — au lieu de laisser un dépôt de
# site silencieusement inaccessible.
serveur_backup_site_racine: "{{ serveur_backup_site_parent }}/site"
serveur_backup_site_utilisateur: "{{ serveur_backup_utilisateur | default('restic') }}"
# COMBIEN DE PLACE IL FAUT AVOIR DEVANT SOI, ET POURQUOI ON LE MESURE.
#
# Un dépôt de sauvegarde qui se remplit ne tombe pas : il ACCEPTE moins, puis échoue au
# milieu d'un instantané. La panne arrive donc au pire moment — celui où l'on écrit — et
# se lit comme une erreur réseau. On refuse en amont plutôt que de la découvrir en aval.
#
# 20 Go : de quoi absorber plusieurs instantanés complets d'un écosystème. Ce n'est pas
# une capacité cible, c'est un plancher sous lequel il ne faut pas descendre sans le voir.
serveur_backup_site_espace_minimal_go: 20
# LES LOCATAIRES — un compte Unix chacun, dérivé par l'inventaire du site.
#
# Chaque entrée : `{nom, compte, pubkey}`. La liste vient de `site_inventaire.py`, qui
# détient les deux sources nécessaires (le plan du site ET les dépôts des tenants) ; le
# rôle, lui, tourne sur une machine qui n'a aucune raison de lire la carte de
# l'hébergeur. Vide par défaut : un dépôt sans locataire déclaré n'ouvre aucun compte.
serveur_backup_site_locataires: []