sops-nix & Secrets
Référence pour la gestion quotidienne des secrets avec sops-nix.
Pour les procédures de sauvegarde et restauration, voir Sauvegarde & Restauration des Secrets.
Éditer un Fichier de Secrets
Section intitulée « Éditer un Fichier de Secrets »# Ouvrir dans $EDITOR (déchiffre → édite → rechiffre à la fermeture)sops secrets/clochette.yamlsops secrets/kuri_exampleHost.yamlsops secrets/RogueLeader.yaml
# Raccourcis via justjust secrets # kuri_exampleHost.yamljust secrets_clochette # clochette.yamljust secrets_rogueleader # RogueLeader.yamlLire un Secret sans l’Éditer
Section intitulée « Lire un Secret sans l’Éditer »# Déchiffrer et afficher en clairsops -d secrets/clochette.yaml
# Extraire une seule valeur (format YAML imbriqué avec .)sops -d --extract '["services"]["ntfy"]["topic"]' secrets/clochette.yamlAjouter un Nouveau Secret
Section intitulée « Ajouter un Nouveau Secret »- Ouvrir le fichier avec
sops secrets/clochette.yaml - Ajouter la clé/valeur en clair — sops la chiffre à la sauvegarde
- Déclarer le secret dans la config NixOS de la machine concernée :
# Dans le fichier docker-*.nix ou default.nix de la machinesops.secrets."services/monservice/env" = {};- Référencer dans la config du container :
virtualisation.oci-containers.containers."monservice" = { environmentFiles = [ config.sops.secrets."services/monservice/env".path ];};Emplacements des Secrets Déchiffrés
Section intitulée « Emplacements des Secrets Déchiffrés »Au runtime, les secrets se trouvent dans :
| Machine | Emplacement | Usage |
|---|---|---|
| clochette | /run/secrets/<nom> | Secrets système (containers, users) |
| exampleHost | /run/secrets/<nom> | Secrets système |
| exampleHost (HM) | /run/user/1000/secrets/<nom> | Secrets Home Manager (kuri) |
Référencer un secret dans un service systemd ou shell :
cat /run/secrets/services/ntfy/topicDans la config NixOS, toujours utiliser config.sops.secrets."<nom>".path
pour obtenir le chemin — ne jamais hardcoder /run/secrets/....
Structure des Fichiers de Secrets
Section intitulée « Structure des Fichiers de Secrets »# secrets/clochette.yaml (structure déchiffrée)users: guillaume: hashed-password: "..."services: ntfy: topic: "..." traefik: conf: traefik_dynamic.yml: "..." crowdsec: env: "..." immich: env: "..." borg: passphrase: "..." key: private: "..."Rotation d’un Secret
Section intitulée « Rotation d’un Secret »Pour changer la valeur d’un secret existant :
sops secrets/clochette.yaml# Modifier la valeur, sauvegarderPuis redéployer pour que sops-nix dépose la nouvelle valeur dans /run/secrets :
just install_clochette --ask-sudo-passwordLes containers qui lisent via environmentFiles redémarrent automatiquement
après le redéploiement grâce à systemd.
Ajouter une Machine aux Règles de Chiffrement
Section intitulée « Ajouter une Machine aux Règles de Chiffrement »Quand une nouvelle machine est ajoutée au flake, lui permettre de déchiffrer ses secrets :
-
Obtenir sa clé age publique :
- Si fichier age dédié :
age-keygen -y /etc/sops/age/keys.txt - Si dérivée SSH :
ssh-to-age -i /etc/ssh/ssh_host_ed25519_key.pub
- Si fichier age dédié :
-
Ajouter dans
.sops.yaml:
keys: - &nouvelle_machine age1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcreation_rules: - path_regex: secrets/nouvelle_machine.yaml$ key_groups: - age: - *nouvelle_machine - *desktop_examplehost # toujours inclure exampleHost pour pouvoir éditer- Créer le fichier de secrets :
sops secrets/nouvelle_machine.yaml