Aller au contenu principal

Lab : Conception d'un Schéma VPC

Objectif du Lab​

Dans ce lab, vous allez concevoir et documenter une architecture VPC complète sur papier ou avec un outil de diagramme. C'est un exercice fondamental car en entreprise, vous devrez toujours planifier avant de créer.

Compétence Clé

La capacité à dessiner et expliquer une architecture réseau est essentielle pour tout professionnel cloud.

Partie 1 : Scénario​

Contexte​

Vous êtes architecte cloud chez TechnoShop, une entreprise de e-commerce. On vous demande de concevoir l'infrastructure AWS pour leur nouvelle application.

Exigences​

┌─────────────────────────────────────────────────────────────┐
│ EXIGENCES TECHNOSHOP │
├─────────────────────────────────────────────────────────────┤
│ │
│ APPLICATION │
│ • Site web accessible depuis Internet │
│ • Serveurs d'application (API backend) │
│ • Base de données MySQL │
│ │
│ SÉCURITÉ │
│ • Base de données NON accessible depuis Internet │
│ • Serveurs d'application protégés │
│ • Seul le Load Balancer exposé à Internet │
│ │
│ DISPONIBILITÉ │
│ • Application disponible même si une AZ tombe │
│ • Minimum 2 zones de disponibilité │
│ │
│ RÉSEAU │
│ • Serveurs d'application doivent pouvoir télécharger │
│ des mises à jour depuis Internet │
│ │
└─────────────────────────────────────────────────────────────┘

Partie 2 : Exercice de Conception​

Étape 1 : Définir le CIDR du VPC​

Choisissez une plage d'adresses pour votre VPC :

Questions à vous poser :

  • Combien d'adresses IP avez-vous besoin ?
  • Quelle plage RFC 1918 utiliser ?
  • Quel préfixe CIDR choisir ?

Votre réponse :

VPC CIDR : ________________
Justification : ________________
💡 Solution suggérée
VPC CIDR : 10.0.0.0/16
Justification :
- 65,536 adresses = largement suffisant
- Plage 10.x.x.x = standard pour entreprises
- /16 permet de créer de nombreux subnets /24

Étape 2 : Planifier les Subnets​

Complétez le tableau suivant :

NomTypeAZCIDRUsage
public-1aPublicus-east-1a??
public-1bPublicus-east-1b??
private-app-1aPrivéus-east-1a??
private-app-1bPrivéus-east-1b??
private-db-1aPrivéus-east-1a??
private-db-1bPrivéus-east-1b??
💡 Solution suggérée
NomTypeAZCIDRUsage
public-1aPublicus-east-1a10.0.1.0/24ALB, NAT GW
public-1bPublicus-east-1b10.0.2.0/24ALB, NAT GW
private-app-1aPrivéus-east-1a10.0.11.0/24Serveurs App
private-app-1bPrivéus-east-1b10.0.12.0/24Serveurs App
private-db-1aPrivéus-east-1a10.0.21.0/24MySQL Master
private-db-1bPrivéus-east-1b10.0.22.0/24MySQL Replica

Étape 3 : Définir les Route Tables​

Pour chaque type de subnet, définissez les routes :

Route Table Publique :

DestinationTarget
??
??

Route Table Privée App (1a) :

DestinationTarget
??
??

Route Table Privée DB :

DestinationTarget
??
💡 Solution suggérée

Route Table Publique :

DestinationTarget
10.0.0.0/16local
0.0.0.0/0igw-xxx

Route Table Privée App (1a) :

DestinationTarget
10.0.0.0/16local
0.0.0.0/0nat-1a

Route Table Privée DB :

DestinationTarget
10.0.0.0/16local
(Pas de route Internet)-

Étape 4 : Dessiner l'Architecture​

Dessinez le schéma complet de l'architecture. Utilisez :

  • Draw.io (gratuit)
  • Lucidchart
  • Papier et crayon

Éléments à inclure :

  • VPC avec son CIDR
  • Tous les subnets avec leurs CIDR
  • Internet Gateway
  • NAT Gateways (où les placer ?)
  • Load Balancer (où le placer ?)
  • Instances EC2 (serveurs app)
  • Base de données
  • Flèches de trafic
💡 Schéma Solution
┌─────────────────────────────────────────────────────────────────────────┐
│ ARCHITECTURE TECHNOSHOP │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ INTERNET │
│ │ │
│ │ │
│ ┌──────▼──────┐ │
│ │ IGW │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────────────────────────────┼──────────────────────────────┐ │
│ │ VPC │ (10.0.0.0/16) │ │
│ │ │ │ │
│ │ ┌──────────────────────────┼────────────────────────────┐ │ │
│ │ │ │ │ │ │
│ │ │ ┌───────────────────────▼───────────────────────┐ │ │ │
│ │ │ │ APPLICATION LOAD BALANCER │ │ │ │
│ │ │ │ (alb-web) │ │ │ │
│ │ │ └───────────────────────┬───────────────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ┌─────────────────┐ │ ┌─────────────────┐ │ │ │
│ │ │ │ PUBLIC 1a │ │ │ PUBLIC 1b │ │ │ │
│ │ │ │ 10.0.1.0/24 │ │ │ 10.0.2.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌─────────────┐ │ │ │ ┌─────────────┐ │ │ │ │
│ │ │ │ │ NAT GW 1a │ │ │ │ │ NAT GW 1b │ │ │ │ │
│ │ │ │ └──────┬──────┘ │ │ │ └──────┬──────┘ │ │ │ │
│ │ │ └────────┼────────┘ │ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ └───────────┼──────────────┼──────────────┼──────────────┘ │ │
│ │ │ │ │ │ │
│ │ ┌───────────┼──────────────┼──────────────┼──────────────┐ │ │
│ │ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ │ ┌────────▼────────┐ │ │ │
│ │ │ │ PRIVATE APP 1a │◄────┴────►│ PRIVATE APP 1b │ │ │ │
│ │ │ │ 10.0.11.0/24 │ │ 10.0.12.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ EC2 App 1 │ │ │ │ EC2 App 2 │ │ │ │ │
│ │ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │ │ │
│ │ │ └────────┼────────┘ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ └───────────┼─────────────────────────────┼───────────────┘ │ │
│ │ │ │ │ │
│ │ ┌───────────┼─────────────────────────────┼───────────────┐ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ │ │
│ │ │ │ PRIVATE DB 1a │ │ PRIVATE DB 1b │ │ │ │
│ │ │ │ 10.0.21.0/24 │ │ 10.0.22.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ MySQL │◄────────────►│ │ MySQL │ │ │ │ │
│ │ │ │ │ Primary │ Réplication │ │ Standby │ │ │ │ │
│ │ │ │ └───────────┘ │ │ └───────────┘ │ │ │ │
│ │ │ └─────────────────┘ └─────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────────┘

Partie 3 : Questions d'Analyse​

Question 1 : Flux de Trafic​

Décrivez le chemin du trafic pour un utilisateur qui accède au site web :

Utilisateur → ? → ? → ? → Base de données
💡 Réponse
Utilisateur 
→ Internet
→ IGW
→ ALB (subnet public)
→ EC2 App (subnet privé app)
→ MySQL (subnet privé db)

Question 2 : Mise à Jour Logicielle​

Comment un serveur d'application peut-il télécharger une mise à jour depuis Internet ?

💡 Réponse

Le serveur d'application est dans un subnet privé. Il utilise le NAT Gateway :

  1. EC2 App envoie une requête vers Internet
  2. Le trafic suit la route 0.0.0.0/0 → NAT Gateway
  3. NAT Gateway traduit l'IP privée en IP publique (Elastic IP)
  4. Le trafic passe par l'IGW vers Internet
  5. La réponse revient par le même chemin

Question 3 : Panne AZ​

Que se passe-t-il si la zone us-east-1a tombe en panne ?

💡 Réponse

Impact :

  • EC2 App 1a : indisponible
  • NAT GW 1a : indisponible
  • MySQL Primary (si dans 1a) : bascule vers Standby

Ce qui continue de fonctionner :

  • ALB redirige vers EC2 App 1b
  • NAT GW 1b gère le trafic sortant de 1b
  • MySQL Standby prend le relais

Leçon : L'architecture multi-AZ assure la continuité de service.

Question 4 : Sécurité​

Pourquoi la base de données est-elle dans un subnet sans accès Internet ?

💡 Réponse

Raisons de sécurité :

  1. Surface d'attaque réduite : Pas d'IP publique = pas d'accès direct
  2. Défense en profondeur : Même si un attaquant compromet l'app, il ne peut pas exfiltrer directement les données
  3. Conformité : Exigences PCI-DSS, HIPAA, etc.
  4. Principe du moindre privilège : La DB n'a pas besoin d'Internet

Partie 4 : Livrable​

Créez un Document​

Produisez un document PDF ou Word contenant :

  1. Page de titre : Nom du projet, votre nom, date

  2. Tableau d'adressage IP :

    • VPC CIDR
    • Tous les subnets avec leurs CIDR
  3. Schéma d'architecture :

    • Diagramme clair et lisible
    • Légende des composants
  4. Tables de routage :

    • Une table par type de subnet
    • Avec justifications
  5. Analyse de sécurité :

    • Quels composants sont exposés ?
    • Comment sont protégés les autres ?
  6. Analyse de disponibilité :

    • Comment l'architecture gère une panne AZ ?

Critères d'Évaluation​

CritèrePoints
CIDR correct et justifié/10
Subnets bien planifiés/20
Routes correctes/20
Schéma clair et complet/25
Analyse sécurité/15
Analyse disponibilité/10
Total/100

Bonus : Commandes CLI​

Si vous voulez créer cette architecture avec LocalStack, voici les commandes :

# Créer le VPC
aws --endpoint-url=http://localhost:4566 ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=technoshop-vpc}]'

# Créer les subnets publics
aws --endpoint-url=http://localhost:4566 ec2 create-subnet \
--vpc-id vpc-xxx \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-1a}]'

# Créer l'Internet Gateway
aws --endpoint-url=http://localhost:4566 ec2 create-internet-gateway \
--tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=technoshop-igw}]'

# ... continuer avec les autres ressources

Résumé​

Ce lab vous a permis de :

  • ✅ Comprendre le processus de conception VPC
  • ✅ Planifier un adressage IP cohérent
  • ✅ Définir des tables de routage appropriées
  • ✅ Analyser la sécurité et la disponibilité
  • ✅ Documenter une architecture cloud

Prochaine semaine : Sécurité Réseau