Choix d’un gestionnaire à secrets
La problématique du jour concerne la gestion des secrets, avec des questions du genre :
- Quelle solution pour stocker mes secrets (password, OTP) ?
- Faut-il stocker tout les secrets dans un seul et même endroit ?
- Est-ce que je dois utiliser un système avec mdp ? avec clé ? les 2 ?
- Est-ce que je vais partager des secrets avec plusieurs personnes ? Avec plusieurs pc ? PC + téléphone ?
Mes critères étaient donc ceux-là :
- Le système doit être sufisament sûr pour les protéger mais pas trop complexe pour que des non informaticien puissent l’utiliser en cas de mort
- Le système ne doit pas être trop complexe pour que je sois en mesure de pouvoir l’utiliser en vieillissant
- Le système doit être sauvegardable
- Je dois pouvoir récupérer un mot de passe pour l’inclure automatiquement dans un fichier de configuration
- Je dois pouvoir l’utiliser en ligne de commande, avec mon navigateur et avec mon téléphone, le tout dans la même version/syncro
Avec ces critères, j’ai repéré plusieurs solutions :
- gpg
- password-store
- keepass et ses dérivés
- vault
- bitwarden et ses forks
J’ai rapidement exclu vault pour sa complexité de mise en oeuvre. J’ai pas assez de temps disponibles et je pense pas qu’à 90 ans je serai en capacité à maintenir cette solution
Le deuxième éliminé est bitwarden (le fork, pas la solution originale). La solution est sympas, mais pareil, faut un serveur, et des compétences pour le maintenir, et en cas de mort ou dérivé, ça va être complexe.
password-store : j’ai aimé. Clairement ça répond à bcp de chose, et je pense que c’est clairement une solution au travail en équipe. gopass améliore l’expérience. Dans un contexte pro, je réfléchirai à son introduction. Je l’ai sorti, car sur du très long terme, je pense que c’est pas jouable, surtout pour avoir un tiers de confiance (non geek) en capacité à l’utiliser
Une bonne lecture à ce sujet : https://github.com/fpco/best-practices/blob/master/password-store.md
gpg : Bien mais ne supportera pas la perte de sa clé. J’ai trouvé que c’etait trop risqué et je parle pas de familiariser mon entourage à son usage.
La solution que j’ai retenu : KeepassXC. La GUI est plutot bien faite et l’outil viens avec l’utilitaire keepassx-cli qui permet d’avoir un mot de passe dans les fichiers de configuration, comme le mail.
Comment j’ai choisi de l’utiliser ? J’ai un fichier protégé par passphrase pour mes secrets, et j’ai une base keepass contenant 1 seul mdp pour une application en particulier.
Par exemple une base mail qui est utilisé uniquement dans le fichier de configuration de mbsync. Cette base n’a pas de mdp, mais un fichier key. Ainsi pour l’ouvrir, il faudra avoir le fichier key (que je synchronise qqpart). En cas de perte, j’ai mon mdp dans ma base keepass globale. En cas de compromission, il n’y a que mes mails qui sont touchés.
Sans être ultime, je peux utiliser 1 base partagée entre mes pc et mon téléphone, avec un client lourd facile d’utilisation, en ligne de commande et dans mon navigateur. Ce qui manque à cette solution, c’est le suivi des modifications.
Un plus : il est possible de faire un export de toute la base dans un fichier csv qu’on pourra stocker dans un coffre-fort. Sur le long terme, ça devrait le faire.
Exemple de création d’une base avec un fichier clé et ajout du secret, le tout en ligne de commande
keepassxc-cli db-create -k $HOME/keys/emails.key $HOME/Keepass/emails.kbx
chmod 0400 $HOME/keys/emails.key $HOME/Keepass/emails.kbx
keepassxc-cli add -p --no-password -k $HOME/keys/emails.key $HOME/Keepass/emails.kbx emails
Recupérer un mot de passe
keepassxc-cli show -a Password --no-password -k $HOME/keys/emails.key $HOME/PRIVE/Keepass/emails.kbx emails