Cours pratique Cloud, Sécurité & Terraform. Chaque mini-projet déploie une brique d'infrastructure AWS sur LocalStack (Docker), sans compte cloud réel.
📂 Une version GCP parallèle existe dans
gcp/(BaaS + bucket sécurisé) — cible le vrai Google Cloud.
make up # LocalStack + déploie 6 projets (01-05 + 07)
make down # tout arrêterPré-requis : Docker + make. Le reste (Terraform, Python) tourne en conteneur.
| # | Projet | Dossier | Concept clé | Déployable en local ? |
|---|---|---|---|---|
| 01 | BaaS | racine | Backend managé (DynamoDB+S3+IAM) façon Firebase | ✅ |
| 02 | FaaS | 02-faas/ |
Serverless : Lambda + API Gateway | ✅ |
| 03 | IAM | 03-iam/ |
Moindre privilège, Deny explicite | ✅ |
| 04 | Stockage | 04-stockage/ |
Block (EBS) vs Object (S3) : perf & coûts | ✅ |
| 05 | Vulnérabilité S3 | 05-vulnerabilite/ |
Bucket troué → corrigé (red team) | ✅ |
| 06 | Scalabilité | 06-scaling/ |
Auto Scaling Group + alarmes | |
| 07 | Sécurité + PRA | 07-securite/ |
5 piliers + Plan de Reprise d'Activité | ✅ |
Chaque dossier a son README.md (théorie + commandes + limites + réflexe GCP).
- 01 BaaS → comprendre l'assemblage de services managés.
- 02 FaaS → la couche serverless + API (avec un front de démo dans
02-faas/front/). - 03 IAM → la sécurité des accès (le socle de tout le reste).
- 04 Stockage → l'arbitrage perf/coût.
- 05 Vulnérabilité → apprendre en attaquant.
- 06 Scalabilité → l'élasticité automatique.
- 07 Sécurité + PRA → la synthèse (défense en profondeur).
| Commande | Projet |
|---|---|
make aws-verify / make app-run |
01 BaaS |
make faas-test / make faas-url |
02 FaaS |
make iam-verify / make iam-policy |
03 IAM |
make benchmark / make storage-verify |
04 Stockage |
make s3-audit |
05 Vulnérabilité |
make scaling-validate |
06 Scalabilité |
make sec-verify |
07 Sécurité |
- BaaS vs FaaS : services gérés vs fonctions à la demande (zéro serveur).
- IAM : refuser par défaut, ouvrir au minimum, Deny > Allow.
- Stockage : Block = latence ultra-faible (BDD) ; Object = coût bas (fichiers).
- Sécurité S3 : bloquer l'accès public, chiffrer, forcer HTTPS, versioning.
- Scaling : Auto Scaling Group = disponibilité + élasticité automatiques.
- Défense en profondeur : IAM + KMS + réseau + logs + backup empilés.
- PRA : RPO (perte de données acceptable) / RTO (temps de reprise) ; un PRA non testé ne vaut rien.
| AWS | GCP |
|---|---|
| DynamoDB | Firestore / Datastore |
| S3 | Cloud Storage (GCS) |
| Lambda | Cloud Functions |
| API Gateway | API Gateway / Cloud Endpoints |
| IAM User + access key | Service Account + clé JSON |
| Policy JSON (Allow/Deny) | rôles (roles/*) via bindings |
| EBS | Persistent Disk |
| Public Access Block | Public Access Prevention |
| Auto Scaling Group | Managed Instance Group |
| KMS | Cloud KMS |
| Projet | Limite | Contournement |
|---|---|---|
| 03 | simulate-principal-policy non évalué |
make iam-policy montre la policy |
| 04 | EBS = mock (non benchmarkable) | mesure « block » sur fichier local |
| 05 | policies S3 non évaluées | audit sur la config stockée |
| 06 | Auto Scaling = Pro | terraform validate seulement |
| 07 | AWS Backup / lifecycle S3 / dashboard | variables enable_* (false en local) |
- LocalStack (
localstack/localstack:3.8.1, Community) dans un conteneurlocalstack-main. - Terraform (
hashicorp/terraform:1.8.5) et Python (python:3.11-slim) exécutés en conteneurs → rien à installer en local hormis Docker + make. - Une seule instance LocalStack partagée par tous les projets ; états Terraform séparés par dossier.
⚠️ LocalStack est éphémère : aprèsmake downou un redémarrage Docker, refairemake up.