3.3 KiB
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 tout les
processus et tout les utilisateur⋅ices.
Pour plus d'information 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éré 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 trouvent (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és, il faut alors les ajouter dans le fichier secrets
qui se trouve à la racine du projet.
⚠️ ATTENTION ⚠️
Seule la clé publique doit être ajouté et elle est identifiable au fait que le fichier se termine par
.pub
.
Une fois ajouter, 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
$ agenir -r # -r ou --rekey
Remarque :
Ces commandes fonctionnent également lors du retrait de clé ou lors de changement.
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 leitmotiv le
suivant : seul 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.