2. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
1
Table des matières
I. Présentation de l'atelier............................................................................................... 2
II. Présentation des outils utilisés..................................................................................... 3
1. CentOS 6.6................................................................................................................. 3
2.LightHadoop................................................................................................................3
3.JDK.............................................................................................................................. 3
4.Shibboleth .................................................................................................................. 3
5.Tomcat 6..................................................................................................................... 4
6.HUE.............................................................................................................................4
III. 3. Topologie des réseaux................................................................................................... 6
IV. 4. Configuration des outils ............................................................................................... 7
V. 5. Un scénario de test .................................................................................................... 17
VI. 6. Conclusion .................................................................................................................. 19
3. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
2
I. Présentation de l'atelier :
Dans une époque de "Big Data" , les entreprises collectent , analysent et prennent des
décisions basées sur un flux énorme de données , ce qui rend la sécurité de toute
information de plus en plus importante . Mais aussi , sécuriser ne doit pas pour autant
endurcir la tâche aux employés . En effet , devoir ,à chaque tâche , introduire son login et
mot de passe devient pénible au fil du temps , surtout avec la possibilité d'oublier l'un d'eux
ou bien les deux . La meilleure solution serait une seule authentification : le Single-Sign-On.
Etant un framework dédié au traitement et l'analyse des données massives , on a procédé
sur Hadoop pour faciliter la tâche aux utilisateurs au sein d'une entreprise et leur permettre
d'accéder aux différents services suite à une seule saisie de leur login et mot de passe . Ainsi,
plus besoin de se souvenir de multiples informations non nécessaires , mais plutôt on aura
une meilleure concentration sur le travail .
4. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
3
II. Présentation des outils utilisés :
1. CentOS 6.6
CentOS (Community enterprise Operating System) est une distribution GNU/Linux destinée
aux serveurs. Utilisée par 20 % des serveurs web Linux, elle est l'une des distributions Linux
les plus populaires pour les serveurs web. Elle est le clone gratuit de la distribution Red Hat
dont le support est payant. Depuis novembre 2013, elle est la troisième distribution la plus
utilisée sur les serveurs web. Dans le monde, les communautés de CentOS et de fedora sont
très proches et CentOS rencontre de plus en plus de succès chez les professionnels
Contrairement à Ubuntu ,CentOS ne dispose pas des dernières versions des logiciels qui font
le succès de Linux auprès des utilisateurs . Cette distribution est particulièrement adaptée à
l'exécution de logiciels tels que les bases de données MySQL ,PostgreSQL, le serveur web
Apache et autres serveurs de messagerie tels que Postfix, les logiciels commerciaux Oracle et
Domino .
2. LightHadoop
LightHadoop est une machine virtuelle "légère" contenant tous les composants nécessaire
pour faire fonctionner Hadoop.
3.JDK
L'écriture des applets et des applications Java nécessite l'utilisation d'outils de
développement tel que le kit JDK(Java Development Kit). Ce dernier comprend
l'environnement JRE, le compilateur Java et les API Java. Il s'agit des outils nécessaires pour
programmer en java , tester ses programmes .
4.Shibboleth
Shibboleth est une implémentation open source, gratuite pour la gestion des identités,
fournissant un mécanisme unique de sign-on sur le Web à travers différentes frontières
organisationnelles. C’est un système fédéré, pour garantir l'accès aux ressources à travers
les domaines de sécurité.
5. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
4
Le principe de la fédération d’identités est de déléguer l’authentification web des
utilisateurs à un service d’authentification dans l’organisme d’origine de l’utilisateur. Le
protocole utilisé est SAML 2, utilisé également par d’autres solutions logicielles de ce type.
5.TOMCAT6
Apache Tomcat est un conteneur web libre de servlets et JSP Java EE. Issu du projet Jakarta,
c'est un projet principal de l’Apache Software Foundation. Il implémente les spécifications
des servlets et des JSP du Java CommunityProcess, et est paramétrable par des fichiers XML
et de propriétés, ainsi qu'il inclut des outils pour la configuration et la gestion. C’est un
serveur léger, gratuit, libre, multiplateforme et assez complet pour ce que nous allons
aborder.
Parmi ses concurrents, on trouve JBoss Application Server (ou WildFly) qui est un serveur
d'applications Java EE Libre entièrement écrit en Java, publié sous licence GNU LGPL.
6. HUE
Hue (Hadoop User Experience) offre une interface graphique Web pour les utilisateurs
Hadoop pour simplifier le processus de création, le maintien et l'exécution de nombreux
types d'emplois Hadoop. Hue est composé de plusieurs applications qui interagissent avec
des composants Hadoop, et dispose d'un SDK ouvert pour permettre de nouvelles
applications à créer. Applications incluses dans Hue :
FileBrowser: Graphical interface for browsing files stored in MapR-FS.
Beeswax: Beeswax - Create and execute Hive queries.
Impala App: Create and execute Impala queries.
Oozie App: Create, submit, and schedule Oozie workflows and bundles.
Pig App: Create and execute Pig scripts.
HBase Browser: Explore and modify HBase tables and data.
6. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
5
Table Browser: Access Hive metadata.
Search App: Query Solr and Solr Cloud.
Job Browser: View and access MapReduce jobs.
Job Designer: Create and execute MapReduce jobs.
7. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
6
III. Topologie des réseaux :
Lors d'une tentative de connexion à Hue , celui-ci réagit comme un SP (Service Provider)
avec un service consommateur d'assertion et communique avec l'IDP pour authentifier
l'utilisateur. En effet , l'assertion sert à indiquer à l'IDP si le client est déjà authentifié.
Hue fournit deux URLs pour la communication avec l'IDP
/saml2/metadata
/saml2/acs
L'IDP contacte l'URL des métadonnées pour avoir des information sur le SP. L'URL ACS est le
consommateur d'assertion de l'idP auquel sont redirigés les clients authentifiés .
La communication entre le SP et L'IdP se fait avec l'aide du protocole de sécurité SAML.
Le schéma suivant résume le déroulement de la communication.
8. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
7
IV. Configuration des outils
Installation de oracle jdk :
On configure les variables d'environnementJAVA_HOME et JRE_HOME pour qu'elles
pointent vers le répertoire d'installation
Installation et configuration de apache tomcat
On télécharge apache tomcat version 6 ou supérieur. On le décompresse dans /usr/local/src
et on le renomme en tomcat6
# cd /usr/local/src
# curl -L -O http://apache.tradebit.com/pub/tomcat/tomcat-
6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz
# tar -xvzf apache-tomcat-6.0.32.tar.gz
# mv apache-tomcat-6.0.32 tomcat6
On instancie ces variables d'environnement comme suit:
# export CATALINA_HOME=/usr/local/src/tomcat6
# export CATALINA_BASE=/usr/local/src/tomcat6
Et on configure la mémoire de la JVM .Ceci dépend généralement de la mémoire du serveur
On édite le fichier /usr/local/src/tomcat6/bin/catalina.sh en ajoutant, à la fin ,la variable
JAVA_OPTS comme suit:
Dans le fichier /usr/local/src/conf/server.xml, la valeur par défaut du paramètre
autoDeploy est égale à vrai. Ceci indique que tomcat vérifie périodiquement de nouvelles
mises à jour d'application. Si une mise à jour est trouvée, un redéploiement est exécuté. Or,
ceci n'est pas préférable. On met alors autoDeploy à faux.
On lance tomcat
TOMCAT_HOME/bin/catalina.sh start
Pour vérifier que tomcat fonctionne correctement , on teste le lien suivant dans le
navigateur http://localhost:8080
On doit voir la page suivante:
9. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
8
Ceci indique que le serveur tomcat a bien démarré.
Installation et configuration de Shibboleth
On télécharge Shibboleth version 2.4 ou supérieure à partir du site officiel de Shibboleth
# curl -O http://www.shibboleth.net/downloads/identity-
provider/2.4.0/shibboleth-identityprovider-2.4.0-bin.zip
On extrait shibboleth-identityprovider-2.4.0-bin.zip et changer les droits du script install.sh
pour qu'il soit exécutable puis on copie le dossier endorsed/ situé dans shibboleth-
identityprovider-2.4.0 dans le dossier /usr/local/src/tomcat6 et on configure la variable
JAVA_ENDORSED_DIRS
# unzip shibboleth-identityprovider-2.4.0-bin.zip
# cd shibboleth-identityprovider-2.4.0
# chmodu+x install.sh
# cp -r endorsed/ /usr/local/src/tomcat6
# export JAVA_ENDORSED_DIRS=/usr/local/src/tomcat6/endorsed
On exécute l'installeur et on poursuit tout en conservant les paramètres par défaut
# ./install.sh
Un mot de passe pour le keystore vous sera demandé. Mettez un mot de passe et notez le .
On instanciela variable d'environnement IDP_HOME comme suit:
# export IDP_HOME=/opt/shibboleth-idp
On passe ensuite à la modification du fichier .bash_profile en y ajoutant ces deux lignes :
IDP_HOME=/opt/shibboleth-idp
export IDP_HOME
10. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
9
Pendant certaines opérations , l'IdP et le SP pourront communiquer ensemble au même
moment d'envoi de message via le navigateur de l'utilisateur . Pour gérer ceci , l'IdP a besoin
d'un autre port (qu'on appelle connecteur tomcat) différent decelui utilisé par l'utilisateur .
Pour ce faire , il suffit de suivre ces étapes :
Télécharger tomcat6-dta-ssl-1.0.0.jar dans
/usr/local/src/tomcat6/lib/folder
Ajouter la définition du connecteur ci-dessous dans le fichier
/usr/local/src/conf/server.xml
(Remarque : Dans keystorePass on met le mot de passe entré lors de l'installation de
shibboleth-idp)
Créer et modifier le fichier /usr/local/src/tomcat6/conf/Catalina/localhost/idp.xml
# vi /usr/local/src/tomcat6/conf/Catalina/localhost/idp.xml
On copie ces quelques lignes dans notre nouveau fichier idp.xml
Maintenant, l'installation et la configuration basiques de l'IdP sont mises en place.
Pour tester le fonctionnement de l'IdP il faut :
Arrêter tomcat et le relancer après pour assurer le déploiement de l'IdP.war
# /usr/local/src/tomcat6/bin/catalina.sh stop
# /usr/local/src/tomcat6/bin/catalina.sh start
Ensuite, tester l'url suivantehttp://hostname:8080/idp/profile/Status
Si tout s'est bien passé , on obtient une page "ok"
11. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
10
On passe alors à l'activation de SSL pour notre IdP :
Il suffit d'exécuter ces commandes pour créer un nouveau dossier où enregistrer les
certificats .
Il vous sera demandé d'introduire un mot de passe .
# mkdir /home/yourHomeDir/idpcerts/
# keytool -genkey -alias tomcat -keyalg RSA -keystore
/home/yourHomeDir/idpcerts/idpself.keystore
Vous devez aussi indiquer à Shibboleth l'emplacement du nouveau keystore en ajoutant un
nouveau connecteur.
On copie ces lignes dans le fichier /usr/local/src/tomcat6/conf/server.xml
La variable keystoreFile correspond à l'emplacement où on a enregistré le nouveau keystore
et la variable keystorePass aura le mot de passe .
Pour tester, ouvrir ce lien :https://idp.example.org/idp/profile/Status
Si la configuration est correcte , on obtient une page "ok"
12. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
11
Dans /opt/shibboleth-idp/conf ,on configure le fichier attribute-filter.xml pour rendre l'UID
disponible. Pour cela ,on insère ce qui suit sous "<!--Release the transient ID to anyone -->":
On configure le fichier relaying-party.xml pour que Shibboleth communique avec hue:
sous:"<!-- MetadataProvider the combining other MetadataProviders -->"
Installation et configuration de Apacheds
On commence par télécharger la dernière version d'Apacheds (version binaire) depuis le site
officiel , la rendre exécutable puis l'exécuter:
# chmoda+x apacheds-2.0.0-M19-32bit.bin
# ./apacheds-2.0.0-M19-32bit.bin
On conserve avec les options par défaut
Maintenant , on exécute ApacheDS :
# /etc/init.d/apacheds-1.5.2 start
On télécharge Apache Directory Studio qu'on décompresse dans /opt en changeant son
nom.
# tar –xvzf ApacheDirectoryStudio-linux-x86-1.5.3.v20100330.tar.gz
# mv ApacheDirectoryStudio-linux-x86-1.5.3.v20100330 /opt/apachedirstudio
On change de répertoire et on exécute l 'Apache Directory Studio en suivant ces
commandes :
# cd /opt/ apachedirstudio
# ./ApacheDirectoryStudio
13. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
12
Après , on crée une nouvelle connexion LDAP en utilisant le LDAP server. Dans notre cas , il
s'agit de Apache Directory Studio.
Pour ce faire , il faut :
Aller sur File -> New -> LDAP Connection
Dans la fenêtre qui s'ouvre , on introduit le nom de la connexion, dans le champ hostname ,
on introduit le nom d'hôte sur lequel Apache Directory Server est exécuté et dans le champ
port : 10389 , et on clique Next
Dans la fenêtred'authentification , sélectionner Simple authentification en tant que méthode
d'authentification , dans le champ user , entrer uid=admin , ou=system, et dans le champ
bindpassword le mot de passe (secret).
14. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
13
Si la connexion est réussie , on doit voir le Directory Information Tree (DIT) dans le
navigateur du LDAP
Pour ajouter un nouveau utilisateur , un clic droit sur "ou=users" et on sélectionne New
entry .
Dans la fenêtre qui s'ouvre , aucun changement de paramètres n'est nécessaire . Cliquer sur
Next
15. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
14
Après avoir ajouté un mot de passe , on trouve une nouvelle entrée dans le navigateur
uid=votreUid.
On ajoute un nouveau attribut userPassword . Dans l'éditeur qui s'ouvre, on introduit un
nouveau mot de passe et puis ok .Voila un nouveau utilisateur créé.
16. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
15
Installation et configuration de Hue
Tout d'abord, on ajoute le repository de hue pour pouvoir le télécharger sous
/etc/yum.repos.d . On crée un fichier appelé cloudera et on y ajoute ce qu'y suit:
[cloudera-cdh4]
name=Cloudera's Distribution for Hadoop, Version 4
baseurl=http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/4/
gpgkey = http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-
cloudera
gpgcheck = 1
On installe maintenant Hue
#yuminstall Hue Hue-server
On installe les packagse suivants:
#yum install swig
#yum install open-ssl
On installe pip pour pouvoir installer des libraires python
#yuminstallpip
On installe djangosaml2 et pysaml2 ; des librairies qui supportent SAML
pip install pysaml2
pip install djangosaml2
On installe le package xmlsec1
#yuminstall xmlsec1 xmlsec1-openssl
17. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
16
Remarque: xmlsec1 doit être exécutable par l'utilisateur de Hue
On passe maintenant à la configuration de Hue. Le ficher de configuration est
/etc/hue/conf/hue.ini
Hue doit être configuré comme un SP et utilisé SAML Authentification Backend
#nano /etc/hue/conf/hue.ini
Sous [libsaml] on modifie les champs suivant:
xmlsec_binary=/opt/bin/xmlsec1 (c'est le chemin de xmlsec1 ceci peut varier pour connaitre
le chemin exacte on exécute la commande: which xmlsec1)
metadata_file=/tmp/metadata.xml
key_file=/tmp/key.pem
cert_file=/tmp/cert.pem
Les fichiers key_file et cert_file sont copiés à partir de /opt/shibboleth-idp/credentials et
convertis au format .pem:
#cp /opt/shibboleth-idp/credentials/idp.key /tmp/
#cp /opt/shibboleth-idp/credentials/idp.key /tmp/
#mv /tmp/idp.key /tmp/key.pem
#mv /tmp/idp.crt /tmp/cert.pem
Toujours dans hue.ini sous [[auth]] , on ajoute la ligne suivante :
backend=libsaml.backend.SAML2Backend
On relance maintenant hue
#hue service hue restart
18. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
17
V. Scénario de test :
Dans le navigateur ,on accède à hue avec le lien suivant localhost:8888 . On est redirigé
automatiquement à Shibboleth pour l'authentification:
On entre notre login et mot de passe qui appartiennent à ApacheDirectory. Si
l'authentification est réussie ,on est ramené à hue.
La redirection est visible sur la barre de lien du navigateur
19. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
18
On accède à Hue
Si l'authentification échoue, on est appelé à ressaisir le login et mot de passe:
20. Hadoop Single-Sign-On HSSO
SECURIDAY 2015BIG DATA SECURITY
19
VI. Conclusion
Dans ce tutoriel, il s'agit de mettre en place une maquette de faisabilité de Shibboleth, et
expliquer les grands principes. Chaque fois qu'un nouvel utilisateur se connecte à une
application, celle-ci le redirige vers le fédérateur d’identité, qui lui présente un formulaire
d'authentification s'il ne le reconnaît pas, puis dans tous les cas une fois l'utilisateur connu,
redirige celui-ci vers l'application, muni d'un ticket de service.
À son tour, l'application se connecte sur le serveur CAS et lui communique le ticket de
service de l'utilisateur. Le fédérateur Shibboleth renvoie alors à son tour à l'application
l'identifiant unique de l'utilisateur qui est désormais authentifié. C'est ce mécanisme qui
fonde le SSO Shibboleth, et qui permet une authentification unique quel que soit le nombre
d'applications visitées.
De plus, on a intégré le framework Hadoop dans ce système afin de garantir la sécurité des
applications dédiées au Big Data.
Donc , le SSO est une source de confort et de gain de temps pour l'utilisateur comme pour
l'administrateur, ce qu’il a fait de lui une des priorités des entreprises françaises (d’après
une étude de Pierre Audoin Consultants).
Même les grands noms de l'informatique s'y sont mis:
Google: avec un compte Gmail, on peut avoir accès aux mails, à un compte YouTube
avec la même adresse mail.
Facebook: le compte Facebook est valable aussi pour Instagram.
Par ailleurs, comme toute technologie, le SSO présente un nombre important de limites.
Tout d'abord, la compatibilité avec toutes les applications est loin d'être garantie. On a
besoin de développer, pour les applications non supportées, une interface permettant au
SSO d'authentifier automatiquement l'utilisateur, ce qui représente un travail qui n'est pas
des moindres.
Aussi l'intégration complète est difficile dans le SI. Les inconvénients de la mise en place
d´une telle solution sont avant tout les inconvénients d´une mise en conformité du SI de
l´entreprise .
Il y'a aussi la contrainte coût et lourdeur. L´affiliation d´une application à un système de SSO
à un coût non négligeable, en termes de budget mais également au niveau des accès
serveur.
Pour finir, le SSO peut également nuire à la sécurité. Il donne accès à une multitude de
ressources une fois l'utilisateur authentifié. C'est pour cette raison qu’il est préférable de
coupler les solutions de SSO, avec un système d'authentification forte. Un autre risque est
également que si le serveur d´authentification tombe, l´application de SSO tombe. Il est
donc préférable de mettre en place un serveur de secours.