Met en place la mécanique de gestion des secrets du dépôt : - .sops.yaml : deux périmètres séparés par acteur. Les stacks/*/secrets.env.yaml sont déchiffrables par le compte de déploiement de chioggia ET l'admin ; tout le reste par l'admin seul. Une compromission du serveur ne donne donc pas accès aux credentials OVH, qui restent gérés par pass. - .gitignore : tout .env est traité comme un accident. La configuration non sensible de chaque stack vit dans un fichier `env_file` versionné. - README : création des clés, emplacements, recettes et pièges. Les secrets sont injectés à la volée par `sops exec-env` : aucun fichier déchiffré ne touche le disque. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
54 lines
2.2 KiB
YAML
54 lines
2.2 KiB
YAML
# ============================================================
|
|
# 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
|