Usine logicielle : Sécurisation d’une infrastructure en tant que code

Usine logicielle : Sécurisation d’une infrastructure en tant que code

Processus de développement traditionnel

 Il regroupe des méthodes utilisées sur des projets figés. Ces méthodes ne sont adaptées qu’aux projets dont tout le processus d’exécution est connu à l’avance. Le processus traditionnel de gestion de projet n’est pas ouvert aux changements. En effet une petite modification nécessiterait une reprise de tout le processus. Il est ainsi utilisé sur des projets dont les besoins n’évoluent pas. Ce qui n’existe quasiment pas dans les projets informatiques. 

Les méthodes agiles 

Les méthodes agiles ont été créées pour apporter une solution aux manquements du processus de développement traditionnel. Elles s’appuient sur le Manifeste Agile rédigé en 2001 [1]. Contrairement aux processus traditionnels, les méthodes agiles sont ouvertes au changement et s’adaptent aux évolutions du projet. Avec les méthodes agiles, les membres de l’équipe collaborent avec le client tout long du projet afin de s’informer sur ses besoins au lieu de se limiter aux termes du contrat. La majeure partie des projets agiles utilise Scrum [2]. Cependant pour la réalisation de notre projet nous avons opté pour la méthode Kanban. 

Kanban

 C’est une méthode de gestion du changement. L’avantage qu’à la méthode Kanban sur la méthode Scrum c’est qu’elle est plus flexible par rapport aux délais. Kanban est un mot japonais signifiant « carte visuelle ». Elle est inspirée du système de production de Toyota et des méthodes « Lean » [3] dont l’objectif est le contrôle et l’équilibre de la ligne de production. La méthode Kanban s’appuie sur cinq principes [1] : o Visualiser le travail Visualiser tout le processus de réalisation du projet de la conception au produit fini. Usine logicielle : Sécurisation d’une infrastructure en tant que code Mariama LO 13 o Limiter le travail en cours Fixer la quantité de travail à ne pas dépasser à chaque étape. Cela est défini à partir du volume de travail que les membres de l’équipe peuvent supporter. o Rendre les politiques explicites Définir explicitement les règles que les membres de l’équipe doivent appliquer au projet. o Mesurer et gérer les flux Cela permet de prendre les bonnes décisions et de visualiser les conséquences. o Identifier les possibilités d’amélioration Créer une culture Kaizen où l’amélioration continue est une affaire de tous. Le mot kaizen est la fusion des deux mots japonais kai et zen qui signifient respectivement « changement » et « bon ». La traduction française courante est « amélioration continue » [5]. La méthode Kanban permet de visualiser et d’optimiser le flux de travail dans le développement informatique, la maintenance et l’exploitation. Cela est possible grâce à un tableau de bord. Pour notre projet nous avons créé un tableau de bord avec l’outil Trello. Un aperçu de ce tableau est illustré par la figure qui suit : Figure 6- Tableau du projet « Usine Logicielle » sur Trello 2.2. Planning et rétrospective Tout au long du projet des réunions sont organisées chaque lundi pour définir le planning de la semaine. Chaque membre de l’équipe s’attribue un volume de travail. Le volume de tâches Usine logicielle : Sécurisation d’une infrastructure en tant que code Mariama LO 14 alloué aux membres varie en fonction de leurs capacités. En fin de semaine, le vendredi, une séance de présentation (démo) est organisée pour que chaque membre montre l’évolution des tâches qui lui sont affectées ainsi que les problèmes auxquels il a dû faire face. La séance de démo est suivie d’une rétrospective (retro) de la semaine. Durant cette étape, chaque membre de l’équipe donnera son avis sur les points forts et les points faibles de la semaine ainsi que les améliorations à apporter. II. Généralités 1. DevOps Le DevOps est un mouvement qui incite les développeurs et les administrateurs système à travailler en équipe. Il les pousse à avoir les mêmes objectifs et à utiliser les mêmes outils pour mener à bien leur projet. Cette rupture des silos entre développeurs et administrateurs système élimine tout conflit d’intérêt entre les deux parties. Figure 7- Etapes et outils d’un projet DevOps Le DevOps permet d’appliquer les méthodes agiles lors de la réalisation des projets. Il assure la réduction des délais et une meilleure qualité des services. Cela est possible grâce à une collaboration des parties prenantes du projet tout au long du processus de développement. Usine logicielle : Sécurisation d’une infrastructure en tant que code Mariama LO 15 Figure 8- DevOps et Agilité Le DevOps, c’est avant tout l’automatisation et la supervision. L’automatisation de certaines tâches permet une livraison rapide des fonctionnalités. La supervision permet quant à elle de connaitre l’état des ressources en temps réel et d’agir en cas de dysfonctionnement du système. Le DevOps permet l’intégration, les tests, la validation et le déploiement des solutions informatiques. Il permet également la gestion des infrastructures. Tout cela est possible grâce à la coopération inter fonctionnelle des développeurs et des administrateurs système. 

L’intégration continue

 C’est une technique qui permet une livraison rapide des fonctionnalités. Elle prône une réduction de la complexité des livrables. Le nombre de fonctionnalités livré pour une période limitée est augmenté. Cette rapidité dans la livraison est possible grâce à une centralisation des Usine logicielle : Sécurisation d’une infrastructure en tant que code Mariama LO codes sources. De plus, le serveur d’intégration continue est à l’origine de l’automatisation des tests de codes sources. 

Le déploiement continu

 C’est un prolongement de l’intégration continue. Elle assure la livraison d’une nouvelle version à chaque fois que les tests sur les fonctionnalités sont validés. Le déploiement continu permet donc de réduire le temps de latence entre la rédaction d’un code et son emploi réel par les utilisateurs finaux. Elle est basée sur une configuration automatique de l’infrastructure qui résulte des modèles de configuration rédigés par les administrateurs systèmes. Le DevOps, c’est également l’utilisation de certaines technologies telles que : le cloud computing, l’infrastructure en tant que code, la virtualisation et la conteneurisation.

Le cloud computing 

Le cloud computing peut être défini comme étant l’utilisation de ressources distantes via un réseau tel qu’Internet. Il alloue des services mesurables et à la demande qui seront facturés périodiquement (par mois). Le fournisseur n’attribue des ressources à un client qu’après une requête. Les ressources attribuées peuvent être estimées et ainsi permettre à l’utilisateur de suivre sa consommation. La flexibilité des ressources permet leur allocation dynamique en cas de besoin. Les ressources du cloud peuvent être une puissance de calcul, un espace de stockage, un serveur, etc. Ses ressources qui sont continuellement mises à niveau font que le cloud est très performant. L’alimentation en électricité, le stockage et la maintenance des ressources sont gérés par le fournisseur. Il dispose de centres de données relais utilisés pour la sauvegarde des données. En cas de catastrophe naturelle, les ressources sont restituées dans les moindres délais. La continuité de l’activité est ainsi prise en compte. Il existe trois types de cloud computing :  L’infrastructure en tant que service (Infrastructure as a service – IaaS) : c’est le modèle du cloud computing qui propose une externalisation du matériel informatique (serveurs, espaces de stockage).  La Plate-forme en tant que service (Plate-forme as a service – PaaS) : elle offre un environnement informatique adapté aux besoins du développeur (bases de données, etc.) en plus de l’externalisation de l’infrastructure. C’est le format cloud utilisé par les développeurs. Usine logicielle : Sécurisation d’une infrastructure en tant que code Mariama LO 17  Le logiciel en tant que service (Software as a service – SaaS) : il propose l’utilisation d’application à distance. Pour ce type de cloud computing aucune installation n’est nécessaire. Le logiciel est hébergé par le fournisseur et son accès se fait à distance via le navigateur de l’utilisateur (messagerie, visioconférence). Ainsi le cloud computing permet aux clients de s’orienter vers les processus métiers. Pour notre projet nous avons utilisé l’IaaS proposé par Amazon Web Services (AWS) qui est un fournisseur de cloud computing. AWS est le cloud public le plus utilisé 

L’infrastructure en tant que code (Infrastructure as a code – IaaC) 

C’est une technique de gestion et d’approvisionnement d’une infrastructure par le biais d’un code. Elle permet de gérer un environnement d’exploitation de la même manière qu’une application. Avec l’IaaC, la configuration de l’infrastructure devient facile à reproduire. En effet un code peut être utilisé pour générer la même infrastructure à plusieurs reprises. En utilisant l’IaaC, les erreurs faites lors d’une configuration manuelle sont considérablement réduites. Il existe plusieurs outils d’IaaC tels que CloudFormation, Terraform, etc. Pour notre projet nous avons choisi Terraform. Cet outil utilise le langage Hashicorp Configuration Language (HCL) qui permet une bonne description de l’état des ressources sur un fournisseur cloud. 

La virtualisation

 La virtualisation permet de faire fonctionner plusieurs machines logiques sur une machine physique. Elle est possible grâce à un logiciel appelé émulateur qui partage les ressources (mémoire, processeur) de la machine physique avec les machines virtuelles. L’émulateur assure l’isolation des machines comme si elles étaient sur des machines physiques différentes. La virtualisation permet l’optimisation des ressources. En effet, sur un même serveur on peut avoir des machines virtuelles ayant des systèmes d’exploitation différents. Cela permet d’orienter les fonds prévus pour l’achat de plusieurs serveurs physiques vers d’autres besoins.

Table des matières

DEDICACES
REMERCIEMENTS
AVANT-PROPOS
GLOSSAIRE
LISTE DES FIGURES
RESUME
ABSTRACT
INTRODUCTION
PREMIERE PARTIE : Présentation générale
I. Présentation de la structure d’accueil
1. Le groupe Atos
2. GDC Sénégal
II. Contexte du projet
1. Présentation du cadre d’application du projet
2. Problématique
3. Objectifs
DEUXIEME PARTIE : Approche Méthodologique
I. Processus de développement de projet
1. Processus de développement traditionnel
2. Les méthodes agiles
II. Généralités
1. DevOps
2. DevSecOps
TROISIEME PARTIE : Etude préalable et analyse des besoins
I. Etude préalable
1. Présentation de l’infrastructure
2. Les failles de sécurité de l’infrastructure
II. Description des besoins
1. Les besoins fonctionnels
2. Les contraintes techniques
Usine logicielle : Sécurisation d’une infrastructure en tant que code Mariama LO
III. Analyse des besoins
1. Les serveurs
2. Les codes sources
3. L’infrastructure
QUATRIEME PARTIE : Conception et mise en œuvre
I. Conception
1. Définition des politiques de sécurité
2. Architecture de l’infrastructure sécurisée
II. Choix des outils et technologies
1. Les outils d’automatisation des tâches
2. Les pares-feux
3. Les outils d’analyse de code
4. Les anti-malwares
5. Les outils de supervision
6. La gestion des secrets
III. Réalisation
1. Sécurisation du réseau
2. Sécurisation du système
3. Analyse de code source
4. Supervision de l’infrastructure
5. Gestion des secrets de l’infrastructure
CONCLUSION
Bibliographie
Webographie

 

projet fin d'etudeTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *