.. | ||
grafana | ||
README.md |
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.