Après plusieurs années à intervenir sur des solutions déployées auprès de divers cloud providers, je remarque une tendance parmi de nombreux utilisateurs, en particulier les développeurs : le stockage en clair de leurs accès dans leurs fichiers de configuration.
je n'évoquerai pas les raisons pour lesquelles cette pratique est à éviter. Je vais plutôt vous présenter une solution parmi d'autres, en m'appuyant sur les outils que j'utilise actuellement, l'objectif étant de vous sensibiliser à cette bonne pratique.
Considérons une plateforme déployée sur AWS par une équipe gérant ses accès à l’aide du gestionnaire de mots de passe KeePassXC et d'un Macbook.
La CLI AWS permet par défaut de stocker ces accès dans le fichier ~/.aws/credentials.
En se rapprochant de la documentation concernant ce fichier, nous découvrons qu'il existe différentes méthodes pour fournir ces informations. Cependant, celle que l'on retrouve le plus fréquemment dans les exemples en ligne ressemble à ceci :
C’est donc logiquement cette méthode que l’on retrouve le plus souvent sur les machines des utilisateurs et la source de notre problématique.
Revenons sur la documentation de ce fichier et intéressons-nous plus particulièrement au paramètre credential_process. Nous y apprenons que celui-ci nous permet de spécifier un exécutable pour récupérer nos accès attendus sous le format suivant :
Afin de tester le fonctionnement de ce paramètre, je vous propose d'écrire un premier script Bash :
Puis de vérifier l'accès à notre cloud provider en exécutant la commande suivante :
Bonne nouvelle, tout fonctionne !
L'objectif étant de ne pas stocker nos accès en clair, nous devons encore modifier ce script afin de récupérer ces derniers à l'aide de notre gestionnaire de mot de passe. Bonne nouvelle encore, KeePassXC possède également une CLI, keepassxc-cli. En revanche le setting credential_process ne nous permettant pas de saisir un mot de passe depuis notre script, nous devons stocker celui-ci à l'aide de l'utilitaire Mac "Trousseaux d'accès".
Pour faire cela, nous pouvons utiliser la commande security en entrant un faux mot de passe afin qu'il n'apparaisse pas dans notre historique de commandes puis en allant le modifier directement depuis l'utilitaire :
N'oubliez pas d'ajouter vos accès dans KeePassXC, ici j'utilise la clé AWS credentials pour les identifier :
Pour les utilisateurs Linux, à la place de security vous pouvez utiliser directement GPG.
Testons à nouveau nos accès à l'aide de la commande AWS précédente. L'utilitaire "Trousseaux d'accès" nous demande bien de saisir notre mot de passe afin de récupérer celui de KeePassXC et la commande AWS s'exécute bien.
Et voilà !
J'espère que ce partage sera utile et croiser de moins en moins ces accès en clair sur vos machines !