# ============================================================ # Politique de chiffrement SOPS # ============================================================ # Deux périmètres, séparés par ACTEUR — c'est le garde-fou principal # de ce dépôt : # # 1. stacks/*/secrets.env.yaml # Déchiffrables par chioggia (déploiement automatique, sans humain) # ET par l'admin. YAML PLAT uniquement (CLE: valeur) : `sops exec-env` # ne sait pas exporter une structure imbriquée. # # 2. tout le reste # Déchiffrables par l'admin UNIQUEMENT. # Conséquence voulue : une compromission de chioggia ne donne PAS # accès aux credentials OVH / registrar. Sans cette séparation, # prendre le serveur reviendrait à prendre le domaine (donc les MX, # le SPF, et la capacité d'émettre des certificats). # # Les credentials OpenTofu (OVH, AdGuard) restent gérés par `pass` : # ils sont utilisés en interactif depuis le poste admin, jamais par une # machine. Voir dns/ovh.tf et dns/local.tf. # # ------------------------------------------------------------ # Générer une clé — une par machine, seule la PUBLIQUE arrive ici : # # poste admin : age-keygen | pass insert -m infra/age-key # (publique : pass show infra/age-key | age-keygen -y) # serveur : mkdir -p ~/.config/sops/age # (umask 077; age-keygen -o ~/.config/sops/age/keys.txt) # age-keygen -y ~/.config/sops/age/keys.txt # # Fournir la clé privée à sops : # poste : export SOPS_AGE_KEY="$(pass show infra/age-key)" # serveur : ~/.config/sops/age/keys.txt est l'emplacement par défaut, # lu sans aucune variable d'environnement # # Rappel : ajouter une clé ici ne rechiffre RIEN. # sops updatekeys -y stacks/*/secrets.env.yaml # ------------------------------------------------------------ keys: - &lafrite_combava age18m2zl3pwgw97djshzcf4wmhrqxksl4erqse6edkpxpkg5rcz0ujs8u4c7s - &waha_chioggia age1fh70nny5hzz8a8g9077kgfca0lhlh3wsjf4fjrv4klx5ucdtpdmsazuqdj creation_rules: - path_regex: ^stacks/.*/secrets\.env\.yaml$ age: - *lafrite_combava - *waha_chioggia - path_regex: .* age: - *lafrite_combava