Memoire Pfe
Memoire Pfe
Memoire Pfe
MINISTERE DE LA COMMUNICATION ET DE
L’ECONOMIE NUMERIQUE
Ecole Supérieure Africaine des Technologies de Année académique 2021 – 2022
l’Information et de la Communication
M-22,KOF,189
Du 21 février 2021 au 21 aout 2021
Proposé par
KOFFI Kouassi Edy Aristide
Membres du jury
Encadrants académiques
Maître de stage
Prof. COULIBALY Adama
Professeur à l’UFR Mathématiques /Informatiques ZAPFACK Fabrice
à l’université FHB de Cocody Co-fondateur et CTO de Data354
Dr ADOU Koffi Achille
Enseignant - Chercheur à ESATIC
1
1
République de Côte d’Ivoire
MINISTERE DE LA COMMUNICATION ET DE
L’ECONOMIE NUMERIQUE
Ecole Supérieure Africaine des Technologies de Année académique 2021 – 2022
l’Information et de la Communication
M-22,KOF,189
Du 21 février 2021 au 21 aout 2021
Proposé par
KOFFI Kouassi Edy Aristide
Membres du jury
Encadrants académiques
Maître de stage
Prof. COULIBALY Adama
Professeur à l’UFR Mathématiques /Informatiques ZAPFACK Fabrice
à l’université FHB de Cocody Co-fondateur et CTO de Data354
Dr ADOU Koffi Achille
Enseignant - Chercheur à ESATIC
2
DÉDICACE
À ma très chère famille qui tout au long de ce parcours n’a cessé de me soutenir,
recevez par ces mots mon éternelle gratitude.
iii
REMERCIEMENTS
À
DANHO Jethro
DIAKITE Youssouf
DIOP Assane
DOUGBAN Monsia
DOUMBIA Al Moustapha
Mes collaborateurs à Data354 pour leur soutien
KANGAH Jaures
KIDAM Balle
KOUADIO Yasmine
TOURE Issouf
TRAORE Abdoul-Aziz
iv
SOMMAIRE
INTRODUCTION
PARTIE I : GÉNÉRALITÉS
CONCLUSION
v
LISTE DES SIGLES ET ABREVIATIONS
AC Autorité de Certification
ACME Automated Certificate Management Environement
ALPN Application-Layer Protocol Negotiation
API Application Programing Interface
ARTCI Autorité de Régulation des Télécommunications de Côte d’Ivoire
Commission d’Accès à l’Information d’intérêts Public et aux
CAIDP
Documents Publics
CEO Chief Executif Officer
CICG Centre d’Information et de Communication Gouvernementale
CIS Center for Internet Security
CKA Certification Kubernetes Administrator
CKAD Certification Kubernetes Application Developper
CKS Certification Kubernetes Security
CNCF Cloud Native Computing Foundation
CTO Chief Technical Officer
CVE Common Vulnerabilities and Exposures
DNS Domain Name System
FAIR Findable Accessible Interoperable Reusable
FIPS Federal Information Processing Standard
HTTP HyperText Transfer Protocol
IDS Intrusion Detection System
JSON JavaScript Object Notation
KCNA Kubernetes and Cloud Native Associate
LDAP Lightweight Directory Access Protocol
LUKS Linux Unified Key Setup
OGP Open Government Partnership
PDB Pods Disruption Budget
RGPD Règlement Général sur la Protection des Données
vi
RPA Robotic Process Automation
TLS Transport Layer Security
SSH Secure SHell
SSL Secure Socket Layer
SSO Single Sign-On
UFHB Université Félix-Houphouët-Boigny
UFR Unité de Formation et de Recherche
VM Virtual Machine
vii
LISTE DES FIGURES
viii
LISTE DES TABLEAUX
ix
INTRODUCTION
Les données ouvertes (open data) sont des informations numériques, qu'elles
soient d'origine privée ou publique, librement accessibles et utilisables par les usagers.
Elles sont créées généralement par des collectivités ou des institutions publiques et
proposées sous des licences dites libres d'exportation, de distribution, de modification
et de commercialisation. Le terme « open data » est apparu pour la première fois en
1995 dans une publication scientifique du National Research Council des États-Unis
des intitulée « On the Complete and Open Exchange of Scientific Data », avant d'être
adopté et formalisé par les états européens. Depuis, le concept représente une véritable
opportunité de croissance pour les entreprises qui l'utilisent pour rendre leurs études
de marché plus efficaces.
A l'instar des pays occidentaux, la Côte d'Ivoire n'est pas en marge de cette
révolution numérique. Son aventure avec l’open data débute en 2014 à l'initiative du
Centre d'information et de communication gouvernementales (CICG) et se poursuit
aujourd'hui. Le but, étant d’améliorer et de garantir l’égalité d’accès aux données
publiques à l’ensemble des partenaires techniques et financiers, au secteur privé, à la
société civile et aux citoyens. Dès lors, la Côte d’Ivoire est dotée d’une plateforme
open data hébergée et managée par une entreprise à l’étranger. Cependant pour des
raisons de souveraineté et de sécurité il est important que la plateforme Open Data du
gouvernement ivoirien et toutes ses données soient migrées vers les serveurs du
gouvernement. Cependant la mise en place d’une solution open data locale
s'accompagne de responsabilités politiques, sociales, juridiques, économiques et
surtout techniques. Les enjeux techniques sont plus importants et nécessitent une
attention particulière, car cette solution peut impliquer des applications complexes et
de pointe. L’objectif de cette étude serait donc de mettre en place une architecture
hautement en vue de déployer et maintenir la plateforme open data du gouvernement
ivoirien sur ces propres centres de données. Cela nous amène donc à explorer le sujet :
“Conception et mise en place d'une architecture hautement disponible pour le
déploiement de la plateforme open data du gouvernement ivoirien”. A travers
cette étude, nous visons à déployer et maintenir une plateforme de données ouvertes
1
en Côte d'Ivoire dans des centres de données du gouvernement, en tenant compte des
besoins de cette plateforme.
Ainsi dit, comment mettre en place une architecture technique adéquate pour
le déploiement de la plateforme open data ivoirienne ? Quelle architecture
fonctionnelle présente cette plateforme et quelles en sont les exigences en termes de
ressources et dispositions techniques ? Quelles méthodes et outils de déploiement
répondent le mieux aux exigences d'un tel système ?
Il s’agira donc de mettre en place un système basé sur une architecture hautement
disponible tout en respectant les aspects de sécurité, de fiabilité et de disponibilité.
2
PARTIE I : GÉNÉRALITÉS
3
Cette partie décrit tous les aspects généraux liés à notre environnement de travail,
depuis la structure d'accueil jusqu’aux méthodes et outils utilisés en entreprise.
Consacré à la compréhension du sujet elle abordera aussi la généralité sur l’open data
et les avancés de cette initiative en Côte d’Ivoire.
Présentation générale
Data354 est une société de conseil en technologie pour les produits et services
dans le domaine de l'ingénierie et de l'analyse des données. La société accompagne les
acteurs des secteurs publics et privés dans le développement de solutions de gestion
de données et d'analyse prédictive. Fondée en 2020 par une équipe expérimentée,
interdisciplinaire, cette entreprise a une vision très précise : “Mettre en place des outils
d'analyse et de prévision de pointe au service des organisations opérant en Afrique”.
Pour ce faire, elle assiste ses partenaires tout au long de leur processus de
transformation des données grâce à son expertise technique et à ses capacités de
conseil en stratégie et en gestion.
Domaines de compétences
4
Les services proposés par l’entreprise sont regroupés en trois grands groupes :
Equipes
1
Data catalog : Un Data Catalog est un emplacement centralisé où sont regroupées les informations sur les données contenues
dans une base de données : les métadonnées.
2
RPA : La RPA, ou Robotic Process Automation, est une technologie permettant d’automatiser des processus métier qui
nécessitent, jusque-là, l’intervention d’un humain. C’est -à-dire traiter des tâches répétitives et chronophages grâce à l’utilisation
de logiciels d’intelligence artificielle capables d’imiter un travailleur humain.
5
3.1. Equipe dirigeante
6
II. MÉTHODES ET OUTILS DE TRAVAIL
SCRUM
Open source
DevOps
- la vitesse de développement ;
- la livraison rapide des applications et services ;
- la fiabilité du processus ;
- la mise à l’échelle.
7
CHAPITRE 2 : PRÉSENTATION DU PROJET
Généralités
8
Pour être considérées comme ouvertes, les données doivent satisfaire aux huit critères
adoptés en vertu des principes des données ouvertes. Les données libres doivent être :
En Côte d’Ivoire, la protection des données à caractère personnel est régie par
l’ARTCI selon la loi 2013-450 sur la protection des données personnelles pour
répondre aux exigences de la transformation numérique.
3
privacy by design: Le principe de “privacy by design” est un principe instauré par le Règlement Général sur la
Protection des Données (RGPD). Il permet une protection optimale des données personnelles dès la conception
et lors de chaque usage d’une nouvelle technologie. Ainsi, à ce principe, la protection des données personnelles
n’est plus une option pour les entreprises mais une obligation inhérente à chacune de ses activités.
9
Enjeux
L’Open Data est l'un des principaux enjeux numériques dans le monde. Il
favorise l'innovation grâce à l'élimination des obstacles à l'accessibilité, à l'utilisation
et à la distribution de la donnée.
L’open data s’avère aussi très utile lors de la gestion de crises humanitaires.
L’accès aux données géographiques, statistiques, sanitaires et environnementales est
très important pour l’aide à la prise de décision. Cet accès a permis, par exemple,
d’aider des personnes et des organismes lors de la crise humanitaire d’Haïti. Ces
informations avaient permis de cibler les approvisionnements dans les zones les plus
atteintes.
10
II. L’OPEN DATA EN CÔTE D’IVOIRE
L’initiative du gouvernement
L'Initiative Open Data Côte d'Ivoire a été lancée depuis 2014 par le CICG. Elle
vise à encourager et permettre aux organismes publics de diffuser de manière
spontanée et structurée des documents et données publiques à partir d’une plateforme
dynamique et interactive, consultable par tout citoyen en quête d’information dite du
domaine public. Ce projet de plateforme nationale « data.gouv.ci » est la traduction
technique des engagements pris par le Premier Ministre dans le cadre du Plan d’Action
de la Côte d’Ivoire dans « Open Government Partnership-OGP », Organisation
Internationale dont la Côte d’Ivoire est membre depuis 2015.
Depuis 2021, la mise en œuvre du projet a été confiée à data 354, qui a opté
pour une solution open source qu’on détaillera plus bas. Jusqu'à présent, le
gouvernement de Côte d'Ivoire dispose d'une plateforme de données ouvertes et d'un
portail de publication et de visualisation de données disponibles sur le lien
https://data.gouv.ci, tous deux hébergés sur un cloud public par une entreprise
étrangère.
11
III. PRESENTATION ET ORGANISATION DU PROJET
Contexte et justification
Objectifs
Afin d’atteindre notre objectif général nous nous sommes fixé des objectifs
spécifiques, qui sont :
12
Contraintes
3.1.1. Serveurs
L’application ainsi que ses bases de données devront être installées sur des
serveurs physiques ou virtuels. Ces serveurs devront provenir des centres de données
du gouvernement ivoirien et si possible de localités différentes.
3.1.2. Clients
Le système doit être accessible via plusieurs types d’appareils tels que les PC
portables, les PC fixes, les « Clients légers » et les tablettes électroniques. Il devra
aussi être supporté par les systèmes d’exploitation tels que Windows et UNIX/linux.
L’utilisation de la plateforme open data est divisée en deux parties. D’un côté
les institutions étatiques, les entreprises publiques qui ont pour rôle de rendre
disponible les données, et de l'autre l'ensemble des citoyens, entreprises et startups,
enseignants, étudiants, chercheurs et particuliers qui utilisent les données soit pour des
besoins personnels soit pour en produire une valeur commerciale.
3.2.2. Livrables
13
Planning d’exécution
Architecture technique et
10 Semaines Conception du système
technologies appropriées
Estimation financière
Cette partie sur les généralités nous a été utile pour mieux comprendre le projet dans
son contexte général et nous permet d’aborder avec plus de sérénité la prochaine partie
consacrée à l’analyse conceptuelle et technique.
14
PARTIE II : ANALYSE CONCEPTUELLE ET
TECHNIQUE
15
Cette partie décrit les points techniques de la solution adoptée par le Gouvernement de
Côte d'Ivoire. Elle examine de plus près son architecture, ses composants et ses
opérations pour en déduire les besoins et les exigences concernant les ressources et les
dispositions architecturales à adopter.
DATA
Data Fair est un écosystème open source permettant de mettre en œuvre une
plateforme de partage de données (interne ou public) et de visualisations. Cette
plateforme peut être à destination du grand public, qui peut accéder aux données au
travers de visualisations interactives adaptées, ou d’un public plus expert qui peut
accéder aux données au travers des APIs.
Fonctionnement général
Les jeux de données sont en général créés par les utilisateurs en chargeant des
fichiers tabulaires ou géographiques : le service stocke le fichier, l'analyse et déduit un
schéma de données. Les données sont ensuite indexées suivant ce schéma et peuvent
être interrogées au travers d'une API Web.
16
En complément des jeux de données basés sur les fichiers, Data Fair permet également
de créer des jeux de données éditables par formulaire et des jeux de données virtuels
qui sont des vues configurables d'un ou plusieurs jeux de données.
L'utilisateur peut sémantiser les champs des jeux de données en leur attribuant
des concepts, par exemple en déterminant qu'une colonne contenant des données sur 5
chiffres est un champ de type Code Postal. Cette sémantisation permet 2 choses : les
données peuvent être enrichies à partir de données de référence ou elles même devenir
données de référence pour en enrichir d'autres, et les données peuvent être utilisées
dans des visualisations adaptées à leurs concepts.
Principaux atouts
Data Fair permet de mettre en place une organisation centrée autour de la donnée grâce
à ces principaux atouts :
4
Le crowd sourcing est une pratique consistant à obtenir des informations ou des contributions à une
tâche ou un projet en faisant appel aux services d'un grand nombre de personnes, rémunérées ou non,
généralement via l'internet.
17
II. ARCHITECTURE APPLICATIVE ET COMPOSANTS
18
Composants
5
OAuth 2.0 est un protocole qui permet à un utilisateur d'accorder à un site web ou à une application
tierce l'accès à ses ressources protégées, sans nécessairement révéler ses informations d'identification à
long terme ou même son identité.
19
2.3. Data Fair Portal
Data Fair Portal permet de réaliser des portails de données, publics ou privés.
Une organisation peut avoir plusieurs portails, et il sera bientôt possible de réaliser des
portails multi-organisations. Chaque portail peut être publié sur un nom de domaine
différent, Data Fair Portal agît à la manière d'un reverse proxy pour que chaque requête
HTTP soit traitée dans le contexte du portail auquel elle fait référence.
2.6. Notify
2.7. Analytics
- à l'aide d'un service en ligne externe à la plateforme, tel que Google Analytics
- avec un service Analytics déployé sur la même infrastructure que Data Fair
20
2.8. Capture
2.9. Thumbor
2.10. Backup
Les logs d'accès aux API sont publiés sur Data Fair sous la forme d'un jeu de données
qui peut ensuite être exposé partiellement à des organisations en leur proposant les
données filtrées les concernant.
6
MongoDB est un programme de base de données orienté documents, multiplateforme et disponible
sous forme de source. Classé comme un programme de base de données NoSQL, MongoDB utilise des
documents de type JSON avec des schémas optionnels.
7
Nginx est un serveur web qui peut également être utilisé comme proxy inverse, équilibreur de charge,
proxy de messagerie et cache HTTP.
21
III. EXIGENCES FONCTIONNELLES ET NON
FONCTIONNELLES
Exigences fonctionnelles
1.1. La sécurité
Cette exigence décrit l’aspect sécuritaire que nous devons adopter dans la mise
en place ce notre système. La sécurité demeure une des exigences fonctionnelles
majeures, le système étant à la base un système d'exposition des données. Aussi, le
nombre important de services à déployer nous poussent à apporter un regard très
particulier à l’aspect de la sécurité, surtout au niveau de la communication entre ces
différents services. Pour notre système, chaque communication entre les services devra
être chiffrée et accessible qu’au ayant droit. Nous devons faire très attention aux
données publiées et à leur confidentialité, elles doivent respecter les règles et normes
en vigueur sur le territoire de leur publication ou selon l'organisation qui les publie.
1.2. L’interopérabilité
1.3. La conformité
22
Exigences non fonctionnelles
Une exigence non-fonctionnelle est une exigence qui caractérise une propriété
(qualité) désirée du système telle que sa performance, son adaptabilité, sa portabilité,
sa maintenabilité.
2.1. La performance
Compte tenu des nombreux services que la plateforme doit offrir pour
fonctionner, l'un des critères les plus importants du système est la performance. Par
conséquent, le système doit être suffisamment efficace en termes de ressources et de
capacité de stockage pour prendre en charge tous les modules à déployer.
2.2. L’adaptabilité
2.3. La portabilité
2.4. La maintenabilité
Les exigences ci-dessus nous aideront à guider de meilleures décisions sur les
méthodes et les outils à utiliser au fur et à mesure que la recherche progresse.
23
CHAPITRE IV : CONCEPTS ET TYPES
D’ARCHITECTURES TECHNIQUES
I. CONCEPTS
La haute disponibilité
La mise à l’échelle verticale consiste à augmenter les capacités (RAM, CPU) d’une
même machine alors que la mise à l’échelle horizontale augmente le nombre de
ressources.
24
1.2. La résilience
Un système est tolérant aux pannes s'il peut continuer à fonctionner malgré la
défaillance de certains composants. Ceci nous permet de renforcer la robustesse de
notre infrastructure. Dans le cas des serveurs de déploiement de système d'exploitation,
le système dans son ensemble est tolérant aux pannes si les serveurs de déploiement
de système d'exploitation font office de machines de secours les unes pour les autres.
Lorsqu'un serveur tombe en panne, les autres serveurs gèrent ses requêtes. [7]
25
La conteneurisation
26
Orchestrateurs de conteneurs
Intégré à Docker Engine depuis sa version 1.12 (2016), Docker Swarm est
l’outil d’orchestration natif de Docker qui permet de gérer une multitude de conteneurs
déployés sur une machine hôte. Il offre une haute disponibilité aux applications à
travers ces nombreux nœuds “workers” gérés par un nœud maître. [8]
Docker swarm est très efficace dans la gestion des ressources pour les conteneurs.
3.2. Kubernetes
27
II. ETUDE ARCHITECTURALE
1.1. Architecture
1.2. Composants
Les composants Master peuvent être exécutés sur n'importe quelle machine du cluster.
Toutefois, par souci de simplicité, les scripts de mise en route démarrent typiquement
tous les composants master sur la même machine et ne s'exécutent pas de conteneurs
utilisateur sur cette machine. Les différents composants du control plane sont :
28
- kube-scheduler : composant qui surveille les pods nouvellement créés qui ne
sont pas assignés à un nœud et sélectionne un nœud sur lequel ils vont
s'exécuter. Les facteurs pris en compte pour les décisions de planification
(scheduling) comprennent les exigences individuelles et collectives en
ressources, les contraintes matérielles/logicielles/politiques, les spécifications
d'affinité et d'anti-affinité, la localité des données, les interférences entre
charges de travail et les dates limites.
- Kube-Controller-manager : composant qui exécute les contrôleurs.
- node controller : responsable de détecter et apporter une réponse
lorsqu'un nœud tombe en panne ;
- replication controller : responsable de maintenir le bon nombre de
pods pour chaque objet ReplicationController dans le système ;
- endpoints controller : remplit les objets Endpoints (c'est-à-dire joint
les Services et Pods) ;
- service account & token controllers : créent des comptes par défaut
et des jetons d'accès à l'API pour les nouveaux namespaces.
Les workers sont des nœuds qui sont chargés d'exécuter les applications dans des pods.
Ils sont composés de:
- kubelet : agent qui s'exécute sur chaque nœud du cluster et s'assure que les
conteneurs fonctionnent dans un pod ;
- kube-proxy : proxy réseau qui s'exécute sur chaque nœud du cluster et
maintient les règles réseau sur les nœuds ;
- container runtime : logiciel responsable de l'exécution des conteneurs.
29
1.3. Concepts
Les contrôleurs sont des abstractions de niveau supérieur qui s'appuient sur les
objets de base et fournissent des fonctionnalités supplémentaires. Les principaux
contrôleurs en Kubernetes sont :
- deploiement : un déploiement fournit des mises à jour déclaratives pour les
Pods et les ReplicaSets ;
- replicatSet : l'objectif d'un ReplicaSet est de maintenir un ensemble stable de
répliques de pods en fonctionnement à tout moment ;
- statefulSet : le StatefulSet est l'objet de l'API de charge de travail utilisé pour
gérer les applications avec état. Il gère le déploiement et la mise à l'échelle d'un
ensemble de pods, et fournit des garanties sur l'ordre et l'unicité de ces pods.
- daemonSet : un DaemonSet garantit que tous les nœuds (ou certains)
exécutent une copie d'un Pod. Lorsque des nœuds sont ajoutés au cluster, des
pods leur sont ajoutés. Lorsque des nœuds sont retirés du cluster, ces pods sont
mis au rebut ;
- jobs : un Job crée un ou plusieurs Pods et continue à essayer l'exécution des
Pods jusqu'à ce qu'un nombre spécifié d'entre eux se termine avec succès ;
- cronJobs : une CronJob crée des Jobs selon un calendrier répétitif. Il exécute
un Job périodiquement selon un calendrier donné, écrit au format Cron.
30
1.3.3. Les services
1.3.4. Configuration
1.3.4.2. Secrets
Un secret est un objet qui contient une petite quantité de données sensibles,
comme un mot de passe, un jeton ou une clé. Ces informations pourraient autrement
être placées dans une spécification de Pod ou dans une image de conteneur.
1.3.5. Stockage
Les PV sont fournis par des fournisseurs de stockage qui doivent être installés au
préalable.
31
1.4. Distributions
1.4.1. Kubeadm
Avantages Inconvénients
Méthode d'installation officielle Toujours en version bêta
Installation sans effort L'installation HA nécessite le
développement d'un fichier manifeste
Peut être utilisé en mode cloud ou bare- Installation de bas niveau
metal
1.4.2. Kubespray
Kubespray est un Framework pour installer et gérer les services systemd et les
pods statiques. Il utilise Kubeadm en arrière-plan. En général, kubespray est géré par
des playbooks ansibles. Il existe également un module Terraform.
Avantages Inconvénients
Installation déclarative avec variables et L'installation très longue (plus de 30
inventaire minutes)
Disponible pour les installations sur Nécessite beaucoup de prérequis
site, sur métal et dans le cloud. matériels et logiciels.
Personnalisation facile avec Ansible
Prise en charge des modules
complémentaires Kubernetes
personnalisés.
Il dispose de modules terraform pour les
environnements AWS et OpenStack.
32
1.4.3. Ranger
Rancher est une pile logicielle complète pour les équipes qui adoptent les
conteneurs. Elle répond aux défis opérationnels et de sécurité liés à la gestion de
plusieurs clusters Kubernetes, tout en fournissant aux équipes DevOps des outils
intégrés pour l'exécution des charges de travail conteneurisées. [11]
33
1.4.3.1. K3S
K3s est une distribution conçue pour les applications IoT et edge. Elle supprime
de nombreuses fonctionnalités/plugins obsolètes et remplace les composants
Kubernetes par des alternatives légères pour atteindre des tailles binaires allant jusqu'à
60 Mo. Par exemple, K3S utilise sqlite plutôt que etcd. K3S est recommandé pour les
installations locales, en dev, test ou statging. [12]
Avantages Inconvénients
faibles besoins en ressources et faible Nécessite un développement pour une
coût. charge importante.
C'est une option parfaite pour les
installations locales.
1.4.3.2. RKE
RKE est un nouvel outil de Rancher qui permet d'installer et de gérer des
composants Kubernetes sous forme de conteneurs docker ou de clusters Kubernetes.
RKE peut être exécuté dans le cloud ou sur site.
Avantages Inconvénients
Installation facile Nouvelle solution pour les installations
et la gestion de kubernetes
Approche déclarative, un seul YAML
Automatisation facile
Peut être utilisé sur le cloud ou le bare-
metal
Bien documenté
Solution de backup pour etcd
34
1.4.3.3. RKE2
- fournit des valeurs par défaut et des options de configuration qui permettent
aux clusters de passer le CIS Kubernetes Benchmark v1.6 avec une
intervention minimale de l'opérateur ;
- permet la conformité à la norme FIPS 140-2 ;
- analyse régulièrement les composants pour détecter les CVE à l'aide de Trivy
dans notre pipeline de construction.
RKE2 combine le meilleur des deux mondes à partir de la version 1.x de RKE (ci-
après dénommé RKE1) et K3s.
De RKE1, il hérite d'un alignement étroit avec Kubernetes en amont. Par endroits, K3s
s'est écarté de Kubernetes amont afin d'optimiser les déploiements en périphérie, mais
RKE1 et RKE2 peuvent rester étroitement alignés sur l'amont.
Il est important de noter que RKE2 ne s'appuie pas sur Docker comme le fait RKE1.
Il lance les composants du plan de contrôle en tant que pods statiques, gérés par le
kubelet. Le moteur d'exécution de conteneur intégré est containerd.
Dans le choix d’une distribution nous recherchons une solution mature, complète et
qui respecte les exigences de sécurité et conformité citées plus haut. Kubespray et
Kubeadm sont assez bas niveau et ne fournissent pas d’outils pour de la gestion facile
du cluster. Quant à K3S ; il est plus adapté pour les environnements de développement
et de tests. RKE 2 sera donc notre choix de distribution kubernetes, car il réunit tous
les outils nécessaires pour la mise en place d’un cluster Kubernetes en production et
respecte les exigences telles que la sécurité et la conformité.
35
Facteurs clés à considérer dans la mise en place du système
2.1. La sécurité
La sécurité est le premier facteur qui retient notre attention dans la mise en
place d’un tel système. Le système étant constitué de plusieurs modules qui
communiquent entre eux, cela favorise plus d'interactions et donc une multitude de
trafics qui doivent être surveillés avec précaution afin de s’assurer qu’aucune donnée
n’est compromise durant son transfert et même pendant son stockage. Dans le domaine
de la sécurité informatique, l’une des meilleures pratiques recommandées par les
experts et même étudiée en cours est l’application de la défense en profondeur. Il s’agit
d’une approche multicouche qui consiste à protéger un système à plusieurs niveaux
superposés.
Dans notre contexte, étant donné que nous travaillons avec un cluster, nous pouvons
appliquer une couche de sécurité dédiée à celui-ci, c'est-à-dire la sécurité du cluster.
Cette couche pourrait se situer entre celle de l'hôte et celle de l’application. Chaque
niveau ou couche de sécurité engage des responsabilités propres qui peuvent différer
d'acteurs, de procédures et d'outils.
36
Dans notre étude nous nous intéresserons plus précisément aux couches de sécurité qui
incombent notre responsabilité, c'est-à-dire la sécurité des machines, du cluster, des
applications et des données.
Secure Socket Shell est un protocole sécurisé qui connecte un client à un compte
administrateur (compte shell) sur un système serveur, généralement dans le but
d'effectuer des tâches d'administration système [13].
Contrairement à son conquérant Telnet, SSH utilise le cryptage pour empêcher les
attaques "man-in-the-middle".
37
2.1.1.2. Intégration de bastion
Un hôte bastion est utilisé pour isoler les activités privées des attaques extérieures
tout en fournissant des services accessibles de l'extérieur. Dans ce cadre, nous
l'utilisons pour nous connecter aux différentes machines du cluster et conserver les
données sensibles échangées entre elles.
Par défaut, Kubernetes nécessite l'ouverture de certains ports pour les services de
type NodePort. Cependant, pour des raisons de sécurité, nous évitons d'utiliser ce type
de service et n'autorisons que le port 80 pour accéder à ces services. Cela nécessite la
mise en œuvre d'une ressource d'entrée dans le but de rediriger les demandes entrantes
vers le service approprié.
38
2.1.2. Sécurité du cluster
Une politique de sécurité des pods est une ressource de niveau cluster qui contrôle
les aspects sensibles de la sécurité de la spécification des pods. Les objets
“PodSecurityPolicy” définissent un ensemble de conditions qu'un pod doit respecter
pour être accepté dans le système, ainsi que des valeurs par défaut pour les champs
associés. Nous l’utiliserons dans notre contexte pour définir un modèle à suivre pour
l’installation de toutes les applications de notre cluster. Les pods qui ne respecteront
pas ce schéma ne pourront être installés sur le cluster.
Un compte de service (ServiceAccount) fournit une identité pour les processus qui
s'exécutent dans un Pod. À cette identité peut être lié des rôles et permissions afin de
restreindre ses actions dans le cluster. Dans notre contexte, nous les utilisons pour
restreindre les droits d’administration à certains pods de l’application car par défaut ils
en disposent tous. [14]
39
2.1.2.4. Contrôle d'accès basé sur les rôles
“ClusterRole”, en revanche, est une ressource sans espace de noms. Les ressources ont
des noms différents (“Role” et “ClusterRole”) parce qu'un objet Kubernetes doit
toujours être soit namespaced soit non namespaced ; il ne peut pas être les deux.
Les ClusterRoles ont plusieurs usages. Nous pouvons les utiliser pour :
- définir des autorisations sur des ressources à espace de noms et se voir accorder
un accès au sein d'un ou de plusieurs espaces de noms individuels ;
- définir des autorisations sur des ressources d'espace de noms et obtenir l'accès
à travers tous les espaces de noms ;
- définir des permissions sur des ressources à l'échelle du cluster.
40
2.1.3. Sécurité des applications
8
L’Homme du milieu ou encore Man in the Middle est une pratique couramment utilisée par les pirates
informatiques dans le but d’intercepter les informations pendant les échanges entre deux ou plusieurs nœuds.
41
2.1.3.1.1. Les autorités de certifications
Pour ce faire nous utiliserons un AC open source, gratuit et reconnu par les
navigateurs web, letsEncrypt. Afin d’obtenir un certificat pour le domaine de notre
application auprès de Let’s Encrypt, nous devons apporter la preuve que nous avons
le contrôle du domaine. Avec Let’s Encrypt, cela est possible en utilisant un logiciel
qui utilise le protocole ACME qui fonctionne généralement sur les hôtes web.
Les challenges ACME sont des tests qui permettent aux autorités de
certification de vérifier que nous sommes bien propriétaire de notre nom de domaine.
Le challenge que nous avons choisi de relever doit être rempli afin que nous recevions
les certificats de votre domaine à installer sur votre serveur.
42
➢ Le challenge HTTP (HTTP 01)
43
2.1.3.2. La restriction de domaine
La restriction de domaine est une technique qui permet de limiter les domaines
autorisés à interagir avec notre application. Cela réduit les angles d’attaques car pour
attaquer, il faudrait utiliser une application de notre système hébergée sur un nom de
domaine que nous avons autorisé. Dans notre cas, sa mise en place nécessite d'héberger
tous les services de data-fair à partir d’un même domaine et d’utiliser un proxy pour
rediriger les requêtes vers le service concerné en fonction du chemin de ladite requête.
Nous illustrons le principe à travers la figure suivante.
Dans cette illustration la requête sera redirigée vers le service Thumbor et toute requête
provenant d’un domaine autre que datafair.data354.com n’aura aucune suite.
44
Figure 15: Utilisation de pare-feu applicatif (source : https://www.nginx.com)
Un pare-feu applicatif peut être actif ou passif. Les pare-feux applicatifs actifs
inspectent activement toutes les requêtes entrantes, y compris le message effectif
échangé, pour détecter toute vulnérabilité connue comme des injections SQL, des
altérations de paramètres ou de cookies, et des scripts intersites9. Seules les requêtes
considérées « propres » sont passées à l’application.
9
Scripts intersites : Les scripts intersites (XSS ou CSS) sont une forme d’attaque d’application Web, utilisée pour
accéder à des informations privées en fournissant du code malveillant aux utilisateurs finaux via des sites Web de
confiance.
45
2.1.4. Sécurité des données
2.2.1. Description
10
dm crypt: dm-crypt est un sous-système transparent de chiffrement de disques dans le noyau Linux versions
2.6 et supérieur.
11
cryptsetup: cryptsetup est un utilitaire disponible sur les systèmes linux qui permet de chiffrer des partitions de
disque.
46
2.2.2. Monitoring de cluster
Le monitoring de cluster consiste à collecter toutes les données sur les nœuds
qui composent le cluster telles que les charges de travail en cours d'exécution, en
attentes ou en échec, les ressources (Mémoire disques, mémoire RAM et CPU)
utilisées et/ou restantes, le but étant de surveiller l'état de santé du cluster. Ce type de
monitoring est important car combiné aux alertes permet aux équipes de réagir
rapidement en cas de défaillance d'un nœud. Il est géré entièrement par
l’administrateur du cluster.
Le monitoring d'applications est plus axé sur le métier, c'est-à-dire les données
liées aux fonctions de l’application. Ce type de monitoring est de la responsabilité du
développeur de l’application.
2.2.4. Prometheus
47
Figure 16: Architecture Prometheus (source: https://prometheus.io/)
48
2.3. Sauvegarde et restauration
Dans notre cas de figure, la plateforme ayant été hébergée et gérée par une
entreprise étrangère, a engendré plusieurs données importantes qui doivent être
migrées dans les centres de données du gouvernement ivoirien. Notre tâche concernant
cette migration des données se fera en collaboration avec l’entreprise qui héberge
actuellement la plateforme. Cependant notre système doit être capable de les exploiter
ou de les convertir dans le même but.
49
2.5. Tests
2.6. Automatisation
L’automatisation est l’un des facteurs les plus importants, surtout quand on a à
sa charge un système complexe composé de plusieurs nœuds. Il existe plusieurs
niveaux d’automatisation en fonction de nos attentes.
50
Proposition finale du système
3.1. Architecture
A la fin de notre étude, nous obtenons un système distribué sur trois serveurs d’un
cluster administrer par Kubernetes. Pour notre environnement de test nous
travaillerons avec trois machines virtuelles dont les capacités sont :
- 2 vCPU ;
- 60 Gi de disque SSD & 8 Gi de RAM ;
- système d’exploitation Debian 11.
Les serveurs externes seront des ressources cloud.
3.2. Caractéristiques
51
PARTIE III : REALISATION, RESULTATS
ET DISCUSSION
52
Cette partie est divisé en niveaux de code et de configuration qui retracent
chronologiquement l’implémentation des méthodes et outils choisis lors de la phase
conceptuelle. Il s’agira aussi de présenter les résultats de notre étude et de les
confronter.
TECHNIQUE
I. PRÉPARATION DE L’ENVIRONNEMENT DE
DÉPLOIEMENT
sudo -s
curl -sfL https://get.rke2.io | sh -
systemctl enable rke2-server.service
systemctl start rke2-server.service
journalctl -u rke2-server -f
sudo -s
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
systemctl enable rke2-agent.service
mkdir -p /etc/rancher/rke2/
nano -m /etc/rancher/rke2/config.yaml
53
1.3. Installation de Rancher dans le cluster
54
Déploiement de data fair
Les chartes Helm sont des packages de ressources Kubernetes qui permettent
de les regrouper ainsi que leurs configurations dans le but d’automatiser et
d’harmoniser le déploiement de plusieurs composants en un seul temps. Dans notre
cadre nous avons créé une charte Helm qui a permis de déployer tous les composants
de data fair. Par la suite nous l’avons signé puis déployé sur artifacthub, la plateforme
publique d’hébergement des chartes Helms.
L’exécution de ces commandes permet d’installer data fair et toutes ses composantes
dans notre cluster Kubernetes.
55
CHAPITRE 6 : RESULTAT ET DISCUSSION
I. RÉSULTATS
Il s’agit sur ces images des interfaces d’administration du cluster Kubernetes. Elles
nous permettent de gérer les différentes charges de travail et d’avoir des métriques
élémentaires sur l’état de notre cluster.
56
Présentation de la plateforme open data
Les interfaces ci-dessus représentent le back office de la solution Open Data Data-Fair.
Ces interfaces sont utilisées pour l’administration de la plateforme et la création des
portails de publication de données.
57
Présentation du portail open data ivoirien
Figure 24: Jeux de données consultés sur le portail open data ivoirien
58
II. Discussion
Comme énoncé dans l’introduction nous visions la mise en place d’un système
hautement disponible pour l'hébergement de la plateforme open data du gouvernement
ivoirien. Après plusieurs recherches effectuées dans le domaine des architectures
logicielles et du déploiement d’applications micro services, nous avons obtenu un
système distribué reparti sur trois nœuds dans un cluster Kubernetes. Ce système nous
a permis de déployer la plateforme open data et le portail d’exposition de données du
gouvernement tout en respectant les critères de sécurité, maintenabilité,
interopérabilité, fiabilité. Au vu des résultats obtenus et conjointement aux livrables
attendus, nous pouvons affirmer avec certitude que nous avons atteint notre objectif,
celui de déployer la plateforme open data du gouvernement ivoirien dans un
environnement de test en local.
Critiques
Bien que nos résultats aient été concluants, et que nous avons pu délivrer tous nos
livrables attendus, nous sommes toujours en instance de tests et validation afin de
pousser le système au-delà de ses performances et apporter les améliorations
nécessaires pour assurer un meilleur déploiement dans un environnement de
production.
59
CONCLUSION
Dans notre étude nous nous intéressions au domaine de l’Open Data et ses
enjeux pour le gouvernement ivoirien. Notre problème était donc de savoir comment
mettre en place une architecture hautement disponible pour le déploiement de la
plateforme open data du gouvernement ivoirien sur ses propres serveurs, en tenant
compte des aspects de sécurité, de fiabilité et de disponibilité. Notre approche
méthodologique à consister à étudier la plateforme Open Data du gouvernement afin
d’en découvrir les exigences, tant d’un point de vue technique qu’organisationnelle,
puis, les exigences connues, il s’agissait d’étudier les différentes architectures
techniques et outils technologies à notre disposition dans le but de trouver les moyens
les mieux appropriés pour la mise en place de notre système, tout en respectant lesdites
exigences qui sont la sécurité, l’interopérabilité, la conformité, la performance,
l’adaptabilité, la portabilité et la maintenabilité. A la suite de notre étude nous
aboutissions à un système distribué basé sur l'utilisation de conteneurs et orchestré par
Kubernetes qui comprend trois nœuds dont un nœud master et deux nœuds workers.
Ce système nous a permis de pouvoir héberger et maintenir la plate-forme Open Data
du gouvernement ivoirien sur ses serveurs internes. La mise en pratique à travers
l’implémentation des méthodes et outils dans notre environnement de test nous a
permis de confirmer notre étude théorique selon laquelle la mise en place d’une
architecture hautement disponible reposait sur la gestion de la sécurité, de la mise à
l’échelle, de la tolérance aux pannes et de la distribution des charges du système.
60
BIBLIOGRAPHIE
1) Lin, L. C., & Patel, S. P. (2021). The System Design Interview, 2nd Edition.
Independently published.
WEBOGRAPHIE
https://www.ecommercemag.fr/Definitions-Glossaire/Scalabilite-245357.htm
resilience-informatique.html
7) Tolérance aux pannes. (s. d.). © Copyright IBM Corp. 2007, 2014. Consulté
https://www.ibm.com/docs/fr/tpmfod/7.1.1.16?topic=security-fault-tolerance
x
9) Qu’est-ce-que Kubernetes ? (2022, 29 juin). Kubernetes. Consulté le 6 juillet
kubernetes/
https://kubernetes.io/docs/concepts/workloads/pods/
https://kubernetes.io/fr/docs/concepts/overview/components/
https://www.zenops.fr/suse-rancher/
13) Secret Double Octopus. (2021, août 15). What is Secure Socket Shell (SSH) ?
com.translate.goog/security-wiki/protocol/secure-socket-
shell/?_x_tr_sl=auto&_x_tr_tl=fr&_x_tr_hl=fr
14) Configurer les comptes de service pour les pods. (2021, août 3). Kubernetes.
https://kubernetes.io/fr/docs/tasks/configure-pod-container/configure-service-
account/
15) Qu’est-ce que le contrôle d’accès basé sur le rôle (rbac) ? (2021). Entrust.
https://www.entrust.com/fr/resources/faq/what-is-role-based-access-control
https://fr.wikipedia.org/wiki/Autorit%C3%A9_de_certification
xi
17) A.S., Z. (s. d.). Protocole ACME pour les serveurs Windows. SSLmarket.
https://www.sslmarket.fr/blog/protocole-acme-pour-les-serveurs-windows
18) F5. (2021). Qu’est-ce qu’un pare-feu applicatif ? F5. Consulté le 5 août 2022,
à l’adresse https://www.f5.com/fr_fr/services/resources/glossary/application-
firewall
19) David Ko. (2021, 11 octobre). Welcome Longhorn 1.2. Longhorn. Consulté le
volume-and-backup
xii
TABLE DES MATIÈRES
DÉDICACE iii
REMERCIEMENTS iv
SOMMAIRE v
LISTE DES SIGLES ET ABREVIATIONS vi
LISTE DES FIGURES viii
LISTE DES TABLEAUX ix
INTRODUCTION 1
CHAPITRE 1 : ENVIRONNEMENT DE TRAVAIL 4
I. PRÉSENTATION DE LA STRUCTURE D’ACCUEIL 4
Equipes ......................................................................................................... 5
SCRUM ........................................................................................................ 7
Open source.................................................................................................. 7
DevOps ......................................................................................................... 7
Généralités.................................................................................................... 8
Enjeux ........................................................................................................ 10
xiii
III. PRESENTATION ET ORGANISATION DU PROJET 12
Objectifs ..................................................................................................... 12
Contraintes ................................................................................................. 13
Composants ................................................................................................ 19
La conteneurisation .................................................................................... 26
xiv
II. ETUDE ARCHITECTURALE 28
II. Discussion 59
Critiques ..................................................................................................... 59
CONCLUSION 60
BIBLIOGRAPHIE x
WEBOGRAPHIE x
TABLE DES MATIÈRES xiii
RÉSUMÉ xvi
ABSTRACT xvi
xv
RÉSUMÉ
ABSTRACT
As part of the deployment of Open Data, Côte d'Ivoire now has an open data
platform hosted and managed abroad under the domain data.gouv.ci. The objective of
our study is to deploy the government's Open Data solution on its servers. Our problem
is therefore to know How to set up a technical architecture for the deployment of Open
Data in Côte d'Ivoire? What are the requirements of the Ivorian Open Data solution?
What methods and tools are best suited to meet its requirements? Our approach to
address this issue is to first conduct a study on the platform, find tools that meet its
requirements and finally implement these tools in a test environment. We end up with
a distributed system based on the use of containers and orchestrated by Kubernetes
that will be used to host and maintain the Open Data platform of the government of
Côte d'Ivoire taking into account the high availability, security and reliability of the
system.