Étant donné que la version Data Integration de Talend manquait cruellement d’un système efficace de cryptage de variable out of the box basé sur un mot de passe, j’ai voulu créer un composant spécifique avec la librairie Jasypt. Vous verrez dans ce post comment l’installer et l’utiliser efficacement.
Introduction
Comme Jasypt à déjà été présenté et défini dans mon précédent article sur l’utilisation de jasypt avec Talend ESB, je vous invite à (re)lire mon article sur le sujet.
Petite remarque concernant la création de composants Talend: suite à la sortie de la version 7, j’en ai profité pour vérifier le bon fonctionnement de mon composant créé avec cette procédure, en effet la façon de créer un composant a été modifiée dans cette nouvelle version.
Il faut savoir qu’un éditeur était inclus dans le client Talend et portait le nom de « Talend component designer », c’était une perspective dédiée qui permettait aussi de pousser le composant directement dans la palette.
Depuis la nouvelle version, une nouvelle procédure de création via le navigateur ainsi qu’un outil dédié externe ont vu le jour.
Installation
Le composant est en libre téléchargement sur le site de l’exchange Talend ici. Décompressez l’archive et indiquez son emplacement dans les préférences de Talend (Fenêtre -> préférences -> Talend -> Composants)
Utilisation
Le composant étant un singleton, au même titre que les composants tPreJob et tPostJob, vous ne pouvez qu’en placer un seul et unique dans votre job.
Pour rappel, le principe est de crypter une variable de type caractère avec un préfixe commençant pas ENC(), ces variables étant généralement utilisées pour les mots de passe permettant d’accéder aux bases de données, serveur FTP, mail, etc…
Jasypt permet de crypter d’autres types de données mais cette fonctionnalité n’a pas été implémenté dans le composant.
Créer une variable de contexte cryptée grâce à Jasypt comme ceci:
ENC(LXpZaujCYV1jNSeN2oCohrkxZpIsDAQvbVHgL+O4fP38lsAIke+SHaQ2s0xUyEd7)
ATTENTION: Bien paramétrer le type String pour stocker les mots de passe plutôt que le type password spécifique à Talend dont le cryptage n’est pas des plus sécurisé.
Pour plus d’infos voir la procédure jasypt pour le client de cryptage.
Placer le composant sur l’environnement de travail et cliquer dessus pour le paramétrer
Le composant permet de paramétrer un mot de passe « maître » de 3 façons différentes:
- Directement dans la configuration du composant (pour tests uniquement)
- Via une variable système de la JVM (pour le cloud)
- Via une variable globale du système d’exploitation (recommandé)
Mot de passe manuel
Pour une configuration avec un mot de passe directement encodé dans la configuration du composant, choisissez l’option « Use custom jasypt password« .
Attention que celui-ci sera stocké dans une variable non cryptée cette solution est donc non recommandée et doit être uniquement utilisée à titre de test
Variable de la JVM
Pour une configuration via les paramètres de la JVM, utile par exemple pour un déploiement sur le cloud, choisissez l’option « Use JVM system properties » et définissez un nom comme JVM_SYSTEM_PROP par défaut
puis paramétrez-le dans les propriétés avancées de l’onglet d’exécution
Variable système
Pour une configuration avec un mot de passe stocké dans une variable d’environnement système, choisissez l’option « Use global system environment variables« .
Cette méthode est recommandée car seul l’administrateur de la machine sur laquelle votre job tournera sera garant de la confidentialité de ce mot de passe.
C’est cet administrateur qui devra vous communiquer vos mots de passe encrypté grâce au client Jasypt, vous devrez donc lui indiquer la procédure 😉
ATTENTION: Lorsque vous définissez une variable d’environnement système qui sera utilisée par Talend, n’oubliez pas de redémarrer complétement le client pour que celle-ci soit prise en compte.
Pour définir une variable d’environnement, utilisez une invite de commande avec des droits administrateur puis utiliser la commande:
Sous Windows
setx /M "GLOBAL_SYSTEM_ENV" "secret"
Pour vérifier après avoir relancer une nouvelle invite de commande:
Sous Linux
export jasypt_master_password=secret
Ne reste plus qu’à créer un job Talend avec par exemple un tFixedFlowInput et un tLogRow pour vous permettre d’afficher votre variable de contexte dans la console
Lancer le job et vous devriez obtenir le résultat suivant:
En cas d’impossibilité pour Jasypt de décrypter une variable de contexte cryptée, une exception gérée sera levée.
Si vous voulez remonter l’erreur (code erreur=1), cochez la case die on error
Conclusion
La librairie Jasypt étant fournie avec Talend Open Studio par défaut, il serait dommage de réinventer un système de cryptage maison. Le composant vous facilitera la mise en place d’un système de cryptage de variable de contexte sans développements supplémentaires et garantira un système de cryptage efficace et basé sur du standard.