0% ont trouvé ce document utile (0 vote)
94 vues264 pages

Architectures Microservices

Le document présente une introduction à l'architecture web, en détaillant les concepts de microservices, monolithes et architectures serverless. Il aborde également les protocoles et normes associés aux services web, tels que WSDL, XML et JSON, ainsi que les modèles de développement comme REST et SOAP. Enfin, il discute des critères de choix d'une architecture web, de la scalabilité et des patterns d'architecture couramment utilisés.

Transféré par

Ulrich Tchana
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
94 vues264 pages

Architectures Microservices

Le document présente une introduction à l'architecture web, en détaillant les concepts de microservices, monolithes et architectures serverless. Il aborde également les protocoles et normes associés aux services web, tels que WSDL, XML et JSON, ainsi que les modèles de développement comme REST et SOAP. Enfin, il discute des critères de choix d'une architecture web, de la scalabilité et des patterns d'architecture couramment utilisés.

Transféré par

Ulrich Tchana
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Architectures

Microservices

Un cours de Yann FORNIER


Cours
Introduction à
l’architecture Web

Un cours de Yann Fornier


Concepts de base
Architecture des services web

Client

Navigateur
Web
HTTP SQL
Serveur NoSQL BDD
Application SOAP
Mobile REST
Service
Web

Architecture 3 tiers

Service Web HTTP (HyperText Transfer Protocol)

SOAP (Simple Object Access Protocol)

REST (Representational State Transfer)


Protocoles et normes associés aux services web

Les protocoles et normes associés aux services web permettent de décrire les services, les
messages échangés, les interfaces, et les opérations supportées.

WSDL
XML JSON
(Web Services
(Extensible Markup (JavaScript Object
Description
Language) Notation)
Language)
Le WSDL (Web Services Description Language)

WSDL
(Web Services
Description
Language)

Langage de description de
service qui permet de
décrire les opérations du
service, les types de
données échangés, et les
protocoles de
communication utilisés.
Le WSDL (Web Services Description Language)

WSDL
(Web Services
Description
Language)

Langage de description de
service qui permet de
décrire les opérations du
service, les types de
données échangés, et les
protocoles de
communication utilisés.
Le XML (Extensible Markup Language)

XML
(Extensible Markup
Language)

XML (Extensible Markup


Language) est un langage de
balisage qui permet de décrire
les données échangées entre
le client et le serveur. XML est
souvent utilisé pour
encapsuler les données dans
les messages échangés entre
le client et le serveur.
Le JSON (JavaScript Object Notation)

JSON
(JavaScript Object
Notation)

JSON (JavaScript Object Notation)


est un format de données léger et
facile à lire qui est souvent utilisé
pour les services web RESTful. JSON
est souvent utilisé pour encapsuler
les données dans les messages
échangés entre le client et le
serveur.
Notions de service, d’interface, de message et de
transport

Service Web
HTTP (GET,POST..)
SOAP

Fonctions Internet
API
Ensemble de fonctions exposées

WSDL

XML

JSON

Encapsulation
Différence entre REST et SOAP

REST SOAP
(REpresentational State Transfer) (Simple Object Access Protocol)

Ensemble de procédés architecturaux Protocole officiel géré par le W3C

Standards de conformité ACID

Atomicité
Cohérence
Isolement
Durabilité

IoT Conformité & Sécurité


Modèles de développement de services web

Il existe plusieurs modèles de développement de services web, chacun avec ses propres
caractéristiques, avantages et inconvénients.

Le modèle RPC Le modèle


Le modèle RESTful
Remote Procedure Call documentaire
Notions de service, d’interface, de message et de
transport

Service Web
HTTP (GET,POST..)
Fonctions SOAP
Ensemble de fonctions exposées
“getWeather” Client
“getLength” Le client appelle une
fonction exposée par le
serveur et attend une
réponse.

Le modèle RPC
Remote Procedure Call
Notions de service, d’interface, de message et de
transport

Service Web
HTTP (GET,POST..)
Fonctions SOAP
Ensemble de fonctions exposées
“getWeather” Client
Le serveur traite la
demande et renvoie la “getLength”
réponse à l’appelant

Le modèle RPC
Remote Procedure Call
Notions de service, d’interface, de message et de
transport
Ce modèle est similaire à l’appel de méthode locale, mais la fonction est exécutée sur le serveur
distant. Le modèle RPC est souvent utilisé avec le protocole SOAP.

Service Web
HTTP (GET,POST..)
Fonctions SOAP
Ensemble de fonctions exposées
“getWeather” Client
“getLength”
Le serveur renvoie la
réponse

Le modèle RPC
Remote Procedure Call
Notions de service, d’interface, de message et de
transport

Service Web
HTTP (GET,POST..)
Fonctions RESTful
Ensemble de fonctions exposées
“getWeather” JSON Client
“getLength”

Le modèle documentaire
Le modèle RESTful

Ce modèle est basé sur les principes de l’architecture REST (Representational State Transfer). Le
client envoie des requêtes HTTP au serveur pour effectuer des opérations sur des ressources
(par exemple, un document XML ou une base de données). Le serveur renvoie une réponse
HTTP, généralement au format JSON. Le modèle RESTful est de plus en plus populaire en raison
de sa simplicité et de sa flexibilité.
Introduction à l’architecture web

Définition de l’architecture web et des différents types d’architecture


(monolithe, microservices, serverless)

Avantages et inconvénients de chaque type d’architecture


Qu’est ce que l’architecture web ?

L’architecture web désigne la manière dont les différents


éléments d’une application web (services, bases de
données, front-end, etc.) sont organisés et interagissent
entre eux.

Elle détermine la façon dont l’application web sera


conçue, développée, déployée et maintenue.
Qu’est ce que la scalabilité ?

La scalabilité est la capacité d’un système à


s’adapter et à évoluer en fonction de la
croissance de la demande en termes de
ressources, de performance et de
fonctionnalités.
Qu’est ce que la scalabilité ?

Un exemple de scalabilité serait un site web qui peut gérer


une forte augmentation du nombre de visiteurs sans
ralentir ou tomber en panne.

Pour atteindre cette scalabilité, le site web peut utiliser


des techniques de load balancing pour répartir la charge
de travail sur plusieurs serveurs, ou bien utiliser une
architecture microservices pour permettre à chaque
fonctionnalité de l’application de s’évoluer
indépendamment des autres.

Il est important de prendre en compte la scalabilité lors de


la conception d’une application, car elle peut avoir un
impact significatif sur sa performance et sa fiabilité à long
terme.
Différentes architectures

Il existe plusieurs types d’architecture web, qui varient selon la manière dont les différents
éléments de l’application sont séparés et communiquent entre eux.

Architecture Monolithe Architecture Microservices Architecture Serverless

Il n’y a pas de type d’architecture web qui convient à tous les cas d’utilisation, et le choix de
l’architecture dépend de nombreux facteurs tels que la taille de l’application, les contraintes de
temps et de budget, les exigences en matière de performances et de disponibilité, etc.
Travail de groupe noté

Présentation des architectures par groupe et de leurs enjeux. (Powerpoint demandé)

Durée : 30 minutes

Groupe 1 Groupe 2 Groupe 3

Architecture Monolithe Architecture Microservices Architecture Serverless


Architecture Monolithe

Application

User posts

User components
Utilisateur BDD
Groups

Photo Storage
Regrouper tous les éléments
de l’application dans un seul Live Streaming
et même codebase et à les
déployer ensemble.

Source : Brij Pandey


@codewithbrjj sur Instagram
Architecture monolithe

Elle est souvent utilisée pour les applications de petite et moyenne taille, qui n’ont pas besoin de
scalabilité ou de flexibilité élevées.

Avantages Inconvénients

Simple à mettre en oeuvre et à déployer Manque de scalabilité et de flexibilité

Facile à développer et à maintenir Gestion des dépendances complexes

Coûts de développement et de Augmentation de la complexité lors de la


maintenance réduits croissance
Exemples d’applications monolithes

Site de e-Commerce Un site de blog ou de journal en ligne


Petite et moyenne taille
(Contenu statique
(faible scalabilité,
gamme de produits limitée) Pas de mise à jour temps réel)
Conclusion

L’architecture monolithe est une approche de développement d’application web simple et


adaptée aux applications de petite et moyenne taille qui n’ont pas besoin de scalabilité ou de
flexibilité élevées.

Elle présente des avantages en termes de simplicité de mise en œuvre et de déploiement, de


facilité de développement et de maintenance, et de coûts réduits. Cependant, elle peut être
moins adaptée aux applications qui ont besoin de scalabilité ou de flexibilité élevées, ou qui sont
amenées à grandir de manière importante, car elle peut devenir complexe et difficile à maintenir
dans ces cas.
L’architecture microservices

L’architecture microservices est une approche de développement d’application web qui consiste
à regrouper les éléments de l’application en plusieurs microservices indépendants, qui
communiquent entre eux pour réaliser les fonctionnalités de l’application. Cette approche est
souvent utilisée pour les applications de grande taille ou à forte croissance, qui ont besoin de
scalabilité et de flexibilité élevées.
Avantages de l’architecture microservices

Stockage

Réseau VM Container

Stockage

BDD Stockage
Avantages de l’architecture microservices

Mise à jour sans


perturbation de l’application
Stockage
Scalabilité
Réseau VM Container

Stockage
Indépendance

Déploiement Evolution BDD Stockage


Avantages de l’architecture microservices
Chaque microservice est développé et maintenu par une équipe dédiée, ce qui rend le développement et
la maintenance plus faciles. Les développeurs peuvent travailler sur un microservice en particulier et
utiliser les outils de développement et de versionning qui leur conviennent le mieux.

Gère et déploie
Equipe Réseau Réseau

Gère et déploie
Equipe Infrastructure VM

Gère et déploie
Equipe Data BDD
Avantages de l’architecture microservices

Limitation des problèmes


de maintenance
Pas de dépendances
fortes
Meilleure gestion des
dépendances

VM Json Container

Indépendance Indépendance
Inconvénients de l’architecture microservices
Vue d’ensemble
Gestion de la
confuse
croissance difficile

Coûts élevés

Interactions
complexes Maintenance Gestion des
pannes et des
difficile erreurs
Exemples d’applications web microservices
L’architecture Serverless
Cours 2
Conception d’une
architecture web

Un cours de Yann Fornier


Plan

Session 2 : Conception d’une architecture Web

● Les critères de choix d’une architecture web (scalabilité, flexibilité, etc.)


● La modélisation des services web avec les diagrammes de séquence et de cas
d’utilisation
● Les patterns d’architecture web couramment utilisés (API Gateway, Load Balancer,
etc.)
● Exercice : concevoir une architecture web en utilisant les différents outils vus en cours
Les critères de choix d’une architecture web

Scalabilité Flexibilité

Disponibilité Coût

Sécurité
La modélisation des services web avec les
diagrammes de séquences et cas d’utilisation

La modélisation des services web peut être faite à l’aide de différents diagrammes, notamment
les diagrammes de séquence et de cas d’utilisation.

Le diagramme de séquence permet de modéliser les interactions entre les différents éléments
d’un système, en particulier les échanges de messages entre les services. Il permet de visualiser
l’ordre dans lequel les messages sont envoyés et reçus, ainsi que les conditions de
déclenchement de chaque message.

Requête HTTP
“GET /resource”
Client Service Web
Réponse HTTP
“200 OK”
Le diagramme de cas d’utilisation

Le diagramme de cas d’utilisation permet de modéliser les différentes actions que peuvent
réaliser les utilisateurs d’un système, ainsi que les rôles et les responsabilités de chaque acteur
impliqué. Il permet de visualiser les limites et les contraintes du système, ainsi que les
interactions avec d’autres systèmes ou services.

Client

Afficher Requête HTTP Service Web


ressource “GET /resource”
Réponse HTTP
“200 OK”
Les patterns d’architecture web couramment
utilisés

API Gateway Load Balancing

Circuit Breaker Mise en cache

Event Bus
API Gateway
Une API Gateway est une passerelle de communication qui sert de point d’entrée unique et
centralisé pour les différents services et composants de l’application. Elle permet de mettre en
place une interface de communication standardisée et normalisée, en gérant les routes, les
protocoles, les sécurités, les performances, etc. L’API Gateway s’appuie sur des technologies
comme les APIs REST, les WebHooks, les Events, etc. pour gérer les échanges de données et de
messages entre les différents acteurs de l’application.

Routes
API Protocoles Internet
Application Gateway Performances
Pourquoi utiliser une API Gateway ?

Simplification, sécurisation de
Gestion des routes et des
l’intégration et de l’interopérabilité
protocoles
des services

Gestion des sécurités et des


performances
Pourquoi utiliser une API Gateway ?

Interface
commune et

se
ut
normalisée

ro
es
nd
io
Gestion des

st
Ge
protocoles

Gestion de la
sécurité

Authentification
Autorisation..
Exemples d’utilisation d’une API Gateway

Microservice
1

Authentification Sécurité
Autorisation

Gestion des Transformation Microservice


demandes de trafic des requêtes 2

API
Gateway
Microservice
Monitoring et suivi
3
des erreurs
Performance
Détection
Disponibilité
Exemples de logiciels d’API Gateway

AWS [Link] Express Kong


API Gateway Gateway
Load Balancing

Le load balancing est une technique utilisée pour répartir la charge de travail sur plusieurs
serveurs ou instances de traitement afin d’optimiser la performance et la disponibilité d’un
système. Il est souvent utilisé dans les environnements de production pour gérer les pics de
charge et assurer la continuité de service.
Load Balancing

Il existe plusieurs types de load balancing, notamment le load


balancing de niveau 7 (basé sur les couches 7 du modèle OSI) et
le load balancing de niveau 4 (basé sur les couches 4 du modèle
OSI).

Le load balancing de niveau 7 prend en compte les informations


de l’application, comme les en-têtes HTTP, pour déterminer
comment répartir la charge de travail.

Le load balancing de niveau 4 se base uniquement sur les


informations de transport, comme l’adresse IP et le numéro de
port, pour répartir la charge de travail.

Le modèle OSI
Load Balancing

Le load balancing peut être mis en place de différentes manières, comme en utilisant un
équilibreur de charge dédié ou en utilisant un logiciel de load balancing sur un serveur existant.
Il est également possible de configurer le load balancing en utilisant un service de cloud
computing, comme Amazon Elastic Load Balancing ou Google Cloud Load Balancer.
Le Load Balancer

Un load balancer (équilibreur de charge) est un composant ou un service qui permet de répartir
la charge de travail sur plusieurs serveurs ou instances de traitement afin d’optimiser la
performance et la disponibilité d’un système. Il est généralement utilisé dans les
environnements de production pour gérer les pics de charge et assurer la continuité de service.
Les technologies du Load Balancer

Open Source Propriétaire

Logiciel Serveur Microservice Microservice

Couche 7 Couche 7 Couche 7 Couche 7

Couche 4 Couche 4 Couche 4


Le Circuit Breaker
Circuit Breaker : ce pattern consiste à mettre en place un mécanisme de protection pour
prévenir les erreurs de cascades et les dégradations de performance dans un environnement
distribué. Le Circuit Breaker permet de couper temporairement l’accès à un service défaillant,
afin de limiter les dommages et de permettre une récupération progressive.
Le Circuit Breaker

Un circuit breaker est un patron de conception qui permet de protéger une application contre
les pannes de sous-systèmes en désactivant temporairement les appels de service à ces
sous-systèmes qui échouent de manière répétée. On l’utilise généralement en parallèle d’un
Load Balancer pour améliorer les performances et la (haute) disponibilité.
Processus du circuit breaker

Le circuit breaker suit un processus simple :

1. Lorsqu’un appel de service échoue, le circuit breaker enregistre cet échec.

2. Si un nombre suffisamment élevé d’appels de service échouent de manière consécutive, le circuit breaker
passe en mode “ouvert” et bloque tous les appels de service futurs vers le sous-système en question.

3. Pendant que le circuit breaker est ouvert, il surveille en continu si les appels de service réussissent à
nouveau.

4. Si un nombre suffisamment élevé d’appels de service réussissent de manière consécutive, le circuit


breaker passe en mode “fermé” et autorise à nouveau les appels de service vers le sous-système.
Exemples de circuit breaker

Dans une application de commerce en ligne, un circuit breaker peut être utilisé pour protéger
l’application contre les pannes du système de paiement. Si le système de paiement échoue de
manière répétée, le circuit breaker peut être activé pour bloquer temporairement les appels de
service vers ce système et empêcher l’application de se bloquer.
Exemples de circuit breaker

Bibliothèque open source, Bibliothèque open source


Bibliothèque open source,
développée par Netflix.
Plus légère et facile développée par Lyft
d’utilisation
Cible : applications Java.
Cible : applications Java.
Mise en cache
Mise en cache

Maison Hypermarché
Mise en cache

20 minutes

Maison Hypermarché
Mise en cache

2 minutes
Maison Epicerie
Hypermarché
Exemples de mise en cache

Navigateur Web Serveur Web Système de fichiers Base de données

Mise en cache

Fichiers Données souvent


Pages web Réponses HTTP
récemment lus demandées

Recommandation
“Pourquoi en utilisant un VPN, vous pouvez accéder au catalogue Netflix
du monde entier ?”
Mise en cache

Maison “Edge Location”


Adresse Correspondant
à l’adresse
Mise en cache

Maison “Edge Location”


Adresse Correspondant
à l’adresse
Exemples de logiciels de mise en cache

Memcached Redis Varnish Squid


L’Event Bus

Ce pattern consiste à mettre en place un mécanisme de communication asynchrone entre les


différents éléments d’une application, en utilisant un bus de messages ou un système de
notification. L’Event Bus permet de découpler les échanges de messages entre les services, de
manière à améliorer la flexibilité et la robustesse de l’application.

Il s’agit d’une couche de communication indépendante qui permet de découpler les différents
services et composants de l’application, de manière à ce qu’ils n’aient pas à se connaître ou à se
dépendre les uns des autres.
L’Event Bus

Event

Message

EVENT BUS

Event Event Event


Response Response
Processor Processor Processor

DB Operations Metrics … Calculations


Mise en place d’un Event Bus
Un bus de messages Un bus d'événements Un bus de notification

Permet de souscrire Permet de souscrire


Permet de souscrire et publier des et publier des
et publier des évènements notifications
messages asynchrones en asynchrones en
asynchrones en utilisant un système utilisant un système
utilisant un broker* de gestion d’ de gestion de
évènements notification

*broker : Serveur avec lequel les clients communiquent


Avantages d’un event Bus

Event

Scalabilité

EVENT BUS

Flexibilité
Découplage

DB Operations Metrics … Calculations


Exercice concevoir une architecture web en
utilisant les différents outils vus en cours

Vous pouvez utiliser un outil de diagramme de cas d’utilisation comme Lucidchart ou [Link] pour réaliser votre
modélisation. Voici quelques éléments à prendre en compte lors de la création de votre diagramme :

Prenez le cas d’une application de e-commerce qui permet de acheter en ligne des produits.

Identifiez les différents services nécessaires à l’application (par exemple : service de gestion des produits, service
de gestion des commandes, service de gestion des utilisateurs, etc.)

Utilisez des diagrammes de séquence et de cas d’utilisation pour modéliser les interactions entre ces services.

Choisissez un pattern d’architecture web qui convient à votre application (par exemple, API Gateway, Load
Balancer, Circuit Breaker, etc.) et justifiez votre choix.

Dessinez le diagramme de votre architecture en utilisant les outils vus en cours (par exemple, [Link]).

Rédigez un rapport décrivant votre architecture et les résultats de vos tests.


Acteurs et protocoles de communication en
architecture web

Dans une architecture web, il y a plusieurs acteurs qui jouent un rôle clé dans la communication
et l’interaction entre les différents éléments de l’application. Ces acteurs sont le client, le
serveur et le réseau.
Cours 3 : Implémentation
d’une architecture
Microservices
Conteneurisation
et Docker

Un cours de Yann Fornier


Conteneurisation et Docker

Session 7: Conteneurisation et docker

● Introduction à la conteneurisation
● Présentation & utilisation de Docker
Qu’est ce qu’un conteneur ?

Conteneur
Introduction à la conteneurisation
Qu’est ce qu’un conteneur ?

Environnement isolé
Un conteneur est un environnement
logiciel qui permet de lancer et exécuter
des applications de manière isolée et
Application
autonome. Il encapsule les applications,
leurs dépendances et leur configuration
dans un environnement qui peut être
Conteneur facilement déplacé d’un système à un
Dépendances autre.

Fichier de configuration de
conteneur (Dockerfile)
Introduction à la conteneurisation
Qu’est ce qu’un conteneur ?

Virtualisation Conteneurisation
Machine Machine Machine
Virtuelle 1 Virtuelle 2 Virtuelle 3
Les conteneurs sont similaires aux

Application

Application
machines virtuelles, mais
Application
Application

Application

contrairement à ces dernières, ils


ne nécessitent pas de système
d’exploitation virtuel, ils partagent
donc le système d’exploitation
Conteneur Conteneur hôte, ce qui les rend plus légers et
OS OS OS
virtuel virtuel virtuel plus rapides à démarrer.

Hyperviseur Container Engine

OS OS
Qu’est ce qu’un conteneur ?

Automatisation de la Meilleure portabilité


gestion des instances

Meilleure isolation
Automatisation des tâches
de déploiement
Conteneur
Meilleure scalabilité

Automatisation de la
scalabilité Meilleure sécurité
Les défis de l’environnement d’exécution des
applications

Serveurs
m ent physiques
ploie

?
Application Serveurs
physiques Serveurs
physiques

Machine
virtuelle
Les avantages de la conteneurisation

Environnement d'exécution 1

ment
p loie

Environnement d'exécution 2
Conteneur

Environnement d'exécution 3
Les avantages de la conteneurisation

Environnement d'exécution 1

Portabilité

ment
p loie

Environnement d'exécution 2
Conteneur

Portabilité

Les conteneurs peuvent être déplacés


facilement d’un environnement à
Environnement d'exécution 3
l’autre, ce qui facilite les déploiements
et les mises à jour.
Les avantages de la conteneurisation
Isolation

Environnement d'exécution 1

ment
p loie Isolation

Environnement d'exécution 2
Conteneur

Isolation
Les conteneurs isolent les applications
les unes des autres, ce qui permet de
Environnement d'exécution 3
gérer les différentes parties de
l’application de manière plus efficace.
Les avantages de la conteneurisation
Sécurité

Environnement d'exécution 1

ment
p loie Sécurité

Environnement d'exécution 2
Conteneur

Sécurité
Les conteneurs isolent les applications
les unes des autres, ce qui permet de
Environnement d'exécution 3
limiter les risques de sécurité.
Les avantages de la conteneurisation

Conteneur Conteneur Conteneur Conteneur Conteneur Conteneur

Scalabilité
Conteneur

Conteneur Conteneur Conteneur Conteneur Conteneur Conteneur


Conclusion

En résumé, la conteneurisation est une technique de “virtualisation légère” qui permet d’isoler
les applications et leurs dépendances dans des environnements autonomes appelés conteneurs.

Cela permet de garantir que l’application fonctionne de manière identique sur tous les
environnements, qu’il s’agisse d’un environnement de développement, de test ou de production.
Il offre des avantages tels que la portabilité, l’isolation, la scalabilité et la sécurité.

Il est souvent comparé aux machines virtuelles qui ont besoin de plus de ressources et peuvent
être plus lents à démarrer, tandis que les conteneurs sont plus légers et plus rapides, ils sont
donc plus adaptés pour les applications qui nécessitent une scalabilité et une flexibilité élevées.
Les concepts clés de la conteneurisation : images,
conteneurs, registres

La conteneurisation repose sur trois concepts clés : les images, les conteneurs et les registres.

Images Conteneurs Registres


Les concepts clés de la conteneurisation : images,
conteneurs, registres

Une image est un package qui contient une application et toutes ses dépendances, ainsi que les
instructions nécessaires pour créer un conteneur à partir de l’image.

Images
Les concepts clés de la conteneurisation : images,
conteneurs, registres

Un conteneur est une instance en cours d’exécution d’une image. Les conteneurs sont légers et
portables, et peuvent être déployés rapidement et facilement.

Conteneurs
Les concepts clés de la conteneurisation : images,
conteneurs, registres

Un registre est un dépôt centralisé pour stocker et distribuer des images Docker. Le registre public
de Docker, Docker Hub, contient des milliers d’images pré-construites que les développeurs
peuvent utiliser pour créer des conteneurs.

Registres
[Link]
Introduction à Docker

Docker est la technologie de conteneurisation la plus populaire et la plus largement utilisée.


Histoire de Docker

Docker a été créé en 2013 par Solomon


Hykes et est rapidement devenu un outil
incontournable dans l’écosystème des
applications web. La popularité de
Docker est due en partie à sa facilité
d’utilisation et à sa portabilité.

Solomon Hykes
Les composants de Docker
Les composants de Docker
Docker Host
Client Registry
Docker Daemon
Docker build Ubuntu

Containers Images Openstack


Docker pull

Ubuntu NGiNX
Docker run

Openstack

MySQL
Les composants de Docker
Docker Host
Client Registry
Docker Daemon
Docker build Ubuntu

Containers Images Openstack


Docker pull

Ubuntu NGiNX
Docker run

Openstack

MySQL

Le client Docker est la principale interface permettant de communiquer avec le système Docker. il reçoit les
commandes par la CLI et les transmets au Docker Daemon.
Les composants de Docker
Docker Host
Client Registry
Docker Daemon
Docker build Ubuntu

Containers Images Openstack


Docker pull

Ubuntu NGiNX
Docker run

Openstack

MySQL

Le Docker daemon traite les requêtes API afin de gérer les différents aspects de l’installation comme les images, les conteneurs ou les
volumes de stockage.

Les images Docker sont des modèles en lecture seule, utilisées pour créer des conteneurs Docker. Elles sont composées de plusieurs
couches empaquetant toutes les installations, dépendances, bibliothèques, processus et codes d’application nécessaires.
Les composants de Docker
Docker Host
Client Registry
Docker Daemon
Docker build Ubuntu

Containers Images Openstack


Docker pull

Ubuntu NGiNX
Docker run

Openstack

MySQL

Le registre Docker est un système de catalogage permettant l’hébergement et le “push and pull” des images Docker.
Vous pouvez utiliser votre propre registre local ou l’un des nombreux services hébergés par des tiers comme Amazon
ECR ou Google Container Registry.
Les composants de Docker
Docker Host
Client Registry
Docker Daemon
Docker build Ubuntu

Containers Images Openstack


Docker pull

Ubuntu NGiNX
Docker run

Openstack

MySQL
Les avantages de Docker

Docker offre plusieurs avantages par rapport aux méthodes de déploiement traditionnelles.
Tout d’abord, il permet de créer des conteneurs légers et portables qui peuvent être déployés
rapidement et facilement sur différentes plateformes. De plus, Docker permet d’isoler les
applications et leurs dépendances, ce qui facilite la gestion et le déploiement des applications.
Enfin, Docker offre une grande flexibilité et facilite le travail en équipe en permettant aux
développeurs de travailler sur des applications de manière indépendante et de partager leurs
images et leurs conteneurs avec d’autres développeurs.
Travailler avec des conteneurs Docker

Une fois que vous avez une compréhension de base de Docker, vous pouvez commencer à
travailler avec des conteneurs Docker. Cette section explique comment créer des images
Docker et exécuter des conteneurs.

Attention vous allez avoir besoin d’installer docker sur votre machine pour faire les commandes
de cette partie du cours.
Créer une image Docker
Pour créer une image Docker, vous devez écrire un Dockerfile, qui est un fichier texte qui
contient toutes les instructions pour créer une image.

FROM python:3.8-slim-buster
WORKDIR /app
COPY [Link]
RUN pip install - -no-cache-dir -r [Link]
COPY . .
CMD [“python”, “[Link]”]
Dockerfile
(.dockerfile)
Dockerfile crée une image qui exécute une application web Python
Créer une image Docker
Pour créer une image Docker, vous devez écrire un Dockerfile, qui est un fichier texte qui
contient toutes les instructions pour créer une image.

FROM spécifie l’image de base que vous


FROM python:3.8-slim-buster allez utiliser (celle présente sur
WORKDIR /app DockerHub)
COPY [Link]
RUN pip install - -no-cache-dir -r [Link]
COPY . .
CMD [“python”, “[Link]”]
Dockerfile
(.dockerfile)
Dockerfile crée une image qui exécute une application web Python
Créer une image Docker
Pour créer une image Docker, vous devez écrire un Dockerfile, qui est un fichier texte qui
contient toutes les instructions pour créer une image.

WORKDIR permet de spécifier le


FROM python:3.8-slim-buster répertoire dans lequel seront basées les
WORKDIR /app instructions qui suivront son appel
COPY [Link]
RUN pip install - -no-cache-dir -r [Link]
COPY . .
CMD [“python”, “[Link]”]
Dockerfile
(.dockerfile)
Dockerfile crée une image qui exécute une application web Python
Créer une image Docker
Pour créer une image Docker, vous devez écrire un Dockerfile, qui est un fichier texte qui
contient toutes les instructions pour créer une image.

COPY permet d’importer des documents


FROM python:3.8-slim-buster locaux mais pas ceux provenant d’une
WORKDIR /app URL. (contrairement à ADD)
COPY [Link]
RUN pip install - -no-cache-dir -r [Link]
COPY . .
CMD [“python”, “[Link]”]
Dockerfile
(.dockerfile)
Dockerfile crée une image qui exécute une application web Python
Créer une image Docker
Pour créer une image Docker, vous devez écrire un Dockerfile, qui est un fichier texte qui
contient toutes les instructions pour créer une image.

RUN permet d’exécuter des commandes


FROM python:3.8-slim-buster supplémentaires à l'intérieur du build du
WORKDIR /app dockerfile
COPY [Link]
RUN pip install - -no-cache-dir -r [Link]
COPY . .
CMD [“python”, “[Link]”]
Dockerfile
(.dockerfile)
Dockerfile crée une image qui exécute une application web Python
Créer une image Docker
Pour créer une image Docker, vous devez écrire un Dockerfile, qui est un fichier texte qui
contient toutes les instructions pour créer une image.

CMD sert à mentionner les instructions qui


FROM python:3.8-slim-buster seront exécutées en premier lors du lancement
WORKDIR /app du conteneur. Permet une exécution sans
paramètre supplémentaire
COPY [Link]
RUN pip install - -no-cache-dir -r [Link]
COPY . .
CMD [“python”, “[Link]”]
Dockerfile
(.dockerfile)
Dockerfile crée une image qui exécute une application web Python
Créer une image Docker

Une fois que vous avez écrit le Dockerfile, vous pouvez créer l’image avec la commande docker
build. Par exemple :

Dockerfile “Création de l’image”


Docker image
(.dockerfile)
$ docker build -t myimage:1.0 .

Cette commande crée une image avec le tag myimage:1.0 à partir du Dockerfile situé dans le
répertoire courant ( . ).
Exécuter un conteneur Docker

Une fois que vous avez créé une image Docker, vous pouvez l’exécuter en tant que conteneur
avec la commande docker run

Docker image “Exécution du conteneur” Conteneur

$ docker run -p 80:80 myimage:1.0

Cette commande exécute un conteneur à partir de l’image myimage:1.0 et mappe le port 80


(HTTP) du conteneur sur le port 80 de l’hôte.
Configuration de l’environnement d’un conteneur
Docker

Vous pouvez configurer l’environnement d’un conteneur Docker en utilisant les variables d’environnement ou les fichiers de
configuration. Par exemple, vous pouvez définir une variable d’environnement dans un Dockerfile :

ENV MY_VAR=myvalue

Vous pouvez également spécifier des variables d’environnement au moment de l’exécution du conteneur avec la commande
docker run. Par exemple :

docker run -e MY_VAR=myvalue myimage:1.0

Cette commande exécute un conteneur à partir de l’image myimage:1.0 et définit la variable d’environnement MY_VAR à
myvalue.
Travailler avec des volumes Docker

Volume externe
persistant

Base de Données Conteneur

Fichiers de configuration

“Créer un volume Docker”


Monter un volume Docker :
docker volume create myvolume docker run -v myvolume:/data myimage:1.0
Travailler avec des volumes Docker

Volume externe
persistant

Base de Données Conteneur


“Monter un volume Docker”
Fichiers de configuration

docker run -v myvolume:/data myimage:1.0

Cette commande monte un volume Docker “myvolume” dans le conteneur et le rend accessible
dans le répertoire /data.
Travailler avec des réseaux Docker

Les réseaux Docker permettent aux conteneurs de communiquer entre eux et avec le monde extérieur.
Vous pouvez créer des réseaux Docker pour isoler vos applications et les protéger contre les attaques.

Pour créer un réseau Docker, vous pouvez utiliser la commande docker network create. Par exemple :

docker network create mynetwork

Cette commande crée un réseau Docker appelé mynetwork.

Pour exécuter un conteneur Docker sur un réseau spécifique, vous pouvez utiliser l’option --network
avec la commande docker run. Par exemple :

docker run –network mynetwork myimage:1.0

Cette commande exécute un conteneur à partir de l’image myimage:1.0 sur le réseau mynetwork.
Limites et alternatives à Docker

Docker peut être plus difficile à mettre en place que d’autres technologies de virtualisation, en
particulier pour les utilisateurs débutants.

Les conteneurs Docker partagent le même noyau de système d’exploitation, ce qui peut créer
des problèmes de sécurité si le noyau est compromis.

Les conteneurs Docker peuvent être moins isolés que les machines virtuelles, ce qui peut causer
des problèmes de performance ou de sécurité dans certaines situations.
Playground & TP Docker

Pour la suite et les exercices de ce cours vous devez effectuer le cours docker 101 :
[Link]

Puis :

[Link]
TP noté Docker à rendre

Rendu attendu : PDF comprenant des captures d’écran et des textes explicatifs de ce que vous
avez réalisé.

Deadline : Dimanche 26 janvier 18h00 par mail

Adresse de rendu : [Link]@[Link]


Séance 3 : Intégration
Continue (CI)
L’intégration Continue (CI)

L’intégration continue (CI) est une pratique de développement de logiciel qui consiste à intégrer
les modifications et les ajouts de code de manière régulière et automatisée dans le code source
principal du projet. L’objectif de l’intégration continue est de s’assurer que le code source est
stable et fonctionnel à tout moment, en détectant et en corrigeant les erreurs et les bugs de
manière précoce.
L’intégration Continue (CI)

Pour mettre en place une intégration continue, il est nécessaire de configurer un environnement
de développement et de déploiement automatisé, qui inclut des outils de build, de test et de
déploiement. Ces outils permettent de construire, de tester et de déployer le code source de
manière automatisée, en s’appuyant sur un système de contrôle de version (Git, SVN, etc.) et sur
un serveur d’intégration continue (Jenkins, Travis CI, etc.).
L’intégration Continue (CI)

L’intégration continue s’appuie sur une stratégie de développement en continu, qui consiste à
développer et à intégrer le code de manière continue et itérative, plutôt que de le faire de
manière séquentielle et ponctuelle. Cette stratégie permet de réduire les temps de
développement et de déploiement, de s’assurer de la qualité et de la stabilité du code, et de
faciliter la collaboration et la communication au sein de l’équipe de développement.
Outils de build

Les outils de build sont des logiciels qui permettent de compiler, d’assembler et de packager le
code source de l’application en vue de sa mise en production. Ils peuvent automatiser et
optimiser différentes tâches de build, comme la génération de fichiers binaires, la création de
fichiers de configuration, l’inclusion de dépendances, la minification de code, etc.

Exemples d’outils de build : Maven, Gradle, Ant, Webpack.


Outils de test

Les outils de test sont des logiciels qui permettent de vérifier et de valider le bon
fonctionnement et la qualité de l’application. Ils peuvent exécuter différents types de tests,
comme les tests unitaires, les tests d’intégration, les tests de performance, les tests de sécurité,
etc. Les résultats des tests sont généralement reportés dans des rapports, qui permettent de
suivre l’état de l’application et de détecter les éventuels problèmes.
Automatisation des tests et des déploiements

Outil d’Intégration Continue

Tests Tests de Tests de


Tests Unitaires
d’acceptation performance sécurité

Scénario cyber 1

Scénario cyber 2
Environnement de Dev
Scénario cyber 3

Ready to
Build Test Deployment
Projet build
Automatisation des tests et des déploiements

Outil d’Intégration Continue

DevOps DevSecOps

Tests Tests de Tests de


Tests Unitaires
d’acceptation performance sécurité

Scénario cyber 1

Scénario cyber 2
Environnement de Dev
Scénario cyber 3

Ready to
Build Test Deployment
Projet build
Tests d’acceptation

Les tests d’acceptation sont des tests qui vérifient que le système répond aux besoins et aux
attentes des utilisateurs ou des clients. Ils permettent de s’assurer que le système est facile à
utiliser, ergonomique et fonctionnel, et qu’il respecte les standards et les normes en vigueur. Les
tests d’acceptation sont souvent exécutés par les utilisateurs ou les clients finaux au cours de la
phase de déploiement, pour valider l’adéquation du système aux besoins et aux attentes de
l’organisation.
Tests de performance

Les tests de performance sont des tests qui mesurent les indicateurs de performance d’un
système, tels que sa vitesse, sa capacité de traitement, sa fiabilité, etc. Ils permettent de
s’assurer que le système est capable de gérer les charges de travail prévues et de répondre aux
exigences de performance définies.

Les tests de performance sont souvent exécutés par les testeurs ou les administrateurs système
au cours de la phase de déploiement, pour valider les performances du système en conditions
réelles.
Tests de sécurité

Les tests de sécurité sont des tests qui vérifient la sécurité d’un système, en détectant et en
corrigeant les failles et les vulnérabilités qui pourraient être exploitées par des attaquants. Ils
permettent de s’assurer que le système est protégé contre les menaces externes et internes, et
qu’il respecte les règles de sécurité en vigueur. Les tests de sécurité sont souvent exécutés par
des experts en sécurité ou des sociétés de testing spécialisées, pour valider la sécurité du
système avant son déploiement.
Etude de cas : Outils d’Intégration Continue
Outils CI/CD, GitLab CI, Travis CI, Jenkins, Bamboo

Groupe 2 : Bamboo

Groupe 1 : Jenkins

Groupe 5 : Sonarqube

Groupe 4 : Gitlab CI/CD

Groupe 3 : Travis CI
Séance 4 : Déploiement
Continu (CD)
Déploiement Continu (CD)

Le déploiement continu (Continuous Deployment en anglais) est une pratique de


développement logiciel qui consiste à automatiser et à intégrer de manière continue les étapes
de build, de test et de déploiement d’une application. Le but du déploiement continu est de
permettre une livraison rapide et fréquente de nouvelles fonctionnalités et de corrections de
bugs, tout en maintenant un niveau élevé de qualité et de stabilité du code.
Déploiement Continu (CD)

Pour mettre en œuvre le déploiement continu, il est nécessaire de mettre en place une chaîne
d’intégration et de déploiement (CI/CD en anglais) qui permet de gérer de manière automatisée
et transparente les différentes étapes du processus de déploiement. La CI/CD peut être basée
sur des outils de build, de test et de déploiement tels que Jenkins, Travis CI, CircleCI, etc.

CD sur un serveur de test CD dans le cloud


Déploiement continu sur un serveur de staging

Dans ce scénario, chaque fois qu’un développeur valide un commit sur la branche de
développement, le processus de CI/CD déclenche automatiquement la compilation et les tests
de l’application, puis déploie le code sur un serveur de staging (environnement de
préproduction). Les tests de non-régression et les validations manuelles peuvent être effectuées
sur ce serveur avant de déclencher le déploiement sur le serveur de production.
Automatisation des tests et des déploiements

Outil de Déploiement Continu


(Ansible, AWS, Docker..)

Environnement de Dev
Environnement de Staging (Pré-Prod) Environnement
de Prod

Tests de
non-regression

Projet Projet Projet


Validation manuelle

Ready to
Build Test Deployment
build
Déploiement sur un serveur de production

Dans ce scénario, le processus de CI/CD déploie automatiquement le code sur le serveur de


production dès qu’il est validé sur la branche de développement. Cette approche est plus
risquée, car elle nécessite de mettre en place des tests de qualité et de stabilité très rigoureux
pour éviter les erreurs de déploiement.
Automatisation des tests et des déploiements

Outil de Déploiement Continu


(Ansible, AWS, Docker..)

Environnement de Dev
Environnement
de Prod

Projet Projet

Ready to
Build Test Deployment
build
Déploiement continu sur le cloud

Dans ce scénario, le processus de CI/CD déploie automatiquement l’application sur un


environnement de cloud computing, comme AWS ou Google Cloud. Cette approche permet de
bénéficier d’une scalabilité et d’une flexibilité importantes, ainsi que d’une facilité de gestion et
de maintenance.
Automatisation des tests et des déploiements

Outil de Déploiement Continu


(Ansible, AWS, Docker..)

Environnement de Dev Environnement


Cloud
Environnement
de Prod

Projet Projet

Ready to
Build Test Deployment
build
Outils de déploiement

Les outils de déploiement sont des logiciels qui permettent de déployer l’application sur un ou
plusieurs serveurs de production. Ils peuvent automatiser et optimiser différentes tâches de
déploiement, comme le transfert de fichiers, la configuration de l’application, le redémarrage de
services, la mise à jour de la base de données, etc. Ils peuvent également gérer les différentes
versions de l’application et les rollbacks en cas de problème. Exemples d’outils de déploiement :
Jenkins, Github Action, Gitlab CI, ArgoCD …
Stratégies de déploiement (blue-green, canary..)

Déploiement progressif
Déploiement Blue-Green Déploiement Canary
(Rolling)
Les différentes techniques de déploiements

Déploiement blue-green

Mise à jour Evolutions

Instance de l’application

Load
Exécution parallèle
Balancer
Instance de l’application
Utilisation
Utilisateurs nominale

Instance “live”
Les différentes techniques de déploiements

Déploiement blue-green
Instance “live”

Utilisation
Utilisateurs nominale

Instance de l’application

Load
Exécution parallèle
Balancer
Instance de l’application

Mise à jour Evolutions


Les différentes techniques de déploiements

Le déploiement blue-green est souvent utilisé en conjonction avec des outils de gestion de
conteneurs pour automatiser les tâches de déploiement et de gestion des instances. Il est
également utilisé pour les déploiements sur des plateformes cloud, qui offrent des
fonctionnalités pour automatiser les tâches de déploiement, de scalabilité et de gestion des
instances.

Conteneur

Load
DNS
Balancer

Conteneur
Rolling-Upgrade

Le Rolling upgrade consiste à installer une nouvelle version de l’application d’une façon
séquentielle en procédant par une ou plusieurs instances. Ce mode assure la continuité de
service, car il ne traite qu’une partie de l’infrastructure à la fois.
Version 1

Rolling-Upgrade Version 2

Conteneur Conteneur

Conteneur Conteneur

Utilisateurs

Conteneur Conteneur

Conteneur Conteneur
Version 1

Rolling-Upgrade Version 2

Conteneur Conteneur

Conteneur Conteneur

Utilisateurs

Conteneur Conteneur

Conteneur Conteneur
Version 1

Rolling-Upgrade Version 2

Conteneur Conteneur

Conteneur Conteneur

Utilisateurs

Conteneur Conteneur

Conteneur Conteneur
Version 1

Rolling-Upgrade Version 2

Le Rolling Upgrade
Conteneur Conteneur est conseillé dans les
cas suivants :

Application qui
Conteneur Conteneur
supporte avoir deux
différentes versions
Utilisateurs accessibles en même
temps

Conteneur Conteneur Hot-fix, car il


n’introduit pas un
changement
fonctionnel.
Conteneur Conteneur
Le déploiement Canary release

Modifications
acceptées
e

“Canaris” Nouvelle version Nouvelle version (stable)


ag
nn
illo
nt
ha

Load
Ec

Balancer

Ancienne version (stable)


Utilisateurs
Le déploiement Canary release

Modifications
refusées
e

“Canaris” Nouvelle version Rework


ag
nn
illo
nt

Load
ha

Balancer
Ec

Ancienne version (stable)


Utilisateurs
Le déploiement Canary release

Géré en Interne

Tolérants aux bugs Déceler les bugs

Bien sélectionner
les “Canaris”

REX rapide
Les avantages du déploiement Canary

Les retours d’expérience

En mettant à disposition une partie des modifications auprès d’un petit échantillon
d’utilisateurs, il est plus facile d’avoir des retours d’expérience. Ce sont ces feedbacks qui
permettent d’améliorer le logiciel ou l’application en continu.
Les avantages du déploiement Canary

La réduction des risques

Si certains bugs sont identifiés en phase de test, les utilisateurs les subissant sont peu nombreux.
Ce qui permet de maintenir un excellent niveau de satisfaction.

En outre, les modifications sont plus facilement réversibles que si elles étaient diffusées à une
large partie des utilisateurs.

Dans tous les cas, le risque lié au déploiement est grandement réduit grâce au Canary Devops.
Les avantages du déploiement Canary

L’absence d’infrastructure propre

Contrairement aux méthodes de déploiement Blue/Green et progressif, il n’est pas nécessaire de


prévoir deux infrastructures (une pour le test et une autre pour le déploiement total). En effet, le
test Canary n’est pas réalisé sur un autre serveur ou une autre instance, mais auprès d’un groupe
spécifique d’utilisateurs.

À ce titre, le déploiement Canary DevOps est particulièrement utile pour les entreprises qui ne
disposent pas de moyens financiers faramineux.
Les inconvénients de Canary Release

Malgré tous les bénéfices de Canary pour un déploiement DevOps, il convient d’avoir
conscience des faiblesses de cette méthode. En effet, même si les utilisateurs restreints peuvent
apporter leurs retours, il y a parfois des bugs qui passent à la trappe. Alors avant la mise en
production à l’ensemble de l’environnement, il est primordial de vérifier à nouveau d’éventuels
dysfonctionnements.
Ce qu’il faut retenir

La méthode Canary DevOps permet de déployer de nouvelles fonctionnalités de manière


progressive à un nombre restreint d’utilisateurs.

À la différence des modèles de déploiement Rolling et Blue/Green, Canary release ne nécessite


pas d’infrastructure supplémentaire.

Le déploiement Canary permet aux organisations de réduire les risques, d’accélérer la mise en
production, et tout ça, à moindre coût.
Cours
Monitoring et
logging de services
Web
Un cours de Yann Fornier
Thèmes abordés

Mise en place de monitoring et de logging pour suivre les performances et la disponibilité des
services web

Les différents outils et techniques utilisées pour le monitoring et le logging des services web
Introduction

Le monitoring et le logging sont des pratiques clés pour assurer la disponibilité, la performance
et la sécurité des services web.

Monitoring Logging
Définition du Monitoring

Le monitoring est la surveillance continue d’un système ou d’une application pour détecter les
anomalies et les problèmes potentiels.

Dashboard

Charge de traitement Mémoire utilisée I/O disque

Problèmes
Epuisement de
Ralentissements Erreurs
ressource
Définition du Logging

Le logging est l’enregistrement de données sur l’état et les


activités d’un système.

Il permet de récupérer des informations sur les erreurs et les


anomalies qui se produisent, et de les utiliser pour résoudre
les problèmes, comprendre les tendances et identifier les
tendances à venir.

Les données de journalisation peuvent également être


utilisées pour répondre aux exigences réglementaires ou
pour la conformité.

Logging
Le monitoring

Les technologies de monitoring comme Datadog permettent aux administrateurs de systèmes


de surveiller les performances de leurs services web en temps réel, collecter des métriques et
des données de journalisation de leurs applications, et utiliser des alertes et des rapports pour
identifier les problèmes potentiels avant qu’ils ne causent des perturbations de service.

Dashboard

Logs Logs Logs


Logs
Exemple d’outil de Monitoring

Datadog
Les objets à monitorer

Bases de Services
Serveurs Web Charge réseau
données d’authentification

Disponibilité des
Nombre de connexions
applications IOPS Tokens
temps réel

Bande passante
Intégrité des données
Utilisation des utilisée
Sécurité
ressources
Tentatives d’accès non
Consommation de CPU autorisées
Consommation de RAM Erreurs de sécurité
connues
Utilisation du DD
Analyse des journaux
d’accès
Objectif du logging
Journalisation

Log (Adresse IP, heure de connexion, lieu, activité…)

Génère Log (Adresse IP, heure de connexion, lieu, activité…)


Service
Internet Log (Adresse IP, heure de connexion, lieu, activité…)

Log (Adresse IP, heure de connexion, lieu, activité…)

Analyse Préventive
Forensic
Détecter un comportement inhabituel sur
un SI et remonter le comportement pour “Police scientifique” Étude des logs pour
voir si c’est un faux positif ou un trouver des traces des pirates qui ont
évènement de cybersécurité organisé une attaque
Dualité monitoring/logging

Monitoring Logging

Dashboard

Performances des services web temps réel

Détection des problèmes potentiels

Exigences réglementaires et conformité

Admin systèmes
Sécurité des outils de monitoring
Il est important de noter que la sécurité de ces outils de monitoring et de logging doit être prise en
considération pour éviter les fuites de données ou les accès non autorisés aux données collectées. Il est
donc essentiel de mettre en place les protocoles de sécurité adéquats et de suivre régulièrement les
politiques de sécurité.

Couche de sécurité
Dashboard
API

API Logs Logs

API

API Logs Logs

API
Logging et monitoring en python

Python dispose d’une bibliothèque de journalisation intégrée appelée logging, qui permet de
générer des messages de journalisation de manière simple et efficace. Il est également possible
d’utiliser des bibliothèques de monitoring telles que psutil pour récupérer des informations sur
les performances et les ressources système.

logging (bibliothèque) psutil (bibliothèque) psutil (bibliothèque)

basicConfig virtual_memory cpu_percent

info total

warning used

error available
Journalisation de base

import logging

psutil (bibliothèque) [Link]fig(level=[Link],


format = ‘%(asctime)s %(levelname)s %(message)s’)
basicConfig
[Link](“Application started”)
info [Link](“A warning message”)
[Link](“An error occurred”)
warning

error
Monitoring de la mémoire utilisée

import psutil

psutil (bibliothèque) memory_info = psutil.virtual_memory()


print(“Total memory : ” , memory_info.total)
basicConfig print(“Used memory : ” , memory_info.used)
print(“Available memory : ” , memory_info.available)
info

warning

error
Monitoring de l’utilisation du processeur

import psutil
psutil (bibliothèque)
cpu_info = psutil.cpu_percent(interval=1)
cpu_percent
print(“CPU usage : ” , cpu_info)
Journalisation et monitoring combinés

import psutil
import logging

[Link]fig(level=[Link],
format = ‘%(asctime)s %(levelname)s %(message)s’)

[Link](“Application started”)

#Perform calculations
result = 0
for i in range (1, 101):
result += i
cpu_info = psutil.cpu_percent(interval = 1)
[Link](“CPU usage : %s”, cpu_info)

[Link](“Application finished”)
Journalisation et monitoring combinés

Il est important de noter que les exemples ci-dessus ne représentent qu’une petite partie des
fonctionnalités offertes par les bibliothèques de journalisation et de monitoring disponibles en
Python. Il est donc important de consulter la documentation de ces bibliothèques pour en savoir
plus sur les fonctionnalités.
Etude de cas : Les outils pour du monitoring et log
Etude de cas (30 minutes)

Groupe 1 Groupe 2
Grafana/Prometheus DataDog

Groupe 3 Groupe 4
PowerBI AWS CloudWatch
Grafana Tableaux de bord
interactifs
Dashboard personnalisé Grafana

Graphiques

Prometheus

InfluxDB
Ingestion temps réel
Graphite

Elasticsearch Données de performance

Format de données
Open source
Analyse de tendances
Visualisation de données Alertes temps réel

Monitoring Collaboration temps réel


Grafana
Équipe DevOps
Surveillance de l’infrastructure temps
réel
Dashboard personnalisé Grafana

Équipe Cybersécurité
Identification des problèmes de sécurité
temps réel

Équipe
Gestion de performance
Gestion des performances temps réel
Grafana et Prometheus

Source 1 Dashboard personnalisé Grafana


Data locale
agrégée

PromQL
Source 2 Prometheus (Prometheus Query Language)

Source 3 Collecte sous la forme de paire


clé-valeur
(Non relationnel)

Métriques
Indicateur de performance système
Ressources utilisées
Données d’application
Grafana et Prometheus
Ingestion de données (temps réel) Data Visualization

Source 1 Dashboard personnalisé Grafana


Data locale
agrégée

PromQL
Source 2 Prometheus (Prometheus Query Language)

Source 3 Collecte sous la forme de paire


clé-valeur
(Non relationnel)

Métriques
Indicateur de performance système
Ressources utilisées
Données d’application
Travaux pratiques : Création d’un dashboard
Grafana avec une source de donnée Prometheus

Objectif du TP : Réaliser le Lab sur Grafana

[Link]

Ajouter des sources de données

Créer un Dashboard

Réaliser un fichier pdf avec captures d’écran expliquant vos résultats.

Deadline de rendu : Mercredi 21 février 23h59

Format attendu : “TP_Grafana_NOM_PRENOM”

Adresse de rendu : [Link]@[Link]


Datadog

Datadog est une plateforme de surveillance complète

Collecte de métriques
Analyse de logs
Tracing d’applications
Alerting
Intégration avec des services Cloud

Grafana est davantage une plateforme de visualisation de données


Datadog Métriques stockées dans un
système distribué
Services Web Indicateur de performance système
Ressources utilisées
Données d’application
API Cloud

API AWS

API Azure

Google Cloud Platform


API

API
Alertes pour des Utilisation de
Erreurs
valeurs limites ressources anormales

Surveillance de Performance des


Analyse de journaux
l’infrastructure requêtes
Travaux pratiques : Création d’un APM
(Application Performance Monitoring) Datadog

Objectif du TP : Réaliser le Lab sur Datadog

[Link]

Réaliser un fichier pdf avec captures d’écran expliquant vos résultats.

Deadline de rendu : Mercredi 21 février 23h59

Format attendu : “TP_DATADOG_NOM_PRENOM”

Adresse de rendu : [Link]@[Link]


PowerBI

PowerBI est une suite d’outils


d’analyse commerciale développée par
Microsoft. Elle permet de faire de la
visualisation et de l’analyse de donnée
à partir de différentes sources.

Un dashboard PowerBI
PowerBI Modélisation de
données
PowerBI

Données
diverses
Création de
visualisations
Excel

Azure

Dynamics Analyse avancée


365

Services
Microsoft
Génération de
Modèles statistiques
rapports
AWS Cloudwatch

AWS Cloudwatch est la


plateforme de surveillance et de
gestion des performances
d’Amazon Web Services

Un dashboard CloudWatch
AWS CloudWatch
Cloud

Données
EC2
Données extérieures
extérieures S3

EC2
Autoscaling RDS
Données Données
extérieures extérieures
AWS CloudWatch
Cloud

Données
EC2
Données extérieures
extérieures S3

EC2
Autoscaling Pilotage automatisé RDS
Données Données
extérieures extérieures
L’écosystème du Cloud

Cloud

Cloud Computing Edge Computing Serverless Computing DevOps

Réseaux définis par Cybersécurité dans le Gestion des Big Data & Analytics
logiciel (SDN) cloud conteneurs dans le Cloud
Quantic Cloud Gestion des coûts
IA/ML DevSecOps
Computing dans le Cloud

Cloud Gaming Cloud IoT


Le Cloud Computing : Qu’est ce que c’est ?

Le Cloud Computing est un modèle de prestation de services informatiques via


internet.

Plutôt que d’avoir des serveurs, des stockages et des applications physiquement
présents sur site, les utilisateurs accèdent à ces ressources via des connexions
Internet à partir de fournisseurs de services cloud.

Le Cloud Computing est la livraison sur demande de puissance de


calcul, de bases de données, d’applications et diverses ressources
informatiques via Internet et dont le paiement de ses ressources
se fait à l’utilisation. (“pay-as-you-go”)
“Considérer l’infrastructure comme un logiciel”

Le Cloud Computing vous demande de considérer l’infrastructure physique comme une couche logicielle.
Le modèle classique informatique

Le modèle classique (ou “on-premise”) en


informatique demande pour fonctionner des solutions
physiques (serveurs, data centers..)

Les solutions physiques demandent notamment:

De la place, des équipes humaines, de la sécurité


physique, une gestion du temps et du capital.

Des cycles longs d’approvisionnement en


matériel.

Demande de prévoir du matériel en réserve en cas


de pic de capacité.
Modèle du Cloud Computing

L’infrastructure comme logiciel

Les solutions logicielles sont


flexibles, peuvent être modifiées
facilement, rapidement et sont plus
rentables que des solutions
matérielles.

Elles éliminent les solutions lourdes


qui ne font pas la différence.
Les modèles de service dans le CC
Le Cloud Computing se décline en plusieurs modèles de service

Cloud Computing

IaaS PaaS SaaS


Infrastructure as a Service Platform as a Service Software as a Service
Les modèles de service dans le CC
Les modèles de service dans le CC

Sur Site

On Premise (ou “Sur


Site” )

Rien dans le Cloud.

Tout est présent


dans l’entreprise.
Les modèles de service dans le CC
Infrastructure as a
Service
Sur Site
Il s’agit de la
fourniture
d’infrastructures
informatiques
virtuelles (machines
virtuelles, réseaux,
stockage)

Les utilisateurs
peuvent gérer ces
Dans le Cloud ressources de
manière flexible.
Exemple de IaaS
Les modèles de facturation des Cloud Providers

Calcul Stockage Transfert de données

Facturé par heure ou La donnée sortante est


Facturé par Go agrégée et facturée
seconde
Dépend du type La donnée entrante
d’instance est gratuite

Facturé par Go

inspiré du cours “Cloud Foundations”


Sur site vs Cloud
Infrastructure traditionnelle Cloud

Pas de dépenses Meilleurs délais de


Infrastructure RH initiales mise sur le marché

Contrats Coûts Scalabilité accrue Infrastructure


libre-service

inspiré du cours “Cloud Foundations”


Opérationnelle / Métier / Business

Infrastructure IT

Gagner sur le Coût Global de Possession (TCO en anglais : Total Cost of Ownership)
Qu’est ce que le TCO ?
Le TCO est une estimation financière qui permet de déterminer les coûts directs
et indirects d’une système.

On l’utilise notamment pour comparer le prix d’une infrastructure entièrement sur


site face à une infrastructure cloud.

On l’utilise également pour budgéter et construire les cas pratiques dans le cas
d’une migration dans le cloud.
Infrastructure IT
Hardware : Serveurs, châssis, Software : OS, Coût des installations
unités de distribution (PDU) , licences de
Coûts des serveurs top-of-rack (TOR) + virtualisation Espace Energie Refroidissement
maintenance + maintenance

Hardware : Disques de Coût des installations


Coûts
stockage, Zones de stockage
Coûts du stockage (SAN), Commutateur fibre
d’administration du
stockage Espace Energie Refroidissement
channel

Network Hardware : LAN, Coûts Coût des installations


Coûts des réseaux Load Balancer avec bande d’administration des
passante réseaux Espace Energie Refroidissement

Main d’oeuvre
“Administrer tout ce qu’il y a au dessus ..”
Informatique
Exemples de clients IaaS (AWS)
Les modèles de service dans le CC
Platform as a
Service

Le PaaS fournit une


plate-forme de
développement qui
inclut des outils, des
bibliothèques et des
services pour créer,
tester et déployer
des applications.
Dans le Cloud
L’objectif est d’
éliminer la gestion
de l’infrastructure
sous-jacente.
Exemple de PaaS
Les modèles de service dans le CC
Sur Site ou en Distanciel Software as a
Service

Le SaaS offre des


applications
logicielles complètes
accessibles via un
Dans le Cloud navigateur web.

Les utilisateurs n’ont


pas à se soucier de
l’infrastructure ou de
la maintenance
logicielle.
Le lecteur MP3
Télécharger de la musique sur Internet

La placer dans votre lecteur

Ecouter de la musique

Impossibilité d’écouter de la musique sans


l’avoir téléchargée.
Les solutions SaaS de streaming

Payer un abonnement mensuel pour avoir accès depuis toutes vos


plateformes à un catalogue de musique étendu
SaaS

“Service basé sur le Cloud où, au lieu de télécharger un logiciel sur votre PC de bureau où
votre réseau professionnel peut exécuter et mettre à jour, vous accédez à une application
via un navigateur internet.”

Oracle Cloud
Présentation des acteurs du Cloud

Les clients des entreprises (“end-users”) SaaS (B2B & B2C)

Les entreprises clientes PaaS

Les Cloud Providers IaaS


Le Cloud Computing : Les Cloud Providers
Parts de marché des
Cloud Providers
Orchestration et
Kubernetes

Un cours de Yann FORNIER


Présentation de l’orchestration

L’orchestration de conteneurs est le processus d’automatisation de la mise en réseau et de la


gestion de conteneurs pour déployer des applications à grande échelle. Les architectures de
microservices peuvent comporter des centaines voire des milliers de conteneurs au fur et à
mesure que les applications se développent.

Scalabilité

?
Automatisation du cycle de vie d’un conteneur

Les outils d'orchestration de conteneurs visent à simplifier la gestion des infrastructures de


conteneurs en automatisant leur cycle de vie complet, depuis le provisionnement et la planification
jusqu'au déploiement et à la suppression. Les entreprises peuvent bénéficier de la conteneurisation à
grande échelle sans avoir à encourir de frais de maintenance supplémentaires.

Provisionnement Planification Déploiement Suppression

Cycle de vie du conteneur


Pourquoi l’orchestration des conteneurs est
nécessaire ?

Les conteneurs sont devenus l'unité informatique standard pour les applications cloud natives.
Les fournisseurs de cloud proposent des instances de serveurs virtuels pour exécuter toutes
sortes de charges de travail informatiques et conviennent parfaitement aux charges de travail
basées sur des conteneurs. La seule exigence pour pouvoir exécuter des conteneurs est que le
serveur lui-même exécute un service de conteneurisation tel que Docker.

Le conteneur
Unité informatique standard
Cas d’utilisation de l’orchestration de conteneurs

Gestion et dimensionnement des conteneurs sur un certain nombre d’instances

Exécuter de nombreuses applications conteneurisées différentes

Exécuter simultanément différentes versions d’applications (test, prod, CI/CD)

Orchestration Garantir la continuité du service des applications

Exécuter plusieurs instances d’une application dans plusieurs régions géographiques


différentes

Optimiser l’utilisation de plusieurs instances de serveurs afin de réduire le coût global

Exécuter des applications complexes content des centaines de microservices différents


Introduction à Kubernetes

Kubernetes (ou K8s) est un système open-source permettant l’automatisation du déploiement,


la gestion et la scalabilité des applications conteneurisées. L’outil a été développé initialement
par Google et est maintenant maintenu par la CNCF (Cloud Native Computing Foundation).

Kubernetes offre une approche déclarative pour gérer les infrastructures de conteneurs,
rendant les systèmes plus robustes et flexibles à maintenir
Objets de Kubernetes

Les noeuds

Les pods

Les services
Les Noeuds de Kubernetes
Un Node est un serveur physique ou une VM du Cluster Kubernetes qui exécute des conteneurs.
Souvent, on ne gère pas les serveurs dans les Clouds publics, mais on doit gérer la taille du cluster,
les ressources allouées à chaque noeud et les interfaces réseaux.

Cluster

Worker Node

Ressources allouées
Master Node

Worker Node
Interfaces réseaux

Taille du Cluster (nombre de noeuds)


Zoom sur le Worker Node

Pour exécuter les


conteneurs

Worker Node

Container Runtime
Worker Node
Kube Proxy

Kubelet

Gère les Pods Gère les règles de réseau


pour permettre la
communication entre les
services
Zoom sur le Worker Node

Worker Node

Container Runtime
Worker Node

Kube Proxy
Container Runtime Pod Pod Pod
Kubelet
Kube Proxy

Kubelet
Zoom sur le Worker Node

Worker Node

Container Runtime
Worker Node

Kube Proxy
Container Runtime Pod Pod Pod
Kubelet
Kube Proxy

Kubelet

Les Pods sont les plus petites unités informatiques déployables


qui peuvent être créées et gérées dans Kubernetes
NB : “Pods” : “Groupe de baleines”
Zoom sur le Worker Node

Un Pod est une isolation logique d’un ou de plusieurs


conteneurs au seul noeud. Un pod peut contenir un ou Worker Node
plusieurs conteneurs

Container Runtime
Worker Node

Kube Proxy
Container Runtime Pod Pod Pod
Kubelet
Kube Proxy

Kubelet

NB : “Pods” : “Groupe de baleines”


Zoom sur le Worker Node

Worker Node

Container Runtime
Worker Node

Kube Proxy
Container Runtime Pod Pod Pod
Kubelet
Kube Proxy

Kubelet App

BDD
Entreprise gère :
Une application + une BDD

Client 1 Client 2 Client 3


NB : “Pods” : “Groupe de baleines”
Zoom sur le Worker Node
Volume
externe
(Cloud) Worker Node

Persistence des données


Container Runtime
Worker Node

Kube Proxy
Container Runtime Pod Pod Pod
Kubelet
Kube Proxy

Kubelet

Volume
Interne

NB : “Pods” : “Groupe de baleines”


Architecture de Kubernetes
Worker Node
Stockage
Persistent
Container Runtime
Pod Pod
Master Node

etd etd etd

Kube Proxy

Kubelet

Kube Cloud Worker Node


Utilisateur
Controller Managers
Kube Container Runtime
Développeur API Server Pod Pod

Kube
Scheduler
YAML
Kube Proxy

Kubelet
Architecture de Kubernetes
Worker Node
Stockage
Persistent
Container Runtime
Pod Pod
Master Node

etd etd etd

Kube Proxy

Kubelet

Kube Cloud Worker Node


Utilisateur
Controller Managers
Kube Container Runtime
Développeur API Server Pod Pod

Kube
Scheduler
YAML
Kube Proxy

Kubelet
Control Plane
Architecture de Kubernetes
Worker Node
Stockage
Persistent
Stocke les données de Container Runtime
configuration du cluster de
Pod Pod
manière distribuée
Master Node
Expose l’API Kubernetes etd etd etd
c’est l’interface principale
du système
Kube Proxy

Kubelet

Kube Cloud Worker Node


Utilisateur
Controller Managers
Kube Container Runtime
Développeur API Server Pod Pod

Kube
Scheduler
YAML
Supervise l’état du cluster Kube Proxy
et s’assure que l’état actuel
correspond à l’état désiré Kubelet
Attribue des Pods à des noeuds spécifiques
Control Plane en fonctions des ressources disponibles
Les services sur Kubernetes

Les services fournissent une couche d’abstraction qui englobe un ensemble de pods et permet
un trafic extérieur par des services d’équilibrage de charge et de découverte. Dans un cluster
K8s, chaque service représente potentiellement une application accessible depuis l’exterieur et
exécutée dans plusieurs pods sur un ou plusieurs noeuds. Une adresse IP est attachée à ce
service, permettant d’équilibrer le trafic parmi tous les pods du service.
Entreprise gère :
Les services de Kubernetes Une application + une BDD

Worker Node

Container Runtime

[Link] [Link] [Link]

Pod Pod Pod

Kubelet Kube Proxy

Client 1
Entreprise gère :
Les services de Kubernetes Une application + une BDD

Worker Node Worker Node

Container Runtime Container Runtime

[Link] [Link] [Link] [Link]

Pod Pod Pod Pod Pod Pod

Kubelet Kube Proxy Kubelet Kube Proxy

Client 1
TP : Installation et configuration d’un Cluster
Kubernetes en local via Minikube

Téléchargez et réalisez le TP noté “Installation et Configuration d’un Cluster Kubernetes sur


Windows” présent sur le GitHub de la classe :
[Link]
es_Windows.[Link]

Rendu : Rapport de TP au format PDF contenant des captures d’écran et des textes
d’explications concernant l’installation de Kubernetes.

Deadline : Dimanche 29 septembre 18h00

Adresse de rendu : [Link]@[Link]


Projet Docker+K8s à réaliser (en groupe de 3
personnes ou solo au choix)
Projet

Déployer une BDD (PostgreSQL ou MySQL) comme Pod


Déployer une application web (serveur NodeJS ou Django)
TP noté Docker TP Noté K8s Créer un service pour connecter l’application web à la BDD
Exposer l'application web à l'extérieur du cluster via un service de
type NodePort ou LoadBalancer

Date de présentation opérationnelle : Mardi 26 novembre 2024 : 16h15 - 18h15

Deadline du rendu du rapport de projet : Dimanche 24 novembre 2024

Format : PDF comprenant l’architecture déployée, la présentation des outils, exemples de code utilisés

Adresse de rendu : [Link]@[Link]


Introduction à l’Authentification

L'authentification est un processus permettant à un système informatique de s'assurer de la


légitimité de la demande d'accès faite par une entité (être humain ou un autre système) afin
d'autoriser son accès à des ressources du système (système d'exploitation, réseaux,
applications…) conformément au paramétrage du contrôle d'accès.

Le système attribue à cette entité les données d'identité pour une session d'accès (ces attributs
sont détenus par le système ou peuvent être fournis par l'entité lors du processus
d'authentification). À partir des éléments issus de ces deux processus, l'accès aux ressources du
système pourra être paramétré (contrôle d'accès).
Les types d’identifiants

Mot de passe

Empreintes digitales

Biométrie Reconnaissance faciale

Iris

Cartes à puce

Jetons
Méthodes d’authentification

Authentification
Authentification
Multifactorielle Biométrie
unique (SSO)
(MFA)
Concept de SSO (Single Sign-On)

Le concept de SSO, ou Single Sign-On (authentification unique en français), est une méthode
d'authentification qui permet à un utilisateur de se connecter une seule fois à un système et
d'accéder ensuite à plusieurs applications ou services sans avoir à se reconnecter à chaque fois.
L'idée principale derrière le SSO est de simplifier le processus d'authentification pour les
utilisateurs tout en renforçant la sécurité.
Concept de SSO (Single Sign-On)

Un système SSO est composé au minimum de 3 composants

Le serveur d’authentification L’agent d’authentification Les applications

L’authentification des Interface entre le Utilisées par les


utilisateurs serveur et l’application end-users

Vérifie que
Le maintien de l’utilisateur est Compatibles avec le
sessions authentifié sinon le SSO
redirige vers le
serveur
La propagation Interfaçables avec
d’identité entre les Plug-in intégré dans
l’agent
applications (souvent chaque application
d’authentification
par création de jeton)
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

Ordinateur Application

Etape 1 : Authentification initiale Centre


d’authentification
L’ordinateur demande l’accès à une
application par un utilisateur
Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

OUI
Ordinateur Application

Etape 2 : Vérification par l’agent NON Centre


d’authentification
L’agent d’authentification vérifie si
l’utilisateur est authentifié
Si oui : l’utilisateur accède directement Serveur
à l’application d’authentification BDD
Si non … users
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

Ordinateur Application

Etape 3 : Demande d’authentification Centre


d’authentification
L’agent demande au centre auprès du
serveur d’authentification
Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

Ordinateur Application

Etape 4 : Présentation et retour d’un Centre


formulaire d’authentification d’authentification

Le serveur demande l’identité de


l’utilisateur. Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

Ordinateur Application

Etape 5 : Vérification dans la base Centre


d’utilisateurs des données reçues d’authentification

Le serveur vérifie l’identité de


l’utilisateur dans sa BDD. Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?
Serveur applicatif
Cookie de session SSO Agent
d’authentification

Ordinateur Application

Etape 6 : Envoi d’un jeton


Centre
d’authentification à l’agent par le biais
de l’utilisateur
d’authentification

Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

Ordinateur Application

Etape 7 : L’agent autorise l’utilisateur Centre


à accéder à l’application d’authentification

Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?
Serveur applicatif
Agent
d’authentification

Ordinateur Application

Etape 8 : L’agent autorise l’utilisateur Centre


à accéder à l’application d’authentification

Serveur
d’authentification BDD
users
Comment fonctionne le SSO ?

Serveur applicatif

Application 1

Application 2

Cookie de session SSO Application 3


Agent
Ordinateur d’authentification
Application 4

Application 5

Application 6
Authentification MultiFactorielle

Facteurs d’authentification

Quelque chose

Que vous savez Que vous avez Que vous êtes

Authenticator Biométrie
Mots de passe
Clé physique (empreinte digitale,
Clé informatique
Carte à puce rétine..)
Implémentation et bonnes pratiques de la MFA

Utiliser des facteurs


multiples

Mot de passe Tokens SMS


Implémentation et bonnes pratiques de la MFA
Politiques de Activités
Chiffrement MdP suspectes

MaJ des infos Tentatives répétées


Anti Phishing d’identification d’authentification échouées
Analyser les
Sécuriser les
journaux
canaux de
d’identification Microsoft
communication
Authenticator

Bonnes pratiques Utiliser des


Google
Authenticator
Sauvegarde applications
pour les d’authentification
utilisateurs mobile FreeOTP
Codes de
récupération
OTP Auth
Méthodes
Contexte
alternatives Éduquer les Activer par
de
utilisateurs défaut
connexion
Sécurité des communications

Mettre en place des protocoles de sécurité pour protéger les communications internes et
externes, y compris le chiffrement des données en transit.

Entreprise
Chiffrement SSL/TLS

Chiffrement Data
In
Data Transit
At
Rest
Credentials

Client Serveur
Demande des ressources protégées

Demande un username et un password

Entre un
Encode et envoie les informations Valide les
username et
d’identification informations
un password

Si les informations sont valides


Renvoie les ressources
A FINIR
Clé SSH

Client SSH Serveur SSH


ID Clé publique
Clés autorisées
Demande un username et un password

Entre un
Encode et envoie les informations
username et
d’identification
un password

Si les informations sont valides


Renvoie les ressources
A FINIR
OAuth 2.0

Requête d’autorisation

Resource Owner
Octroi d’autorisation

Requête d’autorisation
Serveur
Client d'autorisation
Renvoie un token d’accès

Envoi du token d’accès


Serveur de
Envoie la ressource protégée ressource
Certificat SSL
3. Vérifie le certificat du serveur 5. Vérifie le certificat du client
Autorité de certification

1. Requête pour utiliser le service

2. Présente le certificat du serveur


Client Serveur

4. Présente le certificat du client

5. Invoque le service

Vous aimerez peut-être aussi