Mot de passe dans un fichier sous MySQL
Par Sébastien Le Ray le jeudi 19 février 2009, 20:30 - Sysadmin - Lien permanent
Comment et pourquoi stocker les mots de passe dans un fichier.
Voici donc comment utiliser un fichier pour stocker des identifiants MySQL. Elle est utile dans (au moins) deux cas :
- On a un script de backup (donc non interactif) et dumper 600Mo de base (long) avec un mot de passe sur la ligne de commande (visible via un ps aux) ça le fait moyen ;
- On est fainéant mais un minimum concerné par la sécurité donc on veut pas avoir le même mot de passe [1] partout mais on trouve ça embêtant d'en retenir un compliqué (bah oui).
D'un point de vue sécurité, c'est moins dangereux qu'un post-it si les permissions sont définies correctement sur le fichier (400).
Concrètement ça se passe en deux temps, tout d'abord on crée le fichier, par convention (?), il porte l'extension cnf, par exemple:
$ cat >> sebastien.cnf [client] host = localhost user = sebastien password = U8BABMYSiLc2XGsMcNtBDRYJ3eWFPe socket = /var/run/mysqld/mysqld.sock $ chmod 400 sebastien.cnf
Puis, on indique au client mysql où trouver les infos de connexion lorsqu'on l'utilise :
mysql --defaults-file=sebastien.cnf
Et là, magie ! les informations contenues dans le fichier sont utilisées pour la connexion.
Notez que les options à spécifier ne sont pas limitées aux identifiants, on peut y mettre à peu près n'importe quelle option comprise par les programmes clients [2].
Outre le cas du backup, cette méthode présente des avantages en environnement mutualisé, lorsque plusieurs personnes peuvent intervenir sur la même machine. On peut avoir plusieurs politiques : un fichier avec un groupe spécifique que tous les utilisateurs devant intervenir sur une application se partagent, un fichier par utilisateur (on prend bien soin de ne donner à chaque utilisateur que les permissions dont il a besoin à partir des hôtes dont il a besoin). De cette façon, les rotations dans les équipes sont plus simples à gérer, il suffit de changer le mot de passe et de mettre à jour le fichier correspondant (puisque le fichier doit être accessible en lecture pour les utilisateurs en ayant besoin, une personne quittant l'entreprise peut très bien enregistrer le mot de passe quelque part), personne n'y verra rien...
Notes
[1] le nom de sa femme
[2] Certaines applications client comme mysqldump ne comprennent pas forcément tout (notamment au niveau des options SSL si ma mémoire ne me fait pas défaut. Dans ce cas il suffit d'ajouter le suffixe loose- à l'option (loose-ssl-ca par exemple), si elle n'est pas comprise par le client utilisé, elle sera ignorée au lieu de générer une erreur.