Etude et mise en place d'un service cloud d'iam basé sur keycloakpar Saratou Diallo Institut Supérieur d'Informatique (ISI) Dakar - Master 2 2022 |
REPUBLIQUE DU SENEGAL Un peuple-Un but-Une foi Ministère de l'Enseignement Supérieur et de la Recherche Direction Générale de l'Enseignement Supérieur Privé Institut Supérieur d'Informatique MEMOIRE Présenté par : Saratou Diallo Pour l'obtention du diplôme de : Master Professionnel : Génie-Logiciel Parcours : Informatique Sujet : Étude et Mise en place d'un service cloud de gestion des identités et des accès basé sur keycloak Soutenu à Dakar, le Membres du jury
AVANT-PROPOSL'Institut Supérieur d'Informatique (ISI) est un groupe privé d'enseignement supérieur universitaire et professionnel avec une expérience de plus de dix ans. Il a été créé par des professionnels du secteur des technologies de l'information et de la communication. Les diplômes délivrés par cet institut sont la licence, le master et éventuellement le doctorat. Les enseignements y sont dispensés dans les filières telles que Ingénierie Logiciel, Ingénierie informatique, Ingénierie réseaux et télécom, Communication et Marketing.... Ils s'inspirent des normes recommandées par le CAMES (Conseil Africain et Malgache pour l'Enseignement Supérieur), de l'ANAQ-SUP,... Pour l'obtention du master professionnel en Génie logiciel à l'ISI, il est demandé à chaque étudiant l'élaboration d'un mémoire de fin de cycle. C'est dans cette optique que nous avons rédigé ce document qui s'intitule : Étude et Mise en place d'un service cloud de gestion des identités et des accès (IAM pour Identity and Access Management) basé sur keycloak. Le sujet est intitulé « Étude et Mise en place d'un service cloud de gestion des identités et des accès (IAM pour Identity and Access Management) basé sur keycloak ». La plateforme va nous permettre de faciliter le développement d'applications plus sûres et plus sécurisées et de profiter pleinement des avantages de l'outil keycloak. Afin d'offrir des fonctionnalités aux utilisateurs, il doit mettre à leur disposition une interface d'utilisation permettant son exploitation. Cette interface sera accessible via un service PaaS hébergé chez AWS(Amazon Web Services) . Ce document est le fruit de notre travail de recherche durant les six mois consacrés à ce projet. Des difficultés n'ont pas manqué. Elles concernent particulièrement la disponibilité de données fiables et actuelles. DEDICACES Je dédie ce mémoire A mes parents pour leur amour inestimable, leur confiance, leur soutien, leurs sacrifices et toutes les valeurs qu'ils ont su m'inculquer. A mon très cher ami Amadou Oury Diallo pour son soutien et sa présence tout au long de mon parcours universitaire. A mon maître de mémoire Monsieur Abdoulaye Ly, pour sa disponibilité, son soutien et sa patience tout au long de l'élaboration de ce mémoire. A toute ma famille ainsi qu'à mes amis. Remerciements Avant toute chose, Gloire à Allah, Créateur de toute chose, Celui qui rend le difficile facile, l'impossible possible et Qui, par Sa Grâce a permis la réalisation de ce travail. Je tiens à remercier mon directeur de mémoire Monsieur Abdoulaye Ly, professeur à l'Institut Supérieur d'Informatique ISI de Dakar, de m'avoir accueillie dans son équipe et d'avoir accepté de diriger ce travail. Sa rigueur scientifique, sa disponibilité, sa patience et son écoute ont permis à ce travail d'aboutir dans les meilleures conditions. Mes remerciements s'adressent également à l'ensemble du corps professoral de l'ISI, et à tous mes professeurs depuis la maternelle pour leur apport dans mon éducation. Qu'ils puissent trouver dans ce travail le témoignage de ma sincère gratitude et de mon profond respect. Je tiens à remercier les membres du jury d'avoir évalué ce travail. Mes remerciements les plus chaleureux vont à tous mes camarades à l'ISI pour leurs encouragements et pour l'ambiance agréable tout au long de ces rencontres de travail. Résumé La gestion des identités et des accès (IAM pour Identity and Access Management) est un moyen de gérer un ensemble donné d'identités numériques des utilisateurs, et les privilèges associés à chaque identité. Il s'agit d'un terme général qui couvre un certain nombre de produits différents qui remplissent tous la même fonction de base. Keycloak est un des nombreux outils de gestion des identités et des accès qui offre un certain nombre de fonctionnalités tel que l'authentification unique (SSO pour Single Sign On/Out) pour la gestion des identités et des accès. L'utilisation d'un outil tel que Keycloak est une première étape vers le développement de logiciels et applications plus sûrs et plus sécurisés. Cependant pour tirer de réels avantages dans l'utilisation d'un tel outil il faut une compréhension plus ou moins poussée de celui-ci, ce qui peut prendre un certain temps. Ce mémoire propose un service cloud de gestion des identités et des accès basé sur keycloak. Il met à disposition des développeurs un service mesurable auquel ils peuvent souscrire et qui leur permettra de tirer pleinement parti des avantages et des facilités qu'offre l'outil keycloak pour le développement d'applications et logiciels sécurisés. Après une étude poussée et l'utilisation de keycloak, Nous avons choisi un ensemble d'outils permettant le développement de notre plateforme. Nous avons choisi un environnement de développement windows dans lequel on utilise docker pour l'installation de keycloak, visual studio a été choisi comme éditeur de code avec le langage node.js et une base de données local mysql. La plateforme sera déployée sur un cloud PaaS (Platform as a Service) chez Amazon Web Services AWS. Abstract Identity and Access Management (IAM) is a means of managing a given set of digital user identities, and the privileges associated with each identity. It is an umbrella term that covers a number of different products that all perform the same basic function. Keycloak is one of a variety of identity and access management tools that offer a range of features such as Single Sign On/Out (SSO) for identity and access management. The use of a tool such as Keycloak is a first step towards the development of safer and more secure software and applications. However, to get real benefits from using such a tool requires a more or less advanced understanding of it, which can take some time. This project proposes a cloud service for identity and access management based on keycloak. It provides developers with a measurable service that they can subscribe to and that will allow them to take full advantage of the benefits and amenities that the keycloak tool offers for the development of secure applications and software. After a close study and the use of keycloak, we have chosen a set of tools allowing the development of our platform. We chose a windows development environment in which we use docker for the installation of keycloak, visual studio was chosen as a code editor with the node.js language and a local mysql database. The platform will be deployed on a PaaS (Platform as a Service) cloud at Amazon Web Services. Table des matières 1. Chap1: Introduction Générale 13 2. Chap2: Travaux existants 18 3. Chap 3: Solution Proposée 39 3.1. Spécification des besoins du système 39 3.3. Implémentation de la solution 65 4. Chap4: Conclusion et Perspectives 83 Figure 1 : Processus de génération d'une JWT 22 Figure 2 : Différentes parties d'une JWT 22 Figure 3 : Exemple d'une JWT 23 Figure 4 : Exemple d'un ID Token 26 Figure 5 : Illustration du fonctionnement d'OAuth2 29 Figure 6 : Diagramme de cas d'utilisation globale de l'application 44 Figure 7 : Diagramme de cas d'utilisation illustrant les actions de notre système keycloak 45 Figure 8 : Package Abonnement 45 Figure 9 : Package Activity 46 Figure 10 : Package AddUsers 46 Figure 11 : Package Application 46 Figure 12 : Package AppRequest 47 Figure 13 : Package Authentication 47 Figure 14 : Package Payment 48 Figure 15 : Diagramme de séquence Authentification 48 Figure 16 : Diagramme de séquence Payement 49 Figure 17 : Diagramme de séquence Abonnement 51 Figure 18 : Diagramme de séquence AddUsers 53 Figure 19 : Diagramme de séquence requête d'authentification 54 Figure 20 : Diagramme de séquence AddApplication 55 Figure 21 : Diagramme de classe 56 Figure 22 : Architecture 3/3 57 Figure 23 : Architecture de l'application 59 Figure 24 : Arborescence des dossiers de l'application 60 Figure 25 : Diagramme de déploiement 62 Figure 26 : Page d'accueil de l'application 70 Figure 27 : Page de connexion 70 Figure 28 :Page de connexion 70 Figure 29 : Page d'ajout d'une application étape 1 71 Figure 30 : Page d'ajout d'une application étape 2 72 Figure 31 :Page d'ajout d'une application étape 3 73 Figure 32 : Page d'ajout d'une application étape 4 74 Figure 33 : Page d'ajout d'une application récapitulatif 75 Figure 34 :Page liste des applications 76 Figure 35 : Page détails et configuration d'une application 77 Figure 36 : Installation de AWS CLI 78 Figure 37 : Configuration de AWS CLI 78 Figure 39 : Containerisation de l'application 79 Figure 40 : Résultat de la commande de containerisation 79 Figure 41 : Cluster sur eks 80 Figure 42 : Configuration de k8s dans docker 80 Figure 43 : Fichier manifest.yml 81 Figure 44 : Commande pour déployer le fichier .yml 81 Figure 45 : Résultat des commandes de vérification du déploiement. 82 Figure 46 : Base de données Amazon RDS 82 Figure 47 : Fichier yaml pour keycloak 83 Figure 48 : Résultat après déploiement de keycloak 83 Figure 49 : Vérification du déploiement de l'application 84 Table 1 : Scénario de Paiement 49 Table 2 : Scénario Abonnement 50 Table 3 : Scénario Ajout des utilisateurs 52 Table 4 : Scénario Envoie d'une requête d'authentification 54 Table 5 : Tableau comparatif des providers cloud 64 Liste des Abréviations
|
|