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.
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 :
| Nom | Type | AZ | CIDR | Usage |
|---|---|---|---|---|
| public-1a | Public | us-east-1a | ? | ? |
| public-1b | Public | us-east-1b | ? | ? |
| private-app-1a | Privé | us-east-1a | ? | ? |
| private-app-1b | Privé | us-east-1b | ? | ? |
| private-db-1a | Privé | us-east-1a | ? | ? |
| private-db-1b | Privé | us-east-1b | ? | ? |
💡 Solution suggérée
| Nom | Type | AZ | CIDR | Usage |
|---|---|---|---|---|
| public-1a | Public | us-east-1a | 10.0.1.0/24 | ALB, NAT GW |
| public-1b | Public | us-east-1b | 10.0.2.0/24 | ALB, NAT GW |
| private-app-1a | Privé | us-east-1a | 10.0.11.0/24 | Serveurs App |
| private-app-1b | Privé | us-east-1b | 10.0.12.0/24 | Serveurs App |
| private-db-1a | Privé | us-east-1a | 10.0.21.0/24 | MySQL Master |
| private-db-1b | Privé | us-east-1b | 10.0.22.0/24 | MySQL Replica |
Étape 3 : Définir les Route Tables
Pour chaque type de subnet, définissez les routes :
Route Table Publique :
| Destination | Target |
|---|---|
| ? | ? |
| ? | ? |
Route Table Privée App (1a) :
| Destination | Target |
|---|---|
| ? | ? |
| ? | ? |
Route Table Privée DB :
| Destination | Target |
|---|---|
| ? | ? |
💡 Solution suggérée
Route Table Publique :
| Destination | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | igw-xxx |
Route Table Privée App (1a) :
| Destination | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | nat-1a |
Route Table Privée DB :
| Destination | Target |
|---|---|
| 10.0.0.0/16 | local |
| (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 :
- EC2 App envoie une requête vers Internet
- Le trafic suit la route 0.0.0.0/0 → NAT Gateway
- NAT Gateway traduit l'IP privée en IP publique (Elastic IP)
- Le trafic passe par l'IGW vers Internet
- 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é :
- Surface d'attaque réduite : Pas d'IP publique = pas d'accès direct
- Défense en profondeur : Même si un attaquant compromet l'app, il ne peut pas exfiltrer directement les données
- Conformité : Exigences PCI-DSS, HIPAA, etc.
- 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 :
-
Page de titre : Nom du projet, votre nom, date
-
Tableau d'adressage IP :
- VPC CIDR
- Tous les subnets avec leurs CIDR
-
Schéma d'architecture :
- Diagramme clair et lisible
- Légende des composants
-
Tables de routage :
- Une table par type de subnet
- Avec justifications
-
Analyse de sécurité :
- Quels composants sont exposés ?
- Comment sont protégés les autres ?
-
Analyse de disponibilité :
- Comment l'architecture gère une panne AZ ?
Critères d'Évaluation
| Critère | Points |
|---|---|
| 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