nixos/secrets
2025-10-07 21:20:49 +02:00
..
grafana grafana: configuration du service 2025-10-07 21:20:49 +02:00
README.md jitsi: configuration du service 2025-09-30 23:16:28 +02:00

Agenix

Agenix est un outil permettant d'inclure des secrets dans une configuration NixOS et notamment de ne pas les copier les secrets dans /nix/store, qui est visible par tout le monde (dit "world readable"), c'est-à-dire par tous les processus et tous les utilisateur⋅ices.

Pour plus d'informations sur agenix, veuillez vous réferer à la documentation officielle.

Pré-requis

La présente documentation présuppose que l'ordinateur exécutant les commandes possède NixOS ou le gestionnaire de paquet nix.

Fonctionnement

Génération des clés de (dé)chiffrement

Tout d'abord, agenix utilise des clés de chiffrement asymétrique pour chiffrer et déchiffrer les secrets. Pour cela, il faut en premier lieu en générer et les indiquer à agenix.

Utilisateur⋅ice

Pour un⋅e utilisateur⋅ice, il convient de générer une clé ssh (ed25519) avec la commande :

$ ssh-keygen -t ed25519

La commande vous indiquera où la clé sera enregistrée (et de changer l'emplacement le cas échéant). Rappelez-vous bien de la localisation car elle sera nécessaire par la suite.

Remarque :

Pour des raisons de préférence personnelle, il peut être préférable de ne pas mettre le nom par défaut (<username>@<host>). Il convient alors d'utiliser la commande suivante :

$ ssh-keygen -t ed25519 -C <quelque>@<chose>

Machines

Pour une machine, les clés ssh sont automatiquement générées lors de l'installation, et la clé publique se trouve (généralement) dans /etc/ssh/ssh_host_ed25519_key.pub.

Ajout des clés et rechiffrement

Une fois les clés générées, il faut alors les ajouter dans le fichier secrets qui se trouve à la racine de ce projet.

⚠️ ATTENTION ⚠️

Seule la clé publique doit être ajoutée, et elle est identifiable au fait que le fichier se termine par .pub.

Une fois ajoutée, il faut alors que quelqu'un ayant les secrets chiffrés pour sa clé ssh rechiffre les secrets pour votre clé. Cela se fait avec les commandes :

$ nix develop
$ agenix -r    # -r ou --rekey

Remarque :

Ces commandes doivent également être effectuées lorsqu'une clé est changée ou supprimée.

Créer et éditer un fichier

Pour éditer un fichier, il suffit d'utiliser les commandes :

$ nix develop
$ agenix -e <chemin/du/fichier>.age -i <chemin/de/la/clé>

Pour créer un nouveau fichier, il faut préalablement l'ajouter dans secrets.nix. Il est alors important d'ajouter les clés pour lesquelles le fichier doit être chiffré. Il est préférable de respecter le leitmotiv suivant : seuls les machines et personnes ayant besoin du secret doivent avoir accès audit secret.

Une fois cela effectué, la commande pour créer le fichier est la même que celle pour les éditer (excepté le -i puisque qu'il n'y a pas besoin de déchiffrer le secrets).

Utiliser agenix dans une configuration

Pour utiliser agenix dans une configuration, il faut commencer par écrire le fichier :

age.secrets = {
  <name> = {
    file = ../../secrets/<chemin>.age;
    path = "/chemin";
    owner = "<owner>";
    group = "<root>";
    mode = "420";
  };
};

Puis, il est possible de spécifier le chemin avec config.age.secrets.<name>.path à l'endroit qui convient.