Il y a 14 ans -
Temps de lecture 4 minutes
Maven Definitive Guide FR – chiffrez vos mots de passe
Pour en avoir parlé fin septembre, vous savez peut-être que je participe à la traduction française du Maven Definitive Guide. Comme vous pouvez le constater, la traduction est maintenant bien avancée, nous lancerons d’ailleurs probablement très bientôt les demandes de relecture de la seconde et dernière partie (vous en serez informé sur ce blog).
Je profite de cette occasion pour vous en présenter un extrait en prenant l’exemple d’une fonctionnalité que je ne connaissais pas avant de m’y atteler : comment chiffrer vos mots de passe dans vos Settings Maven.
Si vous utilisez Maven pour déployer vos artefacts sur des dépôts distants ou tout autre service distant nécessitant l’utilisation de mots de passe, la meilleure solution est de stocker ces mots de passe dans vos Settings Maven. Sans un mécanisme pour chiffrer ces mots de passe, le fichier ~/.m2/settings.xml devient rapidement une faille de sécurité, car il contient les mots de passe d’accès à vos différents serveurs en clair. Pour éviter ce problème, Maven 2.1 a introduit une fonctionnalité qui permet de chiffrer vos mots de passe. Pour ce faire, vous devez commencer par créer un mot de passe maître et stocker celui-ci dans un fichier de security-settings.xml à l’emplacement ~/.m2/settings-security.xml. Vous pouvez ensuite utiliser ce dernier pour chiffrer vos autres mots de passe, ceux que vous deviez stocker en clair dans vos Settings Maven (~/.m2/settings.xml).
Pour illustrer cette fonctionnalité, regardons le processus utilisé par Maven pour récupérer le mot de passe non chiffré d’un serveur à partir des paramètres d’un utilisateur. Le schéma ci-dessous présente ce processus. Un utilisateur peut faire référence à un serveur en utilisant un identifiant dans le POM d’un projet, Maven recherche alors le serveur correspondant dans ses settings. Une fois trouvé, Maven utilisera le mot de passe associé à celui-ci. Le mot de passe est stocké en clair dans ~/.m2/settings.xml, il est donc facilement accessible à toute personne qui dispose des droits de lecture sur ce fichier.

Maintenant, regardons comment Maven utilise des mots de passe chiffrés. Le diagramme ci-dessous présente ce processus.

Pour configurer la fonctionnalité de chiffrage des mots de passe, créez le mot de passe maître en exécutant l’une des commandes suivantes :
shell> mvn -emp{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}
ou
shell> mvn --encrypt-master-password{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}
Maven affiche alors une copie de la version chiffrée du mot de passe sur la sortie stantard. Copiez celui-ci et collez-le dans le fichier ~/.m2/settings-security.xml comme le montre l’exemple suivant.
{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}
Après avoir créé le mot de passe principal, vous pouvez commencer à chiffrer vos mots de passe pour les utiliser dans vos settings. Pour chiffrer un mot de passe à l’aide du mot de passe maître, utilisez l’une des commande suivante mvn -ep
ou mvn --encrypt-password
. Imaginons que vous disposez d’un gestionnaire de dépôt et que vous avez besoin d’un utilisateur « deployment » et d’un mot de passe « qualityFIRST » pour vous y connecter. Pour chiffrer ce mot de passe, utilisez la ligne de commande suivante :
shell> mvn -ep qualityFIRST {uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}
Copiez ensuite le mot de passe chiffré affiché sur la sortie standard et collez-le dans vos settings Maven.
... nexus deployment {uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}
Lorsque vous exécutez un build Maven qui a besoin d’interagir avec le gestionnaire de repository, Maven récupérera le mot de passe principal à partir du fichier ~/.m2/settings-security.xml et utilisera celui-ci pour déchiffrer le mot de passe stocké dans votre fichier ~/.m2/settings.xml. Maven utilisera ce mot de passe déchiffré pour se connecter au serveur.
Quels sont les bénéfices d’un tel mécanisme ? Il vous permet d’éviter de stocker en clair vos mots de passe dans le fichier ~/.m2/settings.xml. Notez que cette fonctionnalité ne prévoit pas le chiffrage du mot de passe lors de l’envoi de celui-ci sur le serveur distant. Il est toujours possible, pour une personne mal intentionnée, de récupérer vos mots de passe en analysant les flux réseau.
Pour encore plus de sécurité, vous pouvez demander à vos développeurs de stocker le mot de passe maître chiffré sur un périphérique de stockage amovible comme un disque dur USB. En utilisant cette méthode, un développeur doit brancher son disque amovible sur sa station de travail lorsqu’il veut effectuer un déploiement ou une quelconque interaction avec un serveur distant. Pour cela, votre fichier ~/.m2/settings-security.xml doit contenir une référence vers l’emplacement réel de votre fichier settings-security.xml. Cette configuration passe par l’utilisation de la balise relocation
.
/Volumes/usb-key/settings-security.xml
Ainsi, le développeur peut stocker son fichier settings-security.xml sur son emplacement personnalisé /Volumes/usb-key/settings-security.xml et s’arranger pour que ce fichier ne soit disponible que s’il est assis devant sa station de travail.
Commentaire
1 réponses pour " Maven Definitive Guide FR – chiffrez vos mots de passe "
Published by Mike , Il y a 14 ans
Très bon article, merci !
C’est incommensurablement mieux qu’en clair, au moins du fait qu’en éditant un fichier settings à coté d’un collègue, je ne vais pas lui montrer mes mots de passe.
Mais finalement, le contenu de settings-security.xml n’est jamais qu’une clé et si on ne peut pas mettre de passphrase, on ne fait que compliquer un peu le travail de l’apprenti « pirate ».
On ne peut toujours pas faire en sorte que Maven demande une passphrase ?