voute du site : dix secrets engendres, quatre a relever, et la porte fermee avant

Le site n avait ni voute ni cle. C etait le seul blocage TOTAL avant la visite — et
le seul qui ne demandait aucun Internet : sans elle, `make site-appliquer` ne passe
aucun secret et chaque role echoue sur son assertion.

Quatorze secrets, comme le site de Chezlepro :
- dix engendres sur le poste (autorite de certification et son provisionneur, cle et
  jeton interne de la forge, ses comptes d administration, base et jeton d API de la
  supervision, phrase du depot de sauvegarde) ;
- une paire ed25519 pour la sauvegarde — la moitie PRIVEE en voute, la PUBLIQUE au
  plan, ou elle est publiable sans risque et ou elle est la seule a pouvoir servir ;
- quatre laisses VIDES, parce qu ils ne s engendrent pas : ce sont des jetons que le
  materiel delivre. Vides plutot qu absents, deliberement — une cle absente donne une
  erreur de variable indefinie, une cle vide donne l assertion du role, qui dit QUOI
  manque et OU le prendre.

.gitignore ALIGNE SUR CHEZLEPRO, ET AVANT DE POSER LA VOUTE. Ce depot n excluait que
`*.vault.yml.bak` : `underlay.vault.yml` aurait ete versionnable. Le defaut etait
dormant parce que le fichier n existait pas encore — il se serait reveille au premier
`git add -A`, c est-a-dire au moment ou l on cesse de regarder. On ferme la porte
avant de poser ce qu elle protege.

Verifie : la voute se relit par le chemin NORMAL (la liste d identites, pas la cle
directe), quatorze secrets, aucun manquant, et la cle privee de sauvegarde est bien
une cle. Le chiffrement a ete fait avec ses deux flux rediriges vers des fichiers —
`ansible-vault` echoue en SILENCE sur une sortie non bloquante, et la voute paraitrait
ecrite en etant identique a l octet.

COLLECTE.md compte desormais dix-sept valeurs a relever, dont les quatre jetons.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
This commit is contained in:
Daniel Allaire 2026-09-13 14:37:37 -04:00
parent 1fc0b44b6d
commit f9d14e6447
3 changed files with 33 additions and 1 deletions

13
.gitignore vendored
View file

@ -1,2 +1,15 @@
# La VOUTE du monde physique ne se versionne jamais en clair.
#
# ALIGNE SUR SITE-Chezlepro LE 2026-09-13. Ce fichier n'excluait que `*.vault.yml.bak` :
# la voute elle-meme, `underlay.vault.yml`, aurait ete versionnable. Elle n'existait pas
# encore, donc le defaut etait DORMANT — il se serait reveille au premier `git add -A`,
# c'est-a-dire exactement au moment ou on cesse de regarder.
#
# L'ordre compte : on ferme la porte AVANT de poser ce qu'elle protege.
*.vault.yml
*.secret
*.pem
*.key
*.vault.yml.bak
flux-genere/

View file

@ -10,6 +10,10 @@ choix : ce sont des FAITS que seul le matériel peut dire. Treize valeurs, pas t
| `<<IP_FRONTIERE_ADMIN>>` | OPNsense, interface de gestion | Dépend du plan d'adressage existant sur place |
| `<<optN>>` ×9 | OPNsense → Interfaces → Assignments | Les noms `optN` sont attribués dans l'ordre de création |
| `<<lan|optN>>` | Idem | Selon que la patte de gestion est la LAN d'origine ou une autre |
| `proxmox_api_token_id` | Datacenter → Permissions → API Tokens | Délivré par le nœud à la création |
| `proxmox_api_token_secret` | Idem — **affiché une seule fois** | Ne se relit jamais ; le noter tout de suite |
| `vault_opnsense_api_key` | System → Access → Users → api keys | Délivré par la frontière |
| `vault_opnsense_api_secret` | Téléchargé avec la clé, même fichier | Idem |
**Le piège des `optN`.** Le devis raisonne en ARRIVÉE : une règle posée sur la mauvaise
patte ne correspond jamais, et rien ne le signale. Relever les neuf noms exacts avant de
@ -20,6 +24,18 @@ chez Chezlepro et toutes les règles entrantes des locataires tombaient dans le
environ 600 Go. Vérifier `vgs` et `df -h` AVANT de lancer la matérialisation : c'est la
seule décision de ce document qui peut encore changer, et elle se prend avec un chiffre.
**Les quatre jetons vont dans la voûte**, pas dans un fichier de plan :
```
cd ../Set-OPS-public
ANSIBLE_VAULT_IDENTITY_LIST="$(python3 scripts/voutes.py identites)" \
ansible-vault edit ../SITE-Technolibre/underlay.vault.yml
```
Ils y sont déjà déclarés, **vides**. C'est volontaire : une clé absente donne une erreur de
variable indéfinie, une clé vide donne l'assertion du rôle — qui dit quoi manque et où le
prendre. Les dix autres secrets du site sont déjà engendrés.
---
## Ce qui a été décidé, et qu'il suffit de confirmer

View file

@ -30,7 +30,10 @@ gabarit:
# Clé publique du compte de dépôt des sauvegardes du site lui-même — générée au
# déploiement de `site-backup-01`, recopiée ensuite.
backup_pubkey: ""
# LA MOITIE PUBLIQUE de la paire de sauvegarde du site. Sa jumelle privee vit dans
# `underlay.vault.yml` — jamais versionnee. C'est cette cle-ci que le depot autorise :
# la publier est sans risque, et c'est meme le seul moyen qu'elle serve.
backup_pubkey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINf8O1ASPbRE2J+3uOrdJBRFJZCap8WeHjupdboI1KKF sauvegarde site-technolibre"
nftables_admin_ssh: []
supervision_courriel: sysadmin@technolibre.ca