Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    A.2.11. Chiffrement des mots de passe dans les 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 en clair d'accès à vos différents serveurs. 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 Maven d'un utilisateur. La Figure A.1, « Stockage de mot de passe non crypté dans les Settings Maven » 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.

    Stockage de mot de passe non crypté dans les Settings Maven

    Figure A.1. Stockage de mot de passe non crypté dans les Settings Maven


    Maintenant, regardons comment Maven utilise des mots de passe chiffrés. La Figure A.2, « Stockage d'un mot de passe crypté dans les Settings Maven » présente ce processus.

    Stockage d'un mot de passe crypté dans les Settings Maven

    Figure A.2. Stockage d'un mot de passe crypté dans les Settings Maven


    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 mvn -emp ou mvn --encrypt-master-password suivi par votre mot de passe maître.

    $ mvn -emp mypassword
    {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.

    Exemple A.11. settings-security.xml avec un mot de passe maître

    <settingsSecurity>
      <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master>
    </settingsSecurity>
    

    Après avoir créé le mot de passe maître, 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 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 :

    $ mvn -ep qualityFIRST
    {uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}

    Copiez ensuite le mot de passe chiffré affiché sur la sortie standard et collez-le dans vos settings Maven.

    Exemple A.12. Stocker un mot de passe encrypté dans les Settings Maven (~/.m2/settings.xml)

    <settings>
      <servers>
        <server>
          <id>nexus</id>
          <username>deployment</username>
          <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password>
        </server>
      </servers>
      ...
    </settings>

    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 en 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.

    Exemple A.13. Configuration de la balise relocation du mot de passe maître

    <settingsSecurity>
      <relocation>/Volumes/usb-key/settings-security.xml</relocation>
    </settingsSecurity>
    

    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.