Utilisation de Kerberos dans le Studio Talend avec Big Data v6.x
Cet article décrit comment configurer le Studio Talend afin qu'il fonctionne avec un cluster Hadoop utilisant Kerberos.
Internet est plein de risques. Les applications envoyant des mots de passe non chiffrés sont extrêmement vulnérables. Les entreprises utilisent des pare-feux mais ont tendance à penser que les "mauvaises personnes" ne sont pas dans l'entreprise, ce qui est une mauvaise manière de penser.
Kerberos est un système d'authentification créé par le MIT comme solution à ces problèmes de sécurité de réseau. Il fournit une protection mutuelle des deux côtés d'une transaction. Le protocole Kerberos utilise une cryptographie forte afin qu'un client puisse prouver son identité à un serveur (et vice versa) à travers une connexion réseau non sécurisée. Une fois qu'un client et un serveur ont utilisé Kerberos pour prouver leur identité, ils peuvent également chiffrer toutes leurs communications pour assurer la confidentialité et l'intégrité des données lors des activités de l'entreprise.
Pour plus d'informations concernant Kerberos, consultez la documentation de MIT Kerberos (en anglais).
Implémentation de Kerberos
Kerberos est mature, architecturalement sûr et répond aux besoins des systèmes distribués modernes.
Concepts
Le nom du protocole Kerberos se base sur le chien à trois têtes de la mythologie grecque, Cerbère (Kerberos en grec). Les trois têtes du protocole Kerberos comprennent :
-
le centre de distribution de clés (KDC, Key Distribution Center),
-
l'utilisateur client,
-
le serveur avec accès au service souhaité.
Le centre de distribution de clés : un centre est installé sur le réseau pour gérer la sécurité de Kerberos. Il exécute deux fonctions liées aux services : le Service d'Authentification (Authentication Service, SA) et le Service d'émission de tickets (Ticket-Granting Service, TGS).
Service d'Authentication : Un Service d'Authentification est un service accessible par le réseau s'exécutant dans le centre de distribution de clés et est utilisé pour authentifier les appelants.
Service d'émission de tickets : ce service accorde les accès aux services spécifiques.
Workflow
Le diagramme suivant illustre le workflow pour établir une session sécurisée entre le serveur et le client.
-
L’utilisateur exécute une commande kinit depuis le client pour obtenir explicitement les tickets Kerberos.
-
Une fois authentifié, l'utilisateur reçoit un ticket pour d'autre tickets (Ticket to Get Tickets, TGT), valide pour le domaine local (royaume, realm). Le ticket expire et doit être renouvelé par une reconnexion de l'utilisateur à la session, sans saisir à nouveau le mot de passe. Le Service d'authentification envoie le ticket chiffré avec une clé que seul le centre de distribution de clés peut déchiffrer et une clé de session chiffrée avec le hash du mot de passe utilisateur. L'utilisateur présente son ticket pour d'autres tickets à la partie d'émission de tickets du centre de distribution de clés, pour demander l'accès au serveur du service. Le service d'émission de tickets du centre de distribution de clés authentifie le ticket pour d'autres tickets de l'utilisateur et crée un ticket et une clé de session pour le client et le serveur distant.
-
Une fois l'utilisateur client en possession du ticket de service client/serveur, l’utilisateur peut établir la session avec le service du serveur. Le serveur peut déchiffrer les informations provenant indirectement du service d'émission de tickets à l'aide de sa clé à long terme avec le centre de distribution de clés.
-
Le ticket de service est utilisé pour authentifier l'utilisateur client et établir une session de service entre le serveur et le client. Une fois le ticket arrivé à expiration, il doit être renouvelé pour pouvoir utiliser le service.
Installation et configuration du client Kerberos
Cette section décrit comment installer Kerberos sur votre cluster et configurer les utilisateurs pour des interactions sécurisées. Dans les exemples suivants, une distribution Cloudera de Hadoop est utilisée.
Installation et configuration d'un client Kerberos sous Linux (serveur de Jobs)
Procédure
Installation et configuration d'un client Kerberos sous Windows (Studio)
Procédure
Configuration des utilisateurs de Kerberos
Procédure
Dans l'exemple suivant, un Principal pour un utilisateur Cloudera est en cours d'ajout.
Import de métadonnées Hadoop
Avant de connecter le Studio Talend au cluster Hadoop, la bonne pratique consiste à importer les métadonnées Hadoop manuellement, ou à l'aide de l'assistant.
Pour plus d'informations détaillées, consultez Gérer les métadonnées Hadoop.
Cette procédure vous explique comment importer des métadonnées Hadoop pour Cloudera à l'aide de l'assistant d'import.
Procédure
Connexion du Client (Studio/serveur de Jobs) au cluster
Les connexions à un cluster utilisant Kerberos peuvent être créées à l'aide de kinit ou keytab. Les sections suivantes décrivent comment effectuer chaque configuration et comment tester la connexion en écrivant des données dans le cluster.
Connexion au cluster à l'aide de kinit
Avec la méthode 'kinit', l'utilisateur exécutant le Job doit s'authentifier via Kerberos. Voici un exemple de configuration.
Configuration d'une connexion à l'aide de kinit
Procédure
Résultats
Les champs NameNode URI et Namenode principal sont automatiquement renseignés avec les informations de connexion.
Écriture de données dans un cluster hadoop sécurisé
Dans l'exemple suivant, le tFixedFlowInput est utilisé pour lire des enregistrements et le tHDFSOutput est utilisé pour écrire des enregistrements dans le cluster Hadoop.
Lecture de données d'entrée
Procédure
Écriture de données dans Hadoop
Procédure
Connexion au cluster à l'aide de keytab
Un fichier keytab est un fichier contenant des paires de Principaux et clés chiffrées Kerberos. Ces clés sont dérivées du mot de passe Kerberos. Vous pouvez utiliser ce fichier pour vous connecter à Kerberos sans qu'un mot de passe vous soit demandé. L'utilisation la plus courante des fichiers keytab est de permettre aux scripts l'authentification via Kerberos sans interaction humaine, ou de stocker un mot de passe dans un fichier en plein texte.
En utilisant un keytab, l'utilisateur exécutant le Job Talend ne doit pas faire de 'kinit'. De plus, selon le contenu du keytab, l'utilisateur exécutant le Job Talend peut utiliser un utilisateur différent. Pour cette raison, le keytab doit être uniquement transféré de manière sécurisée dans le système de fichiers et l'accès doit être limité aux processus nécessitant cet accès.
Voici un exemple de configuration pour générer un keytab et l'utiliser dans un Job Talend pour charger des données.
Configuration d'une connexion
Procédure
Écriture de données dans un cluster hadoop sécurisé
Dans l'exemple suivant, le tFixedFlowInput est utilisé pour lire des enregistrements et le tHDFSOutput est utilisé pour écrire des enregistrements dans le cluster Hadoop.
Lecture de données d'entrée
Procédure
Configuration de Cloudera
Cette configuration permet de créer un répertoire home pour un utilisateur kuser1 dans Hadoop HDFS. Cela est possible via l'utilisation des outils d'administration basés Web de Cloudera.
Pour plus d'informations concernant la configuration de Cloudera, consultez Mapping Kerberos Principals to Short Names (en anglais) dans la documentation de Cloudera.
Pour plus d'informations concernant le mapping de Principaux vers des utilisateurs HDFS, consultez Configuring the Mapping from Kerberos Principals to Short Names (en anglais) dans la documentation de Cloudera.