đ AWS VPC (Virtual Private Cloud)
Guide complet IDEO-Lab : Réseau, CIDR, Subnets, Routage (IGW, NAT), Firewalls (SG, NACL) & Connectivité.
Concept : VPC (Le Réseau)
Votre "Data Center" virtuel (isolé) dans le cloud AWS (Régional).
VPC Réseau PrivéConcept : CIDR (Les IPs)
La "Plage d'IP" (ex: 10.0.0.0/16) de votre VPC. (Non-modifiable).
Concept : Subnets (Les Salles)
Les "sous-rĂ©seaux" (par AZ) (ex: 10.0.1.0/24) oĂč vivent les ressources (EC2, RDS).
Routage : Route Table (Le GPS)
Le "GPS" du Subnet. (Contient les rĂšgles : 0.0.0.0/0 -> ???).
AccĂšs : Internet Gateway (IGW)
La "Porte d'Internet" (Publique). Permet le trafic In/Out (Bidirectionnel).
IGW InternetAccĂšs : Public IP / Elastic IP
L'adresse "postale" publique (Statique/Fixe = EIP) de l'instance.
EIP IP PubliqueRoutage : Subnet Public
Un Subnet est "Public" si sa Route Table a une route 0.0.0.0/0 -> IGW.
Routage : Subnet Privé
Un Subnet est "Privé" s'il n'a pas de route vers l'IGW. (Isolé).
Subnet Privé SécuritéAccÚs : NAT Gateway (Sortie)
(Sortie Uniquement) Permet au Subnet Privé (ex: Lambda/RDS) d'aller sur Internet (Updates) (PaaS).
NAT Gateway Egress-OnlyFirewall 1 : Security Group (SG)
(Stateful) Pare-feu de l'Instance (ENI). (Liste d'autorisation "Allow").
Security Group StatefulFirewall 1 : RĂšgles SG (Source)
Autoriser Port 22 (Source: IP) ou Port 5432 (Source: sg-app).
Firewall : SG vs NACL (Focus)
(Crucial) Stateful (Instance) vs Stateless (Subnet).
Stateful StatelessFirewall 2 : Network ACL (NACL)
(Stateless) Pare-feu du Subnet. (Liste "Allow" + "Deny").
NACL StatelessFirewall 2 : RÚgles NACL (Numéros)
RĂšgles (100: Allow, 200: Deny). Lues dans l'ordre (la plus basse gagne).
Firewall 2 : PiĂšge (Stateless)
(Le PiĂšge) Doit autoriser le trafic Retour (Ports ĂphĂ©mĂšres 1024-65535).
Stateless Ephemeral PortsConnexion : VPC Peering (1:1)
Connecter 2 VPCs (ex: Prod <-> Dev). (Non-Transitif).
VPC Peering Non-TransitiveConnexion : Transit Gateway (Hub)
(Moderne) Le "Hub" (Cloud Router) pour connecter 1000s de VPCs (Transitif).
Transit Gateway (TGW) Hub-and-SpokeMonitoring : VPC Flow Logs
Logs (IP) de tout le trafic (Accepté/Rejeté) du VPC. (Pour Audit/Debug).
VPC Flow Logs AuditAccÚs Privé : Endpoint (Gateway)
(Gratuit) AccÚs (Privé) à S3/DynamoDB (via Route Table) (sans NAT/IGW).
Endpoint (Gateway) S3AccÚs Privé : Endpoint (Interface)
(Payant) AccÚs (Privé) à tout (Lambda, SQS, KMS...) (via ENI/IP Privée).
Endpoint (Interface) PrivateLinkAccĂšs (On-Premise) : VPN / DX
Connexion (Bureau/Data Center) -> VPC. (VPN = Internet, DX = Fibre privée).
Site-to-Site VPN Direct Connect (DX)10.1. Web App Public + Base de Données Privée (Architecture 3-Tiers)
C'est l'architecture "classique" (la plus courante) pour la sécurité et la haute disponibilité (HA).
(Internet) --> [IGW] --> [Route Table (Public)]
|
v
[ đ Subnet Public (AZ-A) ] [ đ Subnet Public (AZ-B) ]
| |
+-- [ âïž ALB (Node 1) ] +-- [ âïž ALB (Node 2) ]
| |
(Trafic Port 8080) |
v v
[ đ Subnet PrivĂ© (AZ-A) ] [ đ Subnet PrivĂ© (AZ-B) ] (Route -> NAT-A/B)
| |
+-- [ đ» EC2 App (ASG) ] +-- [ đ» EC2 App (ASG) ]
| |
(Trafic Port 5432) |
v v
[ đ Subnet IsolĂ© (AZ-A) ] [ đ Subnet IsolĂ© (AZ-B) ] (Route -> Locale)
| |
+-- [ đ RDS Master ] +-- [ đ RDS Standby ]
Composants Clés
- VPC : 1 VPC (ex:
10.0.0.0/16) - AZs : 2 (ou 3) AZs (pour la Haute Disponibilité).
- Subnets : 6 Subnets (Public-A, Public-B, Privé-App-A, Privé-App-B, Privé-Data-A, Privé-Data-B).
- Route Tables : 3 Tables de Routage (
rt-public(route vers IGW),rt-private-app(route vers NAT GW),rt-private-data(routelocaluniquement)). - Security Groups (Flux) :
sg-alb: Allow443(Source:0.0.0.0/0).sg-app: Allow8080(Source:sg-alb).sg-db: Allow5432(Source:sg-app).
10.2. Architecture EKS (Kubernetes) dans VPC
EKS (Elastic Kubernetes Service) a des exigences réseau spécifiques car il utilise le AWS VPC CNI (Container Network Interface).
Le Point ClĂ© (VPC CNI) : Chaque Pod (Conteneur K8s) obtient une IP PrivĂ©e (10.0.x.x) rĂ©elle, directement depuis le CIDR du Subnet oĂč tourne le NĆud (EC2).
Architecture (Data Plane)
- Control Plane (Master K8s) : Géré par AWS (dans un VPC AWS). Vous ne le voyez pas.
- Data Plane (Nodes) : Instances EC2 (Worker Nodes) qui tournent (généralement) dans des Subnets Privés (
subnet-private-app). - Ingress (Entrée) : Un ALB (Ingress Controller) ou NLB (Service Type=LoadBalancer) est provisionné dans les Subnets Publics pour router le trafic vers les Pods (via leurs IPs
10.0.x.x).
Conséquences & PiÚges (CIDR)
Ăpuisement (Exhaustion) des IPs : C'est le piĂšge n°1 de EKS.
- (Scénario) Vous utilisez un Subnet
/24(251 IPs). - Vous lancez 10 NĆuds (EC2) (ex:
m5.large). - Le CNI (par dĂ©faut) "rĂ©serve" 29 IPs (secondaires) sur chaque NĆud (EC2) (pour les Pods futurs).
- Calcul : 10 (NĆuds) * 29 (IPs/NĆud) = 290 IPs requises.
- Résultat : Le Subnet
/24(251 IPs) est saturĂ© (plein). Le 10Ăšme NĆud ne peut pas dĂ©marrer (Failed to allocate IP).
Bonne Pratique (EKS) : Toujours utiliser des Subnets trĂšs larges (ex: /20 (4091 IPs)) pour le Data Plane (NĆuds/Pods).
10.3. Architecture Serverless 100% Privée (VPC Endpoints)
Architecture "ZĂ©ro NAT Gateway" (ZĂ©ro coĂ»t NAT). Conçue pour une sĂ©curitĂ© maximale oĂč les Lambdas n'ont aucun accĂšs Internet (ni Entrant, ni Sortant).
(Client Interne / VPN)
|
v
[ đ Endpoint (Interface) API GW ] (IP PrivĂ©e: 10.0.1.50)
|
v
[ đ Subnet PrivĂ© (VPC) ]
|
+-- [ đ„ Lambda (Fonction) ] (IP PrivĂ©e: 10.0.1.x)
|
(Appel API 'dynamodb.put_item')
|
v
[ đȘ Endpoint (Gateway) DynamoDB ] (Route Table)
|
v
[ đŠ Service DynamoDB (Public) ] (AccĂšs via Backbone PrivĂ© AWS)
Composants Clés
- API Gateway (Privé) : L'API GW est configurée en mode "Private". La seule façon de l'appeler est via un VPC Endpoint (Interface) (
vpce-xxx) (créant une ENI/IP privée dans le VPC). - Lambda (VPC) : La fonction est attachée au Subnet Privé (
subnet-private-a). - Route Table (Privée) : La RT de
subnet-private-an'a AUCUNE route0.0.0.0/0(ni IGW, ni NAT). Elle est isolée. - Endpoint (Gateway) : Pour que la Lambda (dans son isolement) puisse parler à DynamoDB (un service public), on ajoute un Endpoint (Gateway) pour
dynamodbà la Route Table. - Endpoint (Interface) : Si la Lambda doit aussi lire un secret (Bonne Pratique), on ajoute un Endpoint (Interface) pour Secrets Manager (créant une ENI
10.0.1.x).
Résultat : 100% du trafic (API -> Lambda -> DynamoDB -> Secrets Manager) reste privé (sur le réseau AWS) et n'utilise jamais Internet (IGW/NAT).
10.4. Architecture Hybride (Peering & TGW)
Comment gérer la connectivité dans une organisation (multi-comptes).
Scénario 1 : "Mesh" (Peering) (Pour < 5 VPCs)
Simple à mettre en place, mais devient ingérable (N*(N-1)/2).
[VPC-Prod (10.0/16)] <-- (Peering 1) --> [VPC-Dev (10.1/16)]
| |
(Peering 3) ---------------------------+
|
[VPC-Shared (10.2/16)]
Scénario 2 : "Hub-and-Spoke" (TGW) (Standard > 5 VPCs)
Scalable, géré centralement, et transitif.
[VPC-Prod (10.0/16)] --<
[VPC-Dev (10.1/16)] ----<
[VPC-Shared (10.2/16)] --<--> [ đ Transit Gateway (TGW) (Compte "Network") ]
[VPC-Logs (10.3/16)] ---<
[VPC-OnPrem (VPN/DX)] --<
Configuration (Routage TGW)
La magie du TGW est que chaque "Spoke" (VPC) n'a besoin que d'une seule route (simplifiée) :
Route Table (de VPC-Prod) :
10.0.0.0/16->local(Mon VPC)0.0.0.0/0->nat-gw(Mon Internet)10.0.0.0/8->tgw-123...(Tout le reste du réseau "Interne" (10.x), envoie-le au TGW).
Le TGW (Hub) s'occupe ensuite (via sa "Route Table TGW") de router le trafic vers le bon "Spoke" (ex: 10.1.0.0/16 -> Attachment-VPC-Dev).
10.5. Architecture Sécurisée (Compliance : PCI, HIPAA)
Cette architecture (parfois appelée "VPC d'Inspection") est conçue pour forcer tout le trafic (Nord-Sud et Est-West) à passer par un pare-feu (Firewall) d'inspection L7 (ex: Palo Alto, Fortinet) pour une analyse DPI (Deep Packet Inspection).
Architecture (TGW + GWLB)
(Internet)
|
v
[IGW] -> [VPC "Ingress" (Public)] -> [ âïž Gateway Load Balancer (GWLB) ]
|
v
[ đĄïž Firewall Fleet (ASG Palo Alto) ]
|
v
[ đ Transit Gateway (TGW) ] <---------- (Trafic "Est-West" (VPC-A <-> VPC-B))
|
+---- [VPC-App-A (Privé)]
|
+---- [VPC-Data (Isolé)]
Composants Clés (Sécurité)
- VPC "Inspection" : Un VPC centralisé (séparé) dont le seul rÎle est d'héberger les appliances de sécurité (Firewalls).
- Gateway Load Balancer (GWLB) : Un Load Balancer (L3) spécial, conçu pour distribuer le trafic (de maniÚre transparente) à une flotte (ASG) de Firewalls (VMs).
- Transit Gateway (TGW) : Le TGW est configuré pour forcer le routage.
- Trafic Nord-Sud (Internet) :
IGW -> GWLB/Firewall -> TGW -> VPC-App. - Trafic Est-West (Inter-VPC) :
VPC-App-A -> TGW -> GWLB/Firewall -> TGW (re-route) -> VPC-App-B.
- Trafic Nord-Sud (Internet) :
- Comptes (AWS Orgs) : (Bonne Pratique)
Compte-Network(possÚde TGW, GWLB, VPC-Inspection).Compte-LogArchive(reçoit tous les VPC Flow Logs (chiffrés, S3 Object Lock)).Compte-Prod-App-A(possÚde VPC-App-A).
9.1. Organisation Multi-Compte (Dev / Staging / Prod)
La meilleure pratique de sécurité et de facturation n'est pas d'utiliser 1 seul compte AWS avec 3 VPCs (vpc-dev, vpc-prod...), mais d'utiliser 3 Comptes AWS distincts.
Raison : L'Isolation des Pannes (Blast Radius). Dans 1 seul compte, une erreur IAM (ex: un script de "Dev" qui supprime *) ou une limite de service (Quota API) peut détruire la Production.
| Approche | Isolation IAM | Isolation Facturation | Risque (Blast Radius) |
|---|---|---|---|
| 1 Compte / 3 VPCs (Mauvais) | Faible (PartagĂ©) | Faible (MĂ©langĂ©) | ĂlevĂ© (Une erreur Dev tue la Prod) |
| 3 Comptes / 1 VPC (par Compte) (Bon) | Total (Parfait) | Total (Parfait) | Faible (Isolé au compte Dev) |
(Configuration) : Les comptes sont gérés (facturation centralisée, gouvernance) via AWS Organizations. Le réseau est (ensuite) connecté via Transit Gateway (TGW) (cf. 5.4).
9.2. ModĂšle Landing Zone (AWS Control Tower)
Une "Landing Zone" est l'architecture (le "plan") d'un environnement AWS multi-comptes (9.1), sĂ©curisĂ©, standardisĂ© et prĂȘt Ă l'emploi (pour la production).
AWS Control Tower est le service (PaaS) qui automatise la création (le "déploiement") de cette Landing Zone (via CloudFormation, IAM, AWS Orgs...).
Composants Clés d'une Landing Zone (via Control Tower)
- AWS Organizations (Multi-Compte) : Crée (automatiquement) l'arborescence des comptes (OUs - Organizational Units) :
- OU=Core :
Compte-LogArchive(Centralise tous les logs (CloudTrail, VPC Flow Logs)),Compte-Audit(Sécurité). - OU=Workloads :
Compte-Dev,Compte-Prod...
- OU=Core :
- Gouvernance (Guardrails / SCP) : Applique des Service Control Policies (SCPs) (le "pare-feu" IAM de l'organisation).
- (Ex: RĂšgle "Preventive" : Interdit (Deny) Ă tous les comptes (mĂȘme Root) de dĂ©sactiver CloudTrail ou de rendre un bucket S3 public).
- Réseau Centralisé (Optionnel) : Provisionne (souvent) un Compte "Network" qui héberge le Transit Gateway (TGW) (5.4) et les NAT Gateways (3.2) partagés (optimisation des coûts (8.3)).
9.3. Choix des CIDR & Design Réseau (Planification)
(La décision la plus importante) : Vous ne pouvez pas modifier le CIDR (ex: 10.0.0.0/16) d'un VPC aprÚs sa création (sans le détruire et le recréer).
RÚgle 1 : Ne pas utiliser les CIDR "évidents"
(Mauvaise Pratique) : Ne jamais utiliser 192.168.0.0/16 ou 192.168.1.0/24 (utilisés par 99% des Box Internet/VPNs). Ne pas utiliser 172.31.0.0/16 (utilisé par le "Default VPC").
(Risque) : Chevauchement (Overlapping). Le jour oĂč vous connectez un VPN (Bureau/Maison) (qui utilise 192.168.1.0/24) Ă votre VPC (192.168.1.0/24) -> Ăchec total du routage.
RĂšgle 2 : Utiliser le bloc 10.0.0.0/8 (et planifier)
(Bonne Pratique) : Utiliser le bloc 10.x.x.x (RFC1918) et allouer des /16 (65k IPs) (mĂȘme s'ils sont "grands", ils ne coĂ»tent pas plus cher).
Exemple de Plan d'Adressage (IPAM) :
| Entité | CIDR Alloué | Overlap ? |
|---|---|---|
| Datacenter (On-Premise) | 10.0.0.0/16 | - |
| VPC (AWS Compte Prod) | 10.1.0.0/16 | OK |
| VPC (AWS Compte Dev) | 10.2.0.0/16 | OK |
| VPC (AWS Compte Staging) | 10.3.0.0/16 | OK |
(RĂ©sultat) : Aucun chevauchement. Tous ces rĂ©seaux peuvent ĂȘtre interconnectĂ©s (via TGW/Peering) sans conflit de routage.
9.4. Subdivision Logique (Subnets)
Une fois le CIDR du VPC (ex: 10.1.0.0/16) choisi (9.3), il faut le "découper" (subnet) intelligemment.
Architecture Multi-Tiers (Couches) & Multi-AZ
L'architecture standard (Bonne Pratique) utilise (au minimum) 6 Subnets (répartis sur 2 ou 3 AZs) pour isoler les "Tiers" (Couches) applicatifs.
Exemple (VPC 10.1.0.0/16) :
| Nom (Tier) | AZ | CIDR (Subnet) | Route Table (Cible 0/0) | Usage (Ressources) |
|---|---|---|---|---|
| Public-A | eu-west-3a | 10.1.1.0/24 | IGW | ALB, NAT Gateway (A) |
| Public-B | eu-west-3b | 10.1.2.0/24 | IGW | ALB, NAT Gateway (B) |
| App-A (Privé) | eu-west-3a | 10.1.10.0/24 | NAT-A | EC2 (App), Lambda (VPC) |
| App-B (Privé) | eu-west-3b | 10.1.11.0/24 | NAT-B | EC2 (App), Lambda (VPC) |
| Data-A (Isolé) | eu-west-3a | 10.1.20.0/24 | (Aucune) | RDS (Master), ElastiCache |
| Data-B (Isolé) | eu-west-3b | 10.1.21.0/24 | (Aucune) | RDS (Standby), ElastiCache |
(Flux Sécurisé) : (Internet) -> (Subnet-Public / ALB) -> (Subnet-App / EC2) -> (Subnet-Data / RDS).
9.5. Mise en Place dâun RĂ©seau Hybride SĂ©curisĂ©
Connecter votre VPC (AWS) Ă votre Datacenter (On-Premise).
Option 1 : Site-to-Site VPN (Standard)
- Comment : Tunnel IPSec (chiffré) passant sur Internet.
- Composants : (AWS) Virtual Private Gateway (VGW) (attaché au VPC) ou TGW. (On-Prem) Customer Gateway (CGW) (votre routeur/firewall).
- Redondance : AWS provisionne 2 Tunnels (vers 2 Endpoints AWS) par défaut (pour la HA).
- Routage : BGP (Dynamique) (recommandé) ou Statique.
- Usage : Standard, PME, Dev/Test, Backup de DX.
Option 2 : Direct Connect (DX) (Haute Performance)
- Comment : Connexion physique (Fibre Optique) privée (non-chiffrée) hors Internet.
- Composants : (On-Prem) Fibre (louée chez un Partenaire : Equinix, Orange...) vers un "Point de Présence (DX Location)" AWS. (AWS) Direct Connect Gateway.
- Vitesse : Garantie / Statique (1 Gbps, 10 Gbps...).
- Usage : Production, workloads (gros volumes, faible latence), migration BDD.
Exemple d'Architecture (DX + VPN Backup)
[ Datacenter (On-Prem) ]
| |
| (Fibre) | (Internet)
| (DX) | (VPN Backup)
| |
[ TGW (AWS) ] <-- (Route BGP (DX) Prio 100, Route BGP (VPN) Prio 200)
|
+---- [ VPC-Prod ]
+---- [ VPC-Dev ]
(Flux) : Le trafic (BGP) passe (normalement) par Direct Connect (Prio 100). Si la fibre (DX) tombe, BGP (automatiquement) bascule le trafic sur le VPN (Backup) (Prio 200).
8.1. ĂlĂ©ments Gratuits (Le "Plan" RĂ©seau)
La création et la configuration des composants logiques (virtuels) de votre réseau sont (presque toutes) gratuites. Vous payez pour l'utilisation (le trafic), pas pour la configuration.
| Composant (Gratuit) | Description |
|---|---|
| VPC (Virtual Private Cloud) | La "bulle" rĂ©seau (le conteneur) elle-mĂȘme est gratuite. |
| Subnets (Sous-réseaux) | Le découpage (ex: /24) de votre VPC est gratuit. |
| Route Tables (Tables de Routage) | La création des rÚgles (le "GPS") est gratuite. |
| Security Groups (SG) | Le pare-feu (Stateful) au niveau instance (ENI) est gratuit. |
| Network ACLs (NACL) | Le pare-feu (Stateless) au niveau Subnet est gratuit. |
| Internet Gateway (IGW) | La "porte" vers Internet est gratuite (pas de coût horaire). (Attention : Le Data Transfer (Sortant) qui passe par l'IGW est, lui, payant). |
| VPC Endpoint (Gateway) | L'accÚs privé (via Route Table) vers S3 et DynamoDB est gratuit. |
8.2. ĂlĂ©ments Payants (Les "Services" & le "Trafic")
Les coûts proviennent des services managés (PaaS) qui tournent "sur" le réseau, et du trafic (Data Transfer) qui le traverse.
Services Managés (Facturés $/Heure)
| Composant Payant | ModÚle de Coût | Risque FinOps |
|---|---|---|
| NAT Gateway | $/Heure (par GW) + $/GB (Data Processed) | TRĂS ĂLEVĂ. Le coĂ»t "Data Processed" ($0.05/GB) (ex: apt update, pip install, download S3) explose trĂšs vite. |
| VPC Endpoint (Interface) | $/Heure (par ENI/AZ) + $/GB (Data Processed) | ĂlevĂ©. (Moins cher que NAT GW, mais pas gratuit comme le Gateway Endpoint). |
| Transit Gateway (TGW) | $/Heure (par "Attachment" VPC) + $/GB (Data Processed) | ĂlevĂ© (pour les architectures complexes multi-comptes). |
| Site-to-Site VPN | $/Heure (par Connexion) + $/GB (Data Transfer Out) | Moyen. (Généralement moins cher que TGW/NAT). |
Trafic (Data Transfer) (Le Coût "Caché")
- (Gratuit) Trafic Entrant (Ingress) depuis Internet.
- (Gratuit) Trafic Interne (MĂME AZ) (ex: EC2-App (AZ-A) -> RDS-Master (AZ-A)).
- (PAYANT) Trafic Sortant (Egress) vers Internet (via IGW ou NAT). (Facturé
$0.09/GBaprĂšs le Free Tier). - (PAYANT - Le PiĂšge) Trafic Inter-AZ (Cross-AZ).
- (ex: EC2-App (AZ-A) -> RDS-Standby (AZ-B) (lors de Multi-AZ)).
- (Coûte
$0.01/GB(Entrant) +$0.01/GB(Sortant)).
8.3. Stratégies d'Optimisation (FinOps)
1. Minimiser le Trafic NAT Gateway (Le Tueur n°1)
Le coût $/GB (Data Processed) du NAT GW est votre principal ennemi. Chaque apt-get update, pip install, ou git pull (sur une EC2 privée) coûte de l'argent.
- Solution A (Endpoints) : Si le trafic est vers S3 ou DynamoDB, utilisez un VPC Endpoint (Gateway) (8.1). C'est GRATUIT et le trafic (S3) ne passe plus par le NAT.
- Solution B (Endpoints Interface) : Si le trafic est vers KMS, ECR, Secrets Manager, utilisez un VPC Endpoint (Interface) (8.2). C'est payant (
$/Heure), mais (souvent) moins cher que le$/GBdu NAT. - Solution C (Mirror) : Pour les patchs (
apt) ou libs (pypi,npm), déployez un proxy/mirror (ex: Artifactory, Nexus) dans le VPC (sur une EC2) pour mettre en cache les dépendances.
2. Centraliser la Sortie (Transit Gateway)
(Mauvaise Pratique) : Avoir 10 VPCs (Dev, Test, Prod,...) et déployer 10 NAT Gateways (HA Multi-AZ = 20-30 NAT GWs). (Coût horaire $/Heure massif).
(Bonne Pratique) :
- Créer 1 VPC "Egress" (Sortie) centralisé (qui contient 1 (ou 2 pour HA) NAT GW).
- Créer 1 Transit Gateway (TGW).
- Attacher les 10 VPCs (Dev, Test...) + le VPC "Egress" au TGW.
- Configurer le routage (
0.0.0.0/0) des 10 VPCs pour pointer vers le TGW, qui route vers le VPC "Egress" (NAT). - (Résultat) : 10 VPCs partagent 1 (ou 2) NAT GW.
3. Planifier les CIDR (Ăviter l'Overlap)
Si VPC-A (10.0.0.0/16) et VPC-B (10.0.0.0/16) (overlap) doivent communiquer :
(Mauvaise Solution) : Impossible de "Peerer". Il faut mettre des NATs des deux cÎtés pour masquer les IPs. (Complexe, coûteux, casse la performance).
(Bonne Solution) : Planifier (Ă l'avance) : VPC-A = 10.0.0.0/16, VPC-B = 10.1.0.0/16. (Permet un Peering (ou TGW) simple et gratuit).
7.1. Outils CloudWatch (Metrics, Logs, Alerts)
CloudWatch est l'outil de monitoring central. Pour le VPC, il monitore les services PaaS qui y sont attachĂ©s (pas les EC2 elles-mĂȘmes, qui ont leurs propres mĂ©triques).
CloudWatch Metrics (Métriques & Alertes)
Métriques clés à surveiller (et sur lesquelles créer des Alertes (Alarms)) :
- NAT Gateway :
ActiveConnections(si proche de la limite),BytesProcessed(Coûts FinOps),PacketsDropped(Surcharge/Blackhole). - VPN (Site-to-Site) :
TunnelState(Alarme si == 0 (Tunnel DOWN)).TunnelDataIn/Out(Trafic). - VPC Endpoints (Interface) :
BytesProcessed(Coûts FinOps),PacketsDropped.
CloudWatch Logs (Logs)
CloudWatch Logs est la destination (le "réceptacle") pour les VPC Flow Logs (7.2).
- Log Group :
/aws/vpc/flow-logs/vpc-123... - Outil d'Analyse : CloudWatch Logs Insights. Permet de "requĂȘter" (pseudo-SQL) les logs de flux (REJECT/ACCEPT) en temps rĂ©el pour dĂ©bugger un problĂšme (voir 7.2).
7.2. VPC Flow Logs (Analyse Réseau Détaillée)
Les "Flow Logs" sont un enregistrement (log) de tous les flux IP (métadonnées) qui tentent d'entrer ou de sortir de vos interfaces réseau (ENI), Subnets, ou du VPC entier.
Format du Log : (Compte, ENI, SrcIP, DstIP, SrcPort, DstPort, Protocole, Action, Status)
Débogage de Connexions (EC2 -> RDS)
ProblĂšme : Mon EC2-App (10.0.1.50) n'arrive pas (Timeout) Ă joindre RDS (10.0.10.100) sur le port 5432.
Analyse (via Logs Insights (7.1)) :
fields action, srcAddr, dstAddr, dstPort
| filter (srcAddr = '10.0.1.50' AND dstAddr = '10.0.10.100' AND dstPort = 5432)
Interprétation des Résultats (Action)
| Résultat (Action) | Signification (Le Coupable) |
|---|---|
REJECT | Le Pare-feu (Firewall) bloque. 1. (99% des cas) Le Security Group (SG) (sur RDS) n'a pas de rĂšgle ALLOW (Inbound, Port 5432) pour la Source (sg-app).2. (1% des cas) Une Network ACL (NACL) a une rĂšgle DENY explicite (ex: RĂšgle 100 Deny 10.0.1.50). |
ACCEPT | Le RĂ©seau (VPC) est OK ! Si le log dit ACCEPT (le paquet est passĂ©) mais que l'App (EC2) a quand mĂȘme un "Timeout" :1. Le problĂšme est dans l'OS (ex: iptables (Linux) ou Windows Firewall (sur l'EC2/RDS) bloque).2. Le service (ex: postgresql.service) n'est pas dĂ©marrĂ© (crashĂ©) sur l'instance RDS. |
| (Pas de Log) | ProblÚme de Routage (Route Table). (Le paquet n'est jamais arrivé à l'ENI de RDS). La Route Table de l'EC2 ( 10.0.1.50) n'a pas de route local (10.0.0.0/16) (trÚs rare). |
7.3. VPC Reachability Analyzer (Test de Chemin Statique)
C'est un outil de simulation (analyse statique). Il ne teste pas (Live) le réseau, il lit (analyse) vos configurations (SG, NACL, Routes, Peering...) pour prédire (mathématiquement) si un chemin est "joignable" (reachable).
Fonctionnement
Vous créez une "Analyse" :
- Source : ex: Instance
i-ec2-app(oueni-xxxx) - Destination : ex: Instance
i-rds-db(oueni-yyyy) - Port (Optionnel) :
TCP 5432
Résultat (Diagnostic)
AprÚs 30 secondes, l'outil répond :
Résultat 1 : Reachable (Joignable)
-> (L'outil trace le chemin complet (Route Table, SG In/Out, NACL In/Out) et confirme que tout est OK).
Résultat 2 : Not Reachable (Non Joignable)
-> (L'outil identifie le point de blocage exact) :
(Exemple de blocage SG)
"Analyse: Ăchec.
Composant: Security Group (sg-12345-db) (Attaché à eni-yyyy)
Cause: La rĂšgle Inbound (Entrante) ne contient pas de 'Allow' pour le Port 5432 (Source: sg-67890-app)."
(Exemple de blocage Routage)
"Analyse: Ăchec.
Composant: Route Table (rtb-abcde-private) (Attachée à subnet-app)
Cause: Aucune route trouvée pour la Destination 10.1.0.0/16 (VPC Peering)."
Usage : C'est le meilleur outil pour débugger (sans tcpdump) pourquoi 2 ressources ne communiquent pas.
7.4. Network Access Analyzer (Audit de Risque Global)
C'est un outil d'audit (Compliance) global, (basĂ© sur la mĂȘme technologie (Zelkova) que le Reachability Analyzer (7.3)).
Il ne teste pas (Source -> Dest) (1:1), il teste (Internet -> Toutes les Ressources) (N:N).
Question (Analyse)
Il répond à la question : "Dans tout mon compte AWS (tous VPCs, SGs, NACLs, Routes, IGWs...), quelles sont les ressources (privées) qui sont (potentiellement) accessibles involontairement depuis Internet ?"
Fonctionnement
- Vous définissez un "Network Access Scope" (ex: "Trouver tout accÚs (
0.0.0.0/0) Ă mes ressources (Type=RDS)"). - Vous lancez l'analyse.
- L'outil (analyse statique) calcule tous les chemins réseau possibles depuis l'IGW vers vos ressources.
Résultat (Findings / Constatations)
L'outil produit un rapport (Finding) pour chaque exposition involontaire trouvée :
(Exemple de Finding / Alerte) :
"Finding: AccĂšs Public (Port 3389/RDP)
Ressource: Instance EC2 (i-windows-server)
Chemin d'AccĂšs:
[Internet Gateway (igw-abc)]
-> [Route Table (rtb-public) (Route 0.0.0.0/0)]
-> [NACL (nacl-default) (Rule 100 Allow All)]
-> [Security Group (sg-temp-dev) (Rule Inbound Allow 3389 (Source: 0.0.0.0/0))]"
Usage : Outil indispensable (CIS, PCI) pour les Audits de Sécurité et pour trouver les "Shadow IT" (ex: un Dev qui ouvre RDP/SSH (Source: 0.0.0.0/0) "juste 5 minutes" et oublie).
7.5. Erreurs Courantes (Common Misconfigurations)
1. Mauvaises Routes (Routage)
- Erreur : Mettre une EC2/RDS (Privée) dans un Subnet Public (un Subnet dont la Route Table (2.4) pointe (
0.0.0.0/0) vers l'IGW).
Risque : Si quelqu'un (erreur) attache une EIP (3.5) à cette BDD, elle est exposée sur Internet. - Erreur : Oublier d'ajouter la route (
0.0.0.0/0->NAT GW) à la Route Table Privée.
SymptÎme : L'EC2 (Privée) ne peut pas faireapt-get update(Timeout).
2. Security Groups (SG) Trop Permissifs
- Erreur : (Admin)
sg-app(EC2) (Inbound:Allow 22(SSH) Source:0.0.0.0/0).
Risque : Attaques Brute Force (SSH) (depuis le monde entier).
Solution : Source:Mon_IP_Bureau/32(ou mieux : pas de SSH, utiliser SSM Session Manager). - Erreur : (Dev)
sg-db(RDS) (Inbound:Allow 5432Source:0.0.0.0/0).
Risque : Attaques Brute Force (BDD) (si RDS dans Subnet Public). - Erreur : (Dev)
sg-db(RDS) (Inbound:Allow 5432Source:10.0.0.0/16(VPC CIDR)).
Risque : Moins grave, mais (Violation Least Privilege) autorise l'EC2 "Marketing" (10.0.30.x) Ă scanner/attaquer la BDD (10.0.10.x).
Solution : Source:sg-app(ID du SG applicatif (6.2)).
3. CIDR Overlapping (Chevauchement)
- Erreur : Créer
VPC-A(10.0.0.0/16) etVPC-B(10.0.0.0/16).
Conséquence : Routage impossible. Vous ne pourrez jamais connecter (Peering (5.3)) ces 2 VPCs.
6.1. Concept de Défense en Profondeur (Layering)
La "DĂ©fense en profondeur" (Defense in Depth) est une stratĂ©gie de sĂ©curitĂ© qui consiste Ă appliquer plusieurs couches (layers) de contrĂŽles de sĂ©curitĂ©. Si une couche Ă©choue (ex: mauvaise configuration), la suivante est lĂ pour (potentiellement) arrĂȘter l'attaque.
Les Couches de Sécurité (Exemple de flux entrant)
| Couche | Service AWS | Niveau de Protection | Question Posée ? |
|---|---|---|---|
| Routage | Route Table (IGW/NAT) | Réseau (L3) | Le trafic Internet a-t-il (techniquement) une route pour atteindre ce Subnet ? (Si "Privé", la réponse est Non). |
| Subnet (Pare-feu 1) | Network ACL (NACL) | Réseau (L3/L4) - Stateless | Le trafic (IP/Port) est-il autorisé (Allow) (ou non bloqué (Deny)) à entrer dans ce Subnet ? |
| Instance (Pare-feu 2) | Security Group (SG) | Instance (L4) - Stateful | Le trafic (IP/Port/SG-ID) est-il autorisé (Allow) à entrer sur cette Instance (ENI) ? |
| Instance (OS) | OS (Linux/Windows) | OS (L4/L7) | Le pare-feu de l'OS (iptables, Windows Firewall) autorise-t-il ce trafic ? (Généralement désactivé sur AWS). |
| Application | IAM (RÎles) / Cognito | Applicatif (L7) | L'utilisateur (ou le RÎle) a-t-il les permissions (ex: s3:GetObject) pour exécuter cette action API ? |
6.2. Techniques "Least Privilege" (Moindre PrivilĂšge) pour SG
Le principe du "moindre privilÚge" (Least Privilege) signifie n'autoriser que ce qui est strictement nécessaire. Les SGs (Stateful, Allow-only) sont l'outil parfait pour cela.
Bonne Pratique : Référencer par SG-ID (pas par CIDR)
(Mauvaise Pratique) : Si sg-app (10.0.10.0/24) doit parler à sg-db (10.0.20.0/24), ne mettez pas (Source: 10.0.10.0/24) dans sg-db. (Si une EC2 "pirate" démarre dans 10.0.10.0/24, elle peut parler à la BDD).
(Bonne Pratique) : Utilisez l'ID du SG comme Source.
RĂšgle (Inbound) pour sg-db (RDS PostgreSQL) :
| Type | Port | Source | Description |
|---|---|---|---|
| PostgreSQL | 5432 | sg-app (L'ID du SG) | Autorise uniquement les instances portant l'étiquette sg-app. |
Réseau d'Administration Isolé (Bastion / Jump Host)
Ne jamais autoriser SSH (Port 22) ou RDP (Port 3389) (Source: 0.0.0.0/0) sur vos instances privées.
Architecture (Bastion) :
- 1.
sg-bastion(attaché à l'EC2 "Bastion" dans un Subnet Public)- Inbound : Allow
Port 22(Source:Mon_IP_Bureau/32)
- Inbound : Allow
- 2.
sg-app-prive(attaché à l'EC2 "App" dans un Subnet Privé)- Inbound : Allow
Port 22(Source:sg-bastion)
- Inbound : Allow
Flux : (Admin) -> SSH (sg-bastion) -> Rebond SSH (ssh -J ...) -> (sg-app-prive). (L'instance privée n'est jamais exposée).
6.3. NACL : Cas d'Usage (Quand l'utiliser ?)
Les SGs (6.2) (Stateful) sont plus faciles Ă gĂ©rer et devraient ĂȘtre votre outil principal. Les NACL (Stateless) sont un outil "brut" (niveau Subnet) utile pour des cas spĂ©cifiques.
Cas d'Usage 1 : Blacklisting (Liste Noire) Explicite
Vous subissez une attaque (ex: scan de ports) depuis une IP spécifique (1.2.3.4). Vous voulez la bloquer immédiatement (au niveau du Subnet) avant qu'elle n'atteigne vos SGs.
RĂšgle (Inbound) nacl-public :
| N° | Type | Port | Source | Allow/Deny |
|---|---|---|---|---|
| 100 | All Traffic | All | 1.2.3.4/32 | Deny |
| 200 | All Traffic | All | 0.0.0.0/0 | Allow |
| * (Défaut) | All Traffic | All | 0.0.0.0/0 | Deny |
(Flux) : Le trafic (1.2.3.4) "match" la RÚgle 100 (Deny) et est bloqué (drop). Le trafic (80.1.2.3) "match" la RÚgle 200 (Allow) et passe (au SG).
Cas d'Usage 2 : Protection Complémentaire (Subnet Privé)
Paranoïa (Bonne Pratique) : Votre subnet-db (isolé) ne doit jamais parler à Internet. Un admin (fatigué) pourrait (par erreur) attacher le mauvais SG ("Allow All") à la BDD RDS.
Le NACL (attaché au subnet-db) sert de "backstop" (garde-fou) en n'autorisant que le trafic local.
RĂšgle (Inbound/Outbound) nacl-db :
100: Allow(Source/Dest:10.0.0.0/16(VPC CIDR))*: Deny(Défaut)
(RĂ©sultat) : MĂȘme si le SG (de RDS) est Allow All (0.0.0.0/0), le NACL (du Subnet) bloquera tout trafic (REJECT) qui ne vient pas de 10.0.0.0/16.
6.4. VPC Flow Logs (Analyse & Détection)
C'est l'outil (optionnel) de Monitoring (Audit) réseau. Il capture (loggue) les métadonnées (IPs, Ports, Protocole, Paquets, Action) de tout le trafic IP (entrant/sortant) du VPC.
Destination : CloudWatch Logs ou S3
- CloudWatch Logs : (RecommandĂ© pour Debug) Permet d'utiliser CloudWatch Logs Insights (requĂȘtes "SQL-like") pour filtrer (en temps rĂ©el) le trafic.
- S3 (Format Parquet) : (Recommandé pour Archive/SIEM) Stockage long-terme (moins cher). Permet d'utiliser AWS Athena (SQL) pour des analyses complexes (ex: "Top Talkers" sur 3 mois).
Analyse (Détection des Anomalies)
Flow Logs est la source n°1 pour détecter les problÚmes de sécurité (visibilité).
Exemple 1 (Debug) : "Mon App (10.0.1.50) ne joint pas RDS (10.0.2.100:5432)"
RequĂȘte (Logs Insights) :
fields @timestamp, srcAddr, dstAddr, dstPort, action, logStatus
| filter (srcAddr = '10.0.1.50' and dstAddr = '10.0.2.100')
| sort @timestamp desc
Résultat : ... 10.0.1.50 10.0.2.100 5432 REJECT OK
Analyse : REJECT = C'est le Security Group (SG) qui bloque (Défaut Deny). (Si REJECT venait d'une NACL, le logStatus serait DENY).
Exemple 2 (SIEM) : "Détecter un Scan de Port"
RequĂȘte (Athena/SIEM) :
-- (Trouver les IPs sources qui ont le plus de "REJECTs" (SG) ou "DENYs" (NACL))
SELECT srcAddr, count(*) AS Rejects
FROM vpc_flow_logs
WHERE action = 'REJECT'
GROUP BY srcAddr
ORDER BY Rejects DESC
LIMIT 10;
6.5. DNS & Réseau Interne (Route 53 Resolver)
Le DNS (Domain Name System) est un composant critique du VPC, géré (automatiquement) par Route 53 Resolver.
Le DNS "Magique" (.2) (AmazonProvidedDNS)
Par défaut (DHCP (3.4)), chaque instance (EC2/Lambda) dans votre VPC (CIDR 10.0.0.0/16) est configurée pour utiliser le serveur DNS 10.0.0.2.
Ce "Resolver" (.2) est "Split-Horizon" (intelligent) :
- 1. Résolution Publique : (
ping google.com) ->.2-> (Résout IP Publique). - 2. Résolution Privée (Noms EC2) : (
ping ip-10-0-1-50.eu-west-3...) ->.2-> (Résout IP Privée10.0.1.50).
Isolation DNS (Route 53 Private Hosted Zones)
Vous pouvez (via Route 53) créer une zone DNS (ex: mon-app.interne) et l'attacher à votre VPC.
Résultat : Seules les instances dans ce VPC peuvent résoudre ces noms.
- (EC2-App)
ping db.mon-app.interne-> (Resolver.2) -> (Résout IP Privée10.0.10.100(le RDS)). - (PC Bureau)
ping db.mon-app.interne-> (Erreur DNSNXDOMAIN) (La zone n'existe pas sur Internet).
Réseau Hybride (Resolver Endpoints)
Si vous avez un VPN/DX (3.6) vers On-Premise (ex: Active Directory (AD) Ă 192.168.1.10).
- Endpoint INBOUND : (IP
10.0.x.x) Permet Ă votre AD (On-Prem) de "forwarder" (transfĂ©rer) les requĂȘtes (.internal) au Resolver (VPC) (.2). - Endpoint OUTBOUND : (IP
10.0.x.x) Permet Ă votre Resolver (VPC) (.2) de "forwarder" (transfĂ©rer) les requĂȘtes (.mon-entreprise.local) Ă votre AD (On-Prem).
5.1. Routage Interne (Communication Inter-Subnets)
Comment les ressources (EC2, RDS...) communiquent-elles Ă l'intĂ©rieur du mĂȘme VPC ?
La RĂšgle Implicite (Route "locale")
Chaque Table de Routage (Route Table) de votre VPC (qu'elle soit publique ou privée) contient une rÚgle "locale" immuable (que vous ne pouvez pas supprimer).
# (Exemple : VPC CIDR = 10.0.0.0/16)
Destination: 10.0.0.0/16
Target: local
RÎle de cette rÚgle : Elle indique que "Tout trafic destiné à une IP à l'intérieur de ce VPC (10.0.x.x) doit rester local (ne pas partir vers l'IGW ou le NAT)".
Communication Inter-Subnets
GrĂące Ă cette route local, un Subnet PrivĂ© (10.0.10.0/24) et un Subnet Public (10.0.1.0/24) (dans le mĂȘme VPC) peuvent communiquer entre eux directement (en utilisant leurs IPs privĂ©es).
Le PiÚge (Ce qui bloque) : Si la communication (ex: EC2-App (Privé) -> RDS (Privé)) échoue, ce n'est (presque) jamais un problÚme de Routage (la route local existe). C'est (à 99%) un problÚme de Pare-feu :
- 1. Security Group (SG) : Le SG de la cible (RDS) n'autorise pas (Inbound) le port
5432depuis la Source (le SG de l'App). - 2. Network ACL (NACL) : Une NACL (sur le Subnet cible ou source) bloque (Deny) explicitement le trafic.
5.2. Routage vers Internet (Sortie)
Cas 1 : Via Internet Gateway (IGW) (Subnets Publics)
Pour les ressources (ex: Load Balancer, Bastion) qui doivent ĂȘtre bidirectionnelles (Entrant + Sortant).
- Composant : Internet Gateway (IGW) (attaché au VPC).
- Ressource : Doit avoir une IP Publique (ou EIP).
- Route Table (Publique) : Doit avoir la "route par défaut" :
Destination: 0.0.0.0/0
Target: igw-12345...
Cas 2 : Via NAT Gateway (Subnets Privés)
Pour les ressources (ex: EC2-App, Lambda) qui doivent (uniquement) sortir (Egress) sur Internet (ex: apt-get update, API Stripe), mais jamais ĂȘtre jointes (Ingress) depuis Internet.
- Composant : NAT Gateway (PaaS) (placé dans un Subnet Public).
- Ressource : N'a (et ne doit avoir) aucune IP Publique.
- Route Table (Privée) : Doit avoir la "route par défaut" :
Destination: 0.0.0.0/0
Target: nat-12345...
5.3. VPC Peering (Connexion 1:1)
Le VPC Peering est une connexion rĂ©seau 1-pour-1 (point-Ă -point) qui permet de router le trafic entre deux VPCs (en utilisant leurs IPs privĂ©es), comme s'ils Ă©taient sur le mĂȘme rĂ©seau.
Cas d'Usage Typiques
- Connecter
VPC-Prod(10.0.0.0/16) etVPC-Dev(10.1.0.0/16). - Connecter votre
VPC-ProdauVPC-Partenaire(Cross-Account).
Pré-requis : Les plages CIDR des 2 VPCs ne doivent pas se chevaucher (overlap).
Limitations : Le "Transitive Routing" (Interdit)
Le PiĂšge : Le Peering n'est PAS transitif. (Pas de "saut" de routage).
Scénario :
(VPC-A) <--- (Peering 1) ---> (VPC-B) <--- (Peering 2) ---> (VPC-C)
- (A) peut parler Ă (B).
- (C) peut parler Ă (B).
- (A) NE PEUT PAS parler Ă (C) (en "passant par" B).
Conséquence : Si vous avez 10 VPCs, vous devez créer 45 connexions de peering (n*(n-1)/2) (c'est le "mesh" (maillage) ingérable).
5.4. Transit Gateway (TGW) - Le Hub Réseau
Le TGW est la solution (PaaS, scalable) au problÚme du Peering (5.3). C'est un Routeur Cloud (Hub) managé par AWS.
ModĂšle "Hub-and-Spoke" (Ătoile)
Au lieu de connecter 10 VPCs (Spokes) entre eux (45 peerings), vous connectez les 10 VPCs 1 seule fois (10 "Attachments") au TGW (Hub).
(VPC-A) ---<
(VPC-B) ---<
(VPC-C) ---<---> [ đ Transit Gateway (HUB) ] <---> (VPN/DX On-Premise)
(VPC-D) ---<
(VPC-E) ---<
Avantages vs VPC Peering
- Routage Transitif : OUI. (A) peut parler Ă (C) (en passant par le TGW, qui route le trafic).
- ScalabilitĂ© (Simplification) : ExtrĂȘme. (Pour ajouter
VPC-F, il suffit de l'attacher 1 fois au TGW). - Multi-Compte (RAM) : Vous pouvez créer 1 TGW (Compte Réseau) et le partager (via RAM) avec 100 autres comptes (Comptes Applicatifs) de votre AWS Organization.
- Point Central (Hybride) : Le TGW sert aussi de "hub" pour attacher vos connexions VPN (3.6) ou Direct Connect (3.6) On-Premise.
5.5. AWS PrivateLink (VPC Endpoint Services)
PrivateLink est différent du Peering/TGW. Il ne connecte pas 2 réseaux. Il publie (expose) 1 Service (Applicatif) privé d'un VPC (Provider) vers un autre VPC (Consumer), sans routage, sans overlap, sans IGW/NAT.
Architecture (Provider / Consumer)
1. CÎté "Provider" (VPC-A : 10.0.0.0/16) (Vous, le "SaaS")
- Vous avez une API (EC2) (IP Privée
10.0.1.50). - Vous placez un Network Load Balancer (NLB) (privé) devant.
- Vous créez un "Endpoint Service" (PrivateLink) et vous le liez au NLB.
- Vous "Whitelistez" (Autorisez) l'ID du Compte AWS du "Consumer".
2. CÎté "Consumer" (VPC-B : 10.0.0.0/16) (Votre Client)
- (Note : Le CIDR (10.0...) chevauche (overlap) celui du Provider !).
- Votre client crée un "Endpoint (Interface)" vers votre "Endpoint Service".
- (AWS) Place une ENI (Carte Réseau) (avec une IP Privée
10.0.80.10) dans le Subnet du client.
Résultat (Magique)
- Le Client (Consumer) (dans VPC-B) fait un appel API vers
10.0.80.10(son IP locale). - AWS (via PrivateLink) "téléporte" (encapsule) ce trafic (via le backbone AWS privé) vers le NLB (Provider) (dans VPC-A).
Avantages : Sécurité Maximale (Unidirectionnel, pas de routage), Aucun conflit d'IP (Overlap OK), Pas d'IGW/NAT/Peering.
3.1. Internet Gateway (IGW)
L'IGW est la "porte d'entrée/sortie" (virtuelle, PaaS) qui connecte votre VPC (privé) à Internet (Public).
RĂŽle (Bidirectionnel)
- Entrant (Ingress) : Permet à Internet de joindre vos ressources (via une IP Publique/EIP). L'IGW effectue la traduction DNAT (Destination NAT) (IP Publique -> IP Privée).
- Sortant (Egress) : Permet à vos ressources (avec IP Publique/EIP) de joindre Internet. L'IGW effectue la traduction SNAT (Source NAT) (IP Privée -> IP Publique).
Comment rendre un Subnet "Public" ?
Un Subnet devient "Public" (capable d'aller sur Internet) si (et seulement si) sa Table de Routage (Route Table) associée contient la "route par défaut" :
# (Dans la Route Table du Subnet Public)
Destination: 0.0.0.0/0 (Tout le trafic "inconnu" / Internet)
Target: igw-12345... (L'ID de l'IGW attaché au VPC)
Une ressource (EC2) dans ce Subnet Public a Ă©galement besoin d'une Adresse IP Publique (ĂphĂ©mĂšre ou Elastic IP) pour utiliser cette route.
3.2. NAT Gateway (AccĂšs Sortant Uniquement)
Le NAT Gateway est un service (PaaS) qui permet aux ressources (EC2, Lambda...) dans un Subnet Privé (isolé) d'initier des connexions sortantes vers Internet (ex: apt-get update, git pull, appel API externe), tout en bloquant les connexions entrantes (initiées depuis Internet).
Configuration (Routage)
- Vous placez le NAT Gateway (PaaS) dans un Subnet Public (il a besoin d'une EIP).
- Vous modifiez la Route Table du Subnet Privé.
# (Dans la Route Table du Subnet PRIVĂ)
Destination: 0.0.0.0/0
Target: nat-12345... (L'ID du NAT Gateway)
NAT Gateway (PaaS) vs NAT Instance (IaaS)
| CritÚre | NAT Gateway (Recommandé) | NAT Instance (Legacy) |
|---|---|---|
| Gestion | Managé par AWS (PaaS). Pas de patching. | Géré par Vous (IaaS). (C'est une EC2). |
| Redondance (HA) | Redondant (HA) au sein d'1 AZ. | Single Point of Failure (Sauf script custom). |
| Bande Passante | Scale automatiquement (jusqu'à 45 Gbps). | Limitée par le Type d'Instance (ex: t3.micro). |
| Coût | Payant ($/Heure + $/GB traité) (Cher). | Payant ($/Heure EC2) (Moins cher). |
| Sécurité (SG) | Ne peut pas avoir de Security Group. | Peut (doit) avoir un Security Group. |
(HA Multi-AZ) : Pour une vraie résilience, vous devez provisionner 1 NAT Gateway par AZ (nat-a, nat-b...) et configurer les Route Tables (privées) de chaque AZ pour qu'elles utilisent leur NAT GW local (évite les frais de trafic Inter-AZ).
3.3. VPC Endpoints (AccÚs Privé aux Services AWS)
ProblÚme : Une EC2 (dans un Subnet Privé) doit appeler l'API de S3 ou de Secrets Manager. Ces API sont (par défaut) publiques (sur Internet).
Solution (Lente/ChĂšre) : Ajouter un NAT Gateway (3.2) (payant) pour que l'EC2 puisse sortir sur Internet et re-rentrer chez AWS.
Solution (Moderne/Sécurisée) : Utiliser un VPC Endpoint. Le trafic ne quitte jamais le réseau privé d'AWS.
Types d'Endpoints
| Type | Services | Comment ? (Technologie) | Coût |
|---|---|---|---|
| Gateway (Passerelle) | S3 & DynamoDB (Seulement) | (Routage) AWS ajoute une route dans votre Route Table (Dest: pl-xxx (S3) -> Target: vpce-xxx). | Gratuit |
| Interface (PrivateLink) | Tous les autres services (SQS, SNS, KMS, Secrets Manager, Lambda, API GW, etc...) (Et aussi S3/DynamoDB). | (DNS) AWS place une ENI (Carte Réseau) avec une IP Privée (10.0.x.x) dans votre Subnet. | Payant ($/Heure + $/GB traité) |
Avantages : Sécurité (le trafic ne va pas sur Internet), Performance (latence plus faible), Coût (économise les frais de Data Processing du NAT GW).
3.4. DHCP Options Set
Le "DHCP Options Set" est un ensemble de configurations réseau (DHCP) que votre VPC (et son serveur DNS) "pousse" (distribue) à toutes les instances (EC2, etc.) qui démarrent à l'intérieur.
Configuration (Défaut vs Custom)
Quand vous créez un VPC, AWS lui attache un "DHCP Options Set" par défaut :
domain-name-servers:AmazonProvidedDNS. C'est le serveur DNS magique d'AWS (situé à l'IP.2de votre CIDR, ex:10.0.0.2). Il résout les noms publics (google.com) et les noms privés (ip-10-0-1-50.eu-west-3.compute.internal).domain-name:eu-west-3.compute.internal(Suffixe DNS).ntp-servers: Amazon Time Sync Service (Serveur de temps).
Cas d'Usage (Custom)
Vous créez un "DHCP Options Set" custom si vous avez un réseau hybride (3.6) (ex: VPN vers On-Premise) et que vous avez besoin que vos EC2 (Cloud) :
- Utilisent votre Propre Serveur DNS (On-Premise) (ex: un Active Directory Ă
192.168.1.10) pour résoudreserveur-interne.mon-entreprise.local. - (Dans ce cas, vous créez un Set avec
domain-name-servers = 192.168.1.10, AmazonProvidedDNS).
3.5. Elastic IP (EIP)
Une Adresse IP Ălastique (EIP) est une adresse IPv4 publique statique (fixe) que vous "allouez" (rĂ©servez) dans votre compte AWS.
IP Publique (ĂphĂ©mĂšre) vs Elastic IP (Statique)
- IP Publique (Auto-assign) : (ĂphĂ©mĂšre) AssignĂ©e au dĂ©marrage (Start) de l'EC2. Perdue (libĂ©rĂ©e) Ă l'arrĂȘt (Stop). (ProblĂšme pour les DNS).
- Elastic IP (Statique) : (Fixe) Vous l'associez (manuellement) Ă l'EC2. Elle survit Ă l'arrĂȘt (Stop), au redĂ©marrage (Reboot), et mĂȘme Ă la suppression (Terminate) (elle redevient "non-associĂ©e").
Cas d'Usage
- 1. NAT Gateway (3.2) : (Obligatoire) Un NAT Gateway nécessite 1 EIP pour fonctionner (c'est son IP de sortie fixe).
- 2. Serveur (Legacy) Statique : (ex: Un Bastion (hĂŽte SSH) ou un vieux serveur (S)FTP) dont l'IP doit ĂȘtre fixe (pour ĂȘtre mise en "Whitelist" (liste blanche) chez un partenaire).
Bonnes Pratiques (Limiter au maximum)
(Anti-Pattern) : N'utilisez jamais d'EIPs pour vos serveurs Web (Frontend). (Ce n'est pas scalable et ce n'est pas "Haute Disponibilité" (HA)).
(Bonne Pratique) : Mettez vos serveurs Web (EC2) dans un Subnet Privé (sans EIP), et placez un Application Load Balancer (ALB) (qui, lui, a une IP publique/DNS) dans le Subnet Public (devant).
(PiÚge de Coût) : Une EIP est GRATUITE si elle est attachée à une instance EC2 Running. Une EIP non-attachée (ou attachée à une instance Stopped) est facturée (cher) (pour éviter la pénurie d'IPv4).
3.6. Réseaux Hybrides (VPN & Direct Connect)
Ce sont les 2 méthodes (Réseau Hybride) pour connecter votre Data Center (Bureau / On-Premise) (ex: 192.168.1.0/24) à votre VPC (AWS) (ex: 10.0.0.0/16).
1. Site-to-Site VPN (Connexion Chiffrée)
- Transport : Internet (Public).
- Technologie : IPSec (Tunnel chiffré).
- AWS (Hub) : Virtual Private Gateway (VGW) (Legacy) ou Transit Gateway (TGW) (Moderne).
- On-Premise (Hub) : Customer Gateway (CGW) (Routeur/Firewall (Cisco, Fortinet...)).
- Vitesse : Limitée (ex: ~1.25 Gbps). Dépend de votre FAI (Internet).
- Coût : Faible (Payé $/Heure (Connexion VPN) + Data Transfer).
- Usage : Dev/Test, PME, Backups, Redondance (Backup) de Direct Connect.
2. AWS Direct Connect (DX) (Connexion Privée)
- Transport : Fibre Optique (Privée) (Dédiée). (Vous (via Partenaire: Equinix, Orange...) tirez une fibre de votre DC (On-Prem) vers un "DX Location" (Point de Présence AWS)).
- Technologie : VLANs (802.1q). (Non chiffrĂ© par dĂ©faut, car privĂ©. Peut ĂȘtre combinĂ© avec VPN (IPSec) pour chiffrement).
- Vitesse : Garantie (Dédiée : 1 Gbps, 10 Gbps, 100 Gbps).
- Latence : TrĂšs basse, stable (pas d'Internet).
- CoĂ»t : ĂlevĂ© (FacturĂ© au Port/Heure (ex: 10Gbps = $2.20/h) + CoĂ»t OpĂ©rateur (Equinix)).
- Usage : Production (Gros volumes), migration BDD (Oracle), workloads sensibles (latence).
Routage BGP
Les deux (VPN et DX) utilisent BGP (Border Gateway Protocol) (Dynamique) ou (Routes Statiques) pour échanger (annoncer) les routes entre AWS et On-Premise. (ex: Le routeur On-Prem annonce "Je possÚde 192.168.1.0/24" au VGW/TGW).
2.1. CIDR & Plages d'Adresses Privées (RFC1918)
Le CIDR (Classless Inter-Domain Routing) est la "plage d'IP" que vous réservez pour votre VPC. Vous devez choisir parmi les plages d'adresses privées (RFC1918) pour éviter les conflits avec Internet.
10.0.0.0/8(10.0.0.0 à 10.255.255.255) - (Recommandé pour AWS)172.16.0.0/12(172.16.0.0 à 172.31.255.255) - (Utilisé par le "VPC par Défaut")192.168.0.0/16(192.168.0.0 à 192.168.255.255) - (Souvent utilisé On-Premise/Box)
Format (10.0.0.0/16)
10.0.0.0: L'adresse de départ du réseau./16: Le "Masque de sous-réseau". Il définit la taille. (Plus le/Xest petit, plus le VPC est grand).
Bonnes Pratiques de Sélection (Taille)
Erreur de débutant : Ne jamais utiliser un /24 (256 IPs) pour un VPC de production. Vous serez à court d'IPs (épuisement) trÚs rapidement (EC2, Lambda, ALB, RDS, Endpoints...).
| CIDR (Taille VPC) | Nombre d'IPs Total | Recommandation |
|---|---|---|
/16 (ex: 10.0.0.0/16) | 65 536 IPs | (Recommandé) Flexibilité maximale. Ne coûte pas plus cher. |
/20 (ex: 10.0.0.0/20) | 4 096 IPs | Acceptable pour des projets PME. |
/24 (ex: 10.0.0.0/24) | 256 IPs | (Trop petit) Uniquement pour des tests/labs temporaires. |
Attention (Overlap) : Assurez-vous que votre CIDR VPC (ex: 10.0.0.0/16) ne chevauche (overlap) pas le CIDR de votre réseau d'entreprise (On-Premise) (ex: 10.1.0.0/16). Si c'est le cas, vous ne pourrez jamais les connecter (VPN/Peering).
2.2. Subnets (Sous-réseaux)
Un Subnet est une "tranche" (partition) du CIDR de votre VPC. C'est la "salle" (dans votre Datacenter VPC) oĂč vous placez vos ressources (EC2, RDS...).
RĂšgle Fondamentale : Un Subnet "vit" entiĂšrement dans 1 seule Availability Zone (AZ).
Subnet Public vs Privé vs Isolé
La distinction (Public/PrivĂ©) ne dĂ©pend pas du Subnet lui-mĂȘme, mais de la Route Table (2.4) qui lui est attachĂ©e.
- 1. Subnet Public : La Route Table a une route
0.0.0.0/0(Internet) vers un Internet Gateway (IGW).- Usage : Ressources qui doivent ĂȘtre jointes depuis Internet (Load Balancers (ALB), Bastions SSH, NAT Gateways).
- 2. Subnet Privé (NAT) : La Route Table n'a pas de route vers l'IGW. Elle a (généralement) une route
0.0.0.0/0vers un NAT Gateway.- Usage : Ressources qui ne doivent pas ĂȘtre jointes depuis Internet, mais qui doivent accĂ©der Ă Internet (Sortie) (pour
apt update, APIs externes, etc.). (Ex: EC2 (Web App), Lambda (VPC)).
- Usage : Ressources qui ne doivent pas ĂȘtre jointes depuis Internet, mais qui doivent accĂ©der Ă Internet (Sortie) (pour
- 3. Subnet Isolé (Privé) : La Route Table n'a pas de route vers IGW ni NAT GW. (Seule la route
localexiste).- Usage : Sécurité maximale. Ressources qui ne doivent jamais voir Internet (ni Entrée, ni Sortie). (Ex: Bases de données RDS, ElastiCache). (Utilise des VPC Endpoints (privés) pour parler aux API AWS).
Bonne Construction (Haute Disponibilité - HA)
Pour la résilience (2.3), une architecture de production doit (au minimum) utiliser 2 AZs.
Exemple (VPC 10.0.0.0/16) :
subnet-public-a(AZ-a) :10.0.1.0/24subnet-public-b(AZ-b) :10.0.2.0/24subnet-private-a(AZ-a) :10.0.10.0/24subnet-private-b(AZ-b) :10.0.11.0/24
2.3. Availability Zones (AZ) & Résilience
Définition : Qu'est-ce qu'une AZ ?
Une Availability Zone (AZ) est (au minimum) un Datacenter (physique, bùtiment) complet, avec sa propre alimentation, son propre refroidissement, et son propre réseau (fibre). Les AZs (d'une Région) sont séparées (ex: 10-100km) pour résister aux pannes (incendie, inondation, coupure électrique...).
Pourquoi répartir les Subnets (2.2) ?
Pour la Haute Disponibilité (HA) / Tolérance aux pannes.
Scénario d'Architecture Multi-AZ
Mauvaise Architecture (Single-AZ) :
ALB(Load Balancer) -> (danssubnet-public-a)EC2-App1,EC2-App2-> (danssubnet-private-a)- Panne : Si l'AZ-a (Datacenter) prend feu -> 100% de l'application (ALB + EC2s) est HORS LIGNE.
Bonne Architecture (Multi-AZ) :
ALB-> (activé sursubnet-public-aETsubnet-public-b)EC2-App1-> (danssubnet-private-a(AZ-a))EC2-App2-> (danssubnet-private-b(AZ-b))- Panne : Si l'AZ-a prend feu -> (
EC2-App1est mort). - Résultat : L'ALB (qui tourne toujours en AZ-b) détecte la panne (Health Check) et envoie 100% du trafic (automatiquement) vers
EC2-App2(en AZ-b). - (Downtime : Zéro).
2.4. Route Tables (Le "GPS" du Subnet)
La Route Table (RT) est le routeur virtuel (le "GPS") qui est attachĂ© Ă un Subnet (2.2). Elle dĂ©termine oĂč envoyer le trafic rĂ©seau.
La Route "Locale" (Immuable)
Toute RT (mĂȘme vide) contient toujours 1 route (immuable) :
Destination: 10.0.0.0/16 (Le CIDR du VPC)
Target: local
RÎle : Permet à toutes les ressources (EC2, RDS...) dans le VPC de se parler (communication interne), peu importe leur Subnet (Public ou Privé).
Exemples de Tables (Publique vs Privée)
Exemple : rt-public (Table de Route Publique)
| Destination (OĂč va le trafic ?) | Target (Cible / Par oĂč ?) |
|---|---|
10.0.0.0/16 (VPC local) | local |
0.0.0.0/0 (Tout Internet) | igw-123... (Internet Gateway) |
Exemple : rt-private (Table de Route Privée)
| Destination | Target |
|---|---|
10.0.0.0/16 (VPC local) | local |
0.0.0.0/0 (Tout Internet) | nat-456... (NAT Gateway) |
192.168.0.0/16 (On-Premise) | vgw-789... (VPN Gateway) |
pl-aaa... (PrefixList S3) | vpce-bbb... (VPC Endpoint S3) |
2.5. Network ACL (NACL) - Le Pare-feu "Stateless"
C'est le pare-feu (optionnel) qui opĂšre au niveau du Subnet (2.2). Il filtre tout le trafic (entrant/sortant) du Subnet.
Caractéristiques Clés (Stateless)
- Niveau : Subnet. (Le "garde" à l'entrée du bùtiment).
- RĂšgles :
AllowETDeny. (Utile pour "blacklister" (Deny) une IP d'attaquant). - Ăvaluation : Par NumĂ©ro (ex: 100, 200...). La 1Ăšre rĂšgle qui "match" gagne.
- Ătat : STATELESS (AmnĂ©sique).
- (Le PiĂšge) Si vous autorisez (Inbound) le Port
80(HTTP), vous devez aussi autoriser (Outbound) les ports "éphémÚres" (1024-65535) (le trafic de réponse).
- (Le PiĂšge) Si vous autorisez (Inbound) le Port
Exemple RĂšgle (Inbound)
| N° | Type | Port | Source | Allow/Deny |
|---|---|---|---|---|
| 100 | All Traffic | All | 1.2.3.4/32 (IP Attaquant) | Deny |
| 200 | SSH (22) | 22 | 80.1.2.3/32 (Mon IP) | Allow |
| * (Défaut) | All Traffic | All | 0.0.0.0/0 | Deny |
(Bonne Pratique) : Les NACL (par défaut) autorisent tout. Il est (souvent) recommandé de les laisser ainsi, et de gérer 99% de la sécurité via les Security Groups (2.6) (qui sont Stateful et plus faciles à gérer).
2.6. Security Groups (SG) - Le Pare-feu "Stateful"
C'est le pare-feu principal (le plus important) qui opĂšre au niveau de l'Instance (ENI) (ex: EC2, RDS).
Caractéristiques Clés (Stateful)
- Niveau : Instance (ENI). (La "porte" du bureau).
- RĂšgles :
Allowuniquement. - Défaut :
Deny All(Tout est bloquĂ©, sauf ce qui est autorisĂ© (Whitelist)). - Ătat : STATEFUL (Contextuel).
- (La Force) Si vous autorisez (Inbound) le Port
80, le trafic de réponse (Outbound) (sur port éphémÚre) est automatiquement autorisé (le SG "se souvient" de la connexion).
- (La Force) Si vous autorisez (Inbound) le Port
Bonnes Pratiques (Segmenter par Service)
Ne pas créer 1 "gros" SG (sg-prod) qui autorise (Inbound) 80, 443, 22, 5432, 3306...
(Segmenter) :
sg-alb(Load Balancer) :- Inbound : Allow
80,443(Source:0.0.0.0/0)
- Inbound : Allow
sg-app(EC2/Django) :- Inbound : Allow
80(Source:sg-alb), Allow22(Source:MyIP)
- Inbound : Allow
sg-db(RDS/Postgres) :- Inbound : Allow
5432(Source:sg-app)
- Inbound : Allow
(RĂšgle d'Or) : Toujours utiliser des ID de SG (sg-xxxx) comme Source (plutĂŽt que des IPs/CIDR) pour lier les services (ex: App -> DB).
Définition : Réseau Virtuel Isolé
Un VPC (Virtual Private Cloud) est votre centre de données (datacenter) privé et isolé au sein d'une Région AWS (ex: Paris).
C'est le fondement réseau sur lequel vous provisionnez (lancez) vos ressources. Par défaut, un VPC est complÚtement isolé d'Internet et des autres VPCs, offrant une sécurité maximale.
ParallÚle avec un Datacenter Privé (On-Premise)
| Concept Datacenter (On-Premise) | Concept AWS VPC (Cloud) |
|---|---|
| Le Bùtiment (ex: DC-Paris) | VPC (Ressource Régionale, ex: eu-west-3) |
Plan d'adressage IP (ex: 10.0.0.0/16) | VPC CIDR (Bloc d'IPs privées) |
| Une "Salle" ou un "Rack" (ex: Rack A-01) | Subnet (Sous-réseau dans 1 AZ, ex: 10.0.1.0/24) |
| Le Routeur (Cisco) | Route Table (Le "GPS" du Subnet) |
| La Connexion Internet (Fibre) | Internet Gateway (IGW) (La "Porte" vers Internet) |
| Le Firewall (Palo Alto / Fortinet) | Security Groups (SG) & Network ACLs (NACL) |
Ressources Contenues (Qui vit dans le VPC ?)
Les ressources suivantes sont (ou peuvent ĂȘtre) lancĂ©es "dans" votre VPC (elles reçoivent une IP privĂ©e 10.0.x.x) :
- Compute : Instances EC2, Auto Scaling Groups (ASG)
- Bases de Données : RDS (Postgres, MySQL...), Aurora, ElastiCache (Redis, Memcached)
- Réseau : Elastic Load Balancers (ALB / NLB), NAT Gateways, Endpoints (Interface)
- Serverless (Mode VPC) : Fonctions Lambda (si elles doivent accéder à RDS)
- Stockage (Fichier) : EFS (Elastic File System) Mount Targets
1. ContrÎle Total du Réseau
Vous (et non AWS) définissez l'architecture réseau de A à Z :
- Adressage IP (CIDR) : Vous choisissez vos plages d'IP privées (ex:
10.0.0.0/16) pour éviter les conflits (overlap) avec votre réseau d'entreprise (On-Premise). - Sous-réseaux (Subnets) : Vous décidez de la taille et de la topologie (ex:
/24par AZ). - Routage (Route Tables) : Vous contrĂŽlez exactement comment le trafic circule (ex: ce Subnet va sur Internet (via IGW), cet autre va sur le NAT, cet autre va au VPN).
2. Sécurité Renforcée & Isolation (Firewalling)
Par défaut, un VPC (custom) est une "boßte noire" (Deny All). Vous utilisez des pare-feux (gratuits) pour ouvrir (en Whitelist) ce qui est nécessaire :
- Security Groups (SG) : Le pare-feu Stateful (intelligent) au niveau de l'instance (EC2/RDS). (ex: "Autoriser Port 80 depuis l'ALB").
- Network ACLs (NACL) : Le pare-feu Stateless (brut) au niveau du Subnet. (ex: "Bloquer (Deny) cette IP d'attaquant (
1.2.3.4/32) pour tout le Subnet").
3. Architecture Multi-Tiers (Multi-Tier)
C'est le cas d'usage standard. Isoler vos "couches" applicatives pour la sécurité "Zero Trust".
(Internet)
|
v
[ đ Subnet Public (eu-west-3a) ] (Route -> IGW)
|
+-- [ âïž Application Load Balancer (ALB) ]
|
(Trafic Port 80/443)
|
v
[ đ Subnet PrivĂ© (eu-west-3a) ] (Route -> NAT GW)
|
+-- [ đ» EC2 Web Server (Django/Node.js) ]
| (Security Group 'sg-app' : Autorise Port 80 depuis 'sg-alb')
|
(Trafic Port 5432)
|
v
[ đ Subnet PrivĂ© "Data" (eu-west-3a) ] (Route -> NAT GW)
|
+-- [ đ RDS Database (PostgreSQL) ]
(Security Group 'sg-db' : Autorise Port 5432 depuis 'sg-app')
Résultat : La base de données (RDS) est inaccessible depuis Internet. Seul le serveur (sg-app) peut lui parler.
Services "Dans" le VPC (Ressources privées)
Ces services dépendent du VPC pour leur isolation et leur adressage IP :
- EC2 (Compute) : Le service de base. Vit dans un Subnet.
- RDS / ElastiCache (Bases de données) : Vivent dans un "DB Subnet Group" (un ensemble de Subnets privés).
- ELB (Load Balancing) : L'ALB/NLB est placé dans des Subnets (généralement Publics).
- EFS (Stockage Fichier) : Place des "Mount Targets" (ENI) dans vos Subnets.
- Lambda (Mode VPC) : Place des "Hyperplane ENI" (cartes réseau) dans vos Subnets pour accéder à RDS/ElastiCache.
Services "Autour" du VPC (Services de gestion)
Ces services (souvent Globaux ou Régionaux) interagissent avec le VPC :
- IAM (Sécurité) : (Global) GÚre les permissions. (ex: "Qui a le droit de modifier le VPC ?", "Quel RÎle l'EC2 (dans le VPC) peut-elle assumer ?").
- CloudWatch (Monitoring) : (Régional) Observe le VPC. (ex: Métriques (CPU/RAM) des EC2/RDS, Métriques du NAT GW (Trafic), et surtout VPC Flow Logs (logs de tout le trafic IP)).
- Route 53 (DNS) : (Global/Régional) Résout les noms.
- Public Hosted Zone : (ex:
monsite.com->IP Publique de l'ALB). - Private Hosted Zone : (DNS privé interne au VPC) (ex:
db.prod.local->10.0.10.50(IP Privée RDS)).
- Public Hosted Zone : (ex:
Services "Externes" (Services AWS Publics)
Ces services (Régionaux) vivent sur le réseau public d'AWS, en dehors de votre VPC.
- S3, DynamoDB, SQS, SNS, Secrets Manager...
- (AccÚs) : Par défaut, une EC2 (dans un Subnet Privé) doit passer par un NAT Gateway (payant) pour les appeler (via Internet).
- (AccÚs Privé) : La "Bonne Pratique" est d'utiliser des VPC Endpoints (Gateway ou Interface) pour y accéder via le réseau privé d'AWS (sans NAT/IGW).
Le VPC est le fondement du réseau sur AWS. C'est votre Data Center virtuel (privé et isolé) dans une Région AWS (ex: eu-west-3 Paris).
C'est une "bulle" (barriÚre logique) qui contient toutes vos ressources (EC2, RDS, Lambda...). Par défaut, un VPC est 100% privé et isolé d'Internet et des autres VPCs.
VPC par Défaut (Default VPC)
AWS crée (automatiquement) 1 "VPC par Défaut" dans chaque Région (pour les débutants).
- CIDR :
172.31.0.0/16. - Configuration : (Non-sécurisé) Tous les Subnets (par défaut) sont Publics (3.1). (Ils ont un IGW (2.2) et les EC2 ont une IP Publique).
- Bonne Pratique (Prod) : Ne pas utiliser le VPC par Défaut pour la production. Créer un VPC "Custom" (personnalisé) (ex:
10.0.0.0/16) pour un contrĂŽle total.
CIDR (Classless Inter-Domain Routing) est la "plage d'IP" (privée) que vous allouez à votre VPC (ex: 10.0.0.0/16).
(Important) : Le CIDR d'un VPC (ex: 10.0.0.0/16) ne peut pas ĂȘtre modifiĂ© aprĂšs sa crĂ©ation.
Choisir son CIDR (Notation)
Le /X (suffixe) définit la "taille" du réseau (Nombre d'IPs). (Plus /X est petit, plus le réseau (VPC) est grand).
| CIDR (Taille VPC) | Nombre d'IPs Total | Usage |
|---|---|---|
10.0.0.0/16 (Recommandé) | 65 536 IPs (de 10.0.0.0 à 10.0.255.255) | Standard (Prod). Offre une flexibilité maximale. |
10.0.0.0/20 | 4 096 IPs | Moyen (Projet PME). |
10.0.0.0/24 | 256 IPs | Petit (Dev/Test). (Risque d'épuisement rapide). |
PiĂšge (Overlap) : Si vous crĂ©ez 2 VPCs (ex: Prod, Dev) avec le mĂȘme CIDR (10.0.0.0/16), vous ne pourrez jamais les connecter (Peering (6.1)) (car AWS ne saura pas router 10.0.1.5).
Un Subnet (Sous-réseau) est une "tranche" (partition) du CIDR (1.2) de votre VPC.
RÚgle : Un Subnet "vit" entiÚrement dans 1 seule Availability Zone (AZ). (Il ne peut pas s'étendre sur 2 AZs).
Exemple (Découpage d'un VPC 10.0.0.0/16)
Bonne Pratique (HA) : Toujours créer (au moins) 2 Subnets (Public) et 2 Subnets (Privé), répartis sur 2 AZs (a et b).
| Nom | AZ | CIDR (Taille Subnet) | IPs | Usage |
|---|---|---|---|---|
subnet-public-a | eu-west-3a | 10.0.1.0/24 | 251 IPs* | ALB, NAT GW, EC2 (Bastion) |
subnet-public-b | eu-west-3b | 10.0.2.0/24 | 251 IPs* | ALB, NAT GW (HA) |
subnet-private-a | eu-west-3a | 10.0.10.0/24 | 251 IPs* | EC2 (App Django), Lambda, RDS |
subnet-private-b | eu-west-3b | 10.0.11.0/24 | 251 IPs* | EC2, Lambda, RDS (Standby) |
*IPs Réservées (PiÚge) : AWS réserve toujours les 5 premiÚres IPs de chaque Subnet. (Un /24 (256 IPs) n'a que 251 IPs utilisables).
10.0.1.0: (Réseau)10.0.1.1: (VPC Router)10.0.1.2: (DNS AWS)10.0.1.3: (Réservé futur)10.0.1.255: (Broadcast)
Chaque Subnet (1.3) doit ĂȘtre (explicitement) associĂ© Ă 1 seule Route Table.
La Route Table est le "GPS" (Routeur virtuel) du Subnet. Elle contient les rĂšgles de routage (OĂč envoyer le trafic ?).
Main Route Table (Table Principale)
Chaque VPC (1.1) a 1 "Main Route Table" (par défaut). Tout Subnet (non-associé) utilise celle-ci.
Contenu d'une Route Table (Exemple Privé)
| Destination | Target (Cible) | Description |
|---|---|---|
10.0.0.0/16 (Le CIDR du VPC) | local | (Automatique/Immuable) Permet aux ressources (EC2, RDS) dans le VPC de se parler (trafic local). |
0.0.0.0/0 (Tout Internet) | nat-123... (NAT GW (3.3)) | (RÚgle "Sortie") (Si Subnet Privé (3.2)). |
10.1.0.0/16 (VPC-B) | pcx-456... (Peering (6.1)) | (RĂšgle "Peering") Permet de parler au VPC-B. |
pl-789... (S3) | vpce-999... (Endpoint (7.1)) | (RÚgle "Endpoint") Force le trafic S3 à rester "privé". |
L'IGW est la "Porte" (virtuelle, PaaS, Scalable) qui connecte votre VPC (privé) à Internet (Public).
Un VPC ne peut avoir que 1 seul IGW (attaché).
Fonctionnement (Bidirectionnel)
L'IGW gĂšre le trafic (Bidirectionnel) Entrant et Sortant vers Internet.
- Sortant (Egress) : (EC2 -> Google.com) L'IGW fait la traduction NAT (SNAT) : (IP Privée
10.0.1.50-> IP Publique (2.3)54.1.2.3). - Entrant (Ingress) : (Client -> 54.1.2.3) L'IGW fait la traduction NAT (DNAT) : (IP Publique
54.1.2.3-> IP Privée10.0.1.50).
La Connexion (2 étapes)
Pour qu'un Subnet (1.3) devienne "Public" (3.1), il faut 2 choses :
- Attacher 1 IGW au VPC (1.1).
- Modifier la Route Table (2.1) du Subnet (1.3) pour ajouter la "Route par Défaut" :
- Destination:
0.0.0.0/0(Tout Internet) - Target:
igw-12345...(L'ID de l'IGW)
- Destination:
Une ressource (EC2) (dans un Subnet Public (3.1)) a besoin d'une IP Publique (IPv4) pour ĂȘtre jointe (ou joindre) Internet (via l'IGW (2.2)).
1. Auto-assign Public IP (IP ĂphĂ©mĂšre)
- Type : Dynamique (ĂphĂ©mĂšre). (Option "Auto-assign" (
Yes) sur le Subnet/EC2). - Flux : (Start EC2) AWS "pioche" une IP (ex:
34.1.2.3) dans son pool (RĂ©gion) et l'attache. - ProblĂšme (Downtime) : Si vous Stoppez (ArrĂȘtez) et RedĂ©marrez (Start) l'EC2, l'IP
34.1.2.3est perdue (libérée), et AWS en assigne une nouvelle (ex:52.4.5.6). - Conséquence : Votre DNS (ex:
www.site.com->34.1.2.3) est cassé.
2. Elastic IP (EIP) (IP Statique)
- Type : Statique (Fixe).
- Flux :
- (Vous) (Console VPC) "Allouez" 1 EIP (ex:
80.5.6.7) (elle est Ă vous, dans votre compte). - (Vous) (Console EC2) "Associez" l'EIP (
80.5.6.7) Ă l'ENI (Instance)i-123. - (DNS) Vous pointez
www.site.com->80.5.6.7.
- (Vous) (Console VPC) "Allouez" 1 EIP (ex:
- Avantage (Stop/Start) : Si vous Stoppez/Redémarrez l'EC2, l'EIP (
80.5.6.7) reste attachée. (Pas de casse DNS).
PiÚge (Coût FinOps) : Une EIP est GRATUITE si elle est attachée à une instance EC2 Running. Une EIP non-attachée (ou attachée à une instance Stopped) est facturée (cher) (pour éviter la pénurie d'IPv4).
"Public" ne veut pas dire "exposé". "Public" est un terme de Routage.
Définition : Un Subnet (1.3) est "Public" si, et seulement si, sa Route Table (2.1) associée contient une route vers un Internet Gateway (IGW) (2.2).
Checklist (Pour qu'un EC2 soit Public)
Pour qu'un EC2 (ex: Serveur Web Nginx) soit accessible depuis Internet (ex: http://54.1.2.3), il faut 4 conditions :
- Le VPC (1.1) doit avoir 1 IGW (2.2) attaché.
- L'EC2 doit ĂȘtre dans un Subnet (
subnet-public-a) (1.3). - La Route Table (2.1) (associĂ©e Ă
subnet-public-a) doit avoir la route :Destination: 0.0.0.0/0|Target: igw-12345...
- L'EC2 doit avoir une IP Publique (2.3) (Auto-assign ou EIP).
- (Le Security Group (4.1) doit autoriser le
Port 80(Source:0.0.0.0/0)).
C'est la bonne pratique de sécurité pour 99% des ressources (BDD, API, Lambda...).
Définition : Un Subnet est "Privé" s'il n'a AUCUNE route (dans sa Route Table (2.1)) vers un Internet Gateway (IGW) (2.2).
Conséquences (Isolation)
- (Sécurité) Une ressource (EC2, RDS) dans un Subnet Privé (ex:
10.0.10.50) ne peut pas ĂȘtre jointe depuis Internet (mĂȘme si elle a un SG "Allow All"). (L'IGW ne sait pas oĂč router10.0.10.50). - (Le PiĂšge) Cette ressource (
10.0.10.50) ne peut pas non plus joindre Internet (Sortie). (Ex:apt-get update,git pull,call api.stripe.com) ->Connection Timeout.
Solution (Sortie) : Si le Subnet Privé a besoin d'un accÚs (Sortant) à Internet (ex: Patchs OS), il faut utiliser un NAT Gateway (3.3).
Un NAT (Network Address Translation) Gateway est un service (PaaS) qui permet aux instances (dans un Subnet Privé (3.2)) d'accéder (en Sortie Uniquement / Egress-Only) à Internet.
Configuration (Flux)
- (Pré-requis) Vous devez avoir 1 Subnet Public (3.1) et 1 Subnet Privé (3.2).
- (AWS) Vous créez un "NAT Gateway" (PaaS, HA, Scalable).
- AWS le place (automatiquement) dans votre Subnet Public (3.1).
- AWS lui attache (automatiquement) 1 EIP (2.3) (IP Publique Fixe).
- (Vous) Vous modifiez la Route Table (2.1) de votre Subnet Privé (3.2).
- (Vous) Vous ajoutez la route "Sortie" :
Destination: 0.0.0.0/0(Internet)Target: nat-12345...(L'ID du NAT Gateway)
Flux d'Exécution (Ex: apt-get update)
- (EC2 Privée
10.0.10.50) Lanceapt-get update(versubuntu.com). - (Route Table Privée) Voit
0.0.0.0/0-> Envoie le paquet au NAT GW (nat-123). - (NAT GW) (Public) Reçoit le paquet (Source:
10.0.10.50). - (NAT GW) Fait du NAT (SNAT) : (Source:
EIP_DU_NAT_GW) -> Envoie (via IGW) Ăubuntu.com. - (Internet) (
ubuntu.com) RĂ©pond Ă l'EIP_DU_NAT_GW. - (NAT GW) Reçoit la rĂ©ponse -> Traduit (DNAT) -> Envoie Ă
10.0.10.50(EC2 Privée).
Coût (FinOps) : Les NAT GW sont trÚs chers (Facturés $/Heure + $/GB (Data Processing)).
C'est le pare-feu principal (le plus utilisé) pour sécuriser vos ressources (EC2, RDS, Lambda...).
Caractéristiques Clés
- Niveau : Instance (ENI). (Agit au niveau de la Carte Réseau (ENI) de l'EC2/RDS).
- RĂšgles (Allow) : Ne supporte que les rĂšgles
Allow(Autoriser). - Défaut (Deny) : Tout ce qui n'est pas explicitement
AllowestDeny(Bloqué). (Whitelist). - Association : 1 EC2 peut avoir plusieurs SGs (ex:
sg-ssh+sg-web). 1 SG peut couvrir plusieurs EC2s.
Le Point Clé : STATEFUL
Les SGs sont Stateful (Contextuels).
Exemple (RÚgle Inbound) : Vous autorisez (Allow) l'Entrée (Inbound) sur le Port 80 (HTTP) (Source: 0.0.0.0/0).
- (Client) Envoie une requĂȘte (Port
12345) -> (Serveur: Port80). (Autorisé (par la RÚgle Inbound)). - (SG) "Note" (Track) cette connexion (
12345 -> 80). - (Serveur) Répond (Port
80) -> (Client: Port12345). - (SG) (Outbound) Voit la réponse. (SG) "Ah, cette réponse (
80 -> 12345) appartient à la connexion (12345 -> 80) que j'ai autorisée." -> (Autorisé Automatiquement).
Conséquence : Vous n'avez (généralement) jamais besoin de modifier les rÚgles Outbound (Sortantes) (qui sont Allow All (0.0.0.0/0) par défaut).
La puissance des SGs réside dans la définition de la "Source" (Qui a le droit ?).
Exemple : sg-app (Serveur Web Django)
| Type | Port | Source | Description |
|---|---|---|---|
| SSH (Admin) | 22 | 80.1.2.3/32 (Mon IP Bureau) | Autorise mon PC (Admin) Ă se connecter (SSH). |
| HTTP (Public) | 80 | 0.0.0.0/0 (Internet) | Autorise Internet (Clients) Ă voir le site. |
| HTTPS (Public) | 443 | 0.0.0.0/0 (Internet) | Autorise Internet (Clients) Ă voir le site (SSL). |
La Bonne Pratique : Source = ID (sg-xxx)
ProblÚme : (Config sg-db (RDS (2.3))) Si je mets (Source: 10.0.10.50/32 (IP de l'EC2 App)), et que l'EC2 (ASG) est tué/redémarré (nouvelle IP 10.0.10.51) -> L'App (.51) ne peut plus parler à la BDD (qui n'autorise que .50).
Solution : On utilise l'ID du SG comme Source (dynamique).
Exemple : sg-db (BDD RDS Privée)
| Type | Port | Source | Description |
|---|---|---|---|
| PostgreSQL | 5432 | sg-app (L'ID du SG (ci-dessus)) | Autorise toute ressource (EC2, Lambda) portant l'étiquette (SG) sg-app à se connecter (Port 5432). |
C'est la comparaison la plus importante du "Networking" AWS.
Analogie
- NACL (5.1) : C'est le "Badge de Sécurité" à l'entrée (Subnet) du bùtiment. (Vérifie tout le monde, Entrée/Sortie).
- SG (4.1) : C'est la "Porte (Verrouillée)" du bureau (Instance).
| CritĂšre | Security Group (SG) | Network ACL (NACL) |
|---|---|---|
| Niveau (Scope) | Instance (ENI) (ex: 1 EC2, 1 RDS). | Subnet (ex: subnet-private-a (100 EC2s)). |
| RĂšgles (Allow/Deny) | Allow uniquement. | Allow ET Deny (explicites). |
| Défaut (Si vide) | Deny All (Whitelist). | (NACL Défaut) Allow All.(NACL Custom) Deny All. |
| Ăvaluation (RĂšgles) | Toutes les rĂšgles Allow sont Ă©valuĂ©es. | Dans l'ordre (NumĂ©ros : 100, 200...). (La 1Ăšre qui "match" gagne). |
| Ătat (STATE) | STATEFUL (Contextuel). | STATELESS (AmnĂ©sique). |
| Exemple (Ătat) | (Inbound 80 Allow) -> Le Retour (Outbound) est automatiquement autorisĂ©. | (Inbound 80 Allow) -> (Le Retour (Port 12345) est bloquĂ© (par dĂ©faut)).-> (Il faut aussi Allow (Outbound) les Ports ĂphĂ©mĂšres (1024-65535)). |
Bonne Pratique : Utiliser les Security Groups (SG) (fins, précis) pour 99% du travail. Laisser les NACLs (larges) au défaut (Allow All) (sauf pour "Blacklister" (Deny) une IP (attaque)).
Le NACL est le pare-feu (optionnel) au niveau Subnet (1.3). Il filtre tout le trafic (entrant/sortant) du Subnet.
Caractéristiques Clés
- Niveau : Subnet. (S'applique Ă toutes les instances (ENI) dans ce Subnet).
- RĂšgles (Allow/Deny) : Supporte
AllowetDeny. - Ătat (STATE) : STATELESS (AmnĂ©sique) (5.3).
NACL "Défaut" vs NACL "Custom"
- Default NACL (Défaut) : (Créée avec le VPC)
- RĂšgle
100: Allow All (0.0.0.0/0)(Inbound/Outbound). - RĂšgle
*: Deny All(Immuable). - Effet : Ne bloque rien (laisse passer, comme un SG "Allow All").
- RĂšgle
- Custom NACL (Personnalisée) : (Si vous en créez une)
- (PiĂšge) Ne contient que la rĂšgle
*: Deny All. - Effet : Bloque tout (trafic local, internet...). (Vous devez tout re-autoriser (
Allow) manuellement).
- (PiĂšge) Ne contient que la rĂšgle
Contrairement aux SGs (4.1), les rÚgles NACL sont numérotées (de 1 à 32766) et évaluées dans l'ordre (croissant).
Exemple (RĂšgles Inbound)
| N° (Rule #) | Type | Protocole | Port | Source | Allow/Deny |
|---|---|---|---|---|---|
| 100 | SSH (22) | TCP | 22 | 80.1.2.3/32 (Mon IP) | Allow |
| 200 | HTTP (80) | TCP | 80 | 0.0.0.0/0 | Allow |
| 300 | SSH (22) | TCP | 22 | 0.0.0.0/0 | Deny |
| * (Défaut) | All Traffic | All | All | 0.0.0.0/0 | Deny |
Flux d'Ăvaluation (Paquet SSH (22) depuis 80.1.2.3)
- (AWS) Regarde RĂšgle 100 ? (Match: Port 22, IP 80.1.2.3) -> Allow.
- (AWS) (ArrĂȘte l'Ă©valuation) -> Laisse passer le paquet.
Flux d'Ăvaluation (Paquet SSH (22) depuis 90.5.6.7)
- (AWS) Regarde RĂšgle 100 ? (Mismatch: IP 90.x).
- (AWS) Regarde RĂšgle 200 ? (Mismatch: Port 80).
- (AWS) Regarde RĂšgle 300 ? (Match: Port 22, IP 0.0.0.0/0) -> Deny.
- (AWS) (ArrĂȘte l'Ă©valuation) -> Bloque le paquet.
STATELESS = Amnésique. Le NACL ne se souvient pas des connexions autorisées (contrairement au SG (4.1)).
Vous devez autoriser explicitement le trafic Entrant (Inbound) ET le trafic Sortant (Outbound) (Réponse).
Scénario (Serveur Web)
Objectif : Autoriser le trafic HTTP (Port 80) (0.0.0.0/0).
RĂšgle Inbound (Facile)
| N° | Type | Port | Source | Allow/Deny |
|---|---|---|---|---|
| 100 | HTTP | 80 | 0.0.0.0/0 | Allow |
(Flux) : (Client 80.1.2.3 (Port 50000)) -> (Serveur (Port 80)) -> (Autorisé).
(ProblÚme) : (Serveur (Port 80)) Répond -> (Client 80.1.2.3 (Port 50000)) -> (Bloqué par RÚgle Outbound *: Deny).
RĂšgle Outbound (La Solution : Ports ĂphĂ©mĂšres)
Il faut (aussi) autoriser la RĂ©ponse (Sortante) vers les "Ports ĂphĂ©mĂšres" (1024-65535) (le port "source" (alĂ©atoire) du client).
| N° | Type | Port | Destination | Allow/Deny |
|---|---|---|---|---|
| 100 | All TCP (Ephemeral) | 1024-65535 | 0.0.0.0/0 | Allow |
Le VPC Peering est une connexion réseau 1-pour-1 (point-à -point) entre 2 VPCs.
Usage : Connecter VPC-Prod (10.0.0.0/16) et VPC-Dev (10.1.0.0/16) (CIDR non-overlap (1.2)).
Configuration (3 Ătapes)
- (Compte A) Demande un Peering (
pcx-123) (Source:vpc-a, Target:vpc-b). - (Compte B) Accepte le Peering (
pcx-123). - (Crucial - Oublié) (A & B) Les deux comptes doivent modifier leurs Route Tables (2.1) :
- (Route Table VPC-A) :
Dest: 10.1.0.0/16->Target: pcx-123. - (Route Table VPC-B) :
Dest: 10.0.0.0/16->Target: pcx-123.
- (Route Table VPC-A) :
Le PiĂšge : Non-Transitif (Pas de "saut")
Peering n'est pas transitif (pas de routage en chaĂźne).
ScĂ©nario (Ăchec) :
(VPC-A) <--- (Peering 1) ---> (VPC-B) <--- (Peering 2) ---> (VPC-C)
Résultat : (A) peut parler à (B). (C) peut parler à (B). (A) NE PEUT PAS parler à (C) (via B).
Solution (Scale) : Si 3+ VPCs -> Utiliser Transit Gateway (6.2).
Le TGW est le "Routeur Cloud" (PaaS) d'AWS. Il résout le problÚme de Peering (6.1) à grande échelle.
C'est une architecture Hub & Spoke (Ătoile).
Flux (Hub & Spoke)
- (Vous) Créez 1 TGW (Hub) (dans une Région).
- (Vous) "Attachez" (Attach) vos 10 VPCs (Spokes) au TGW (Hub).
- (Vous) (1 seule RĂšgle) Modifiez la Route Table (2.1) (de chaque VPC) :
- (VPC-A)
Dest: 10.0.0.0/8(Tout trafic privé) ->Target: tgw-123. - (VPC-B)
Dest: 10.0.0.0/8->Target: tgw-123.
- (VPC-A)
Routage Transitif (Automatique)
Scénario (SuccÚs) :
(VPC-A) <--- (Attach) ---> (TGW-HUB) <--- (Attach) ---> (VPC-C)
Résultat : (A) peut (automatiquement) parler à (C) (via le TGW). (Le TGW gÚre la table de routage centrale).
Avantages : Scalable (1000s VPCs), Centralisé (Routage géré au niveau TGW), Transitif (A->TGW->B), supporte VPN/DX (6.3).
C'est l'outil (optionnel) de Monitoring (Audit) réseau. Il capture (loggue) les métadonnées (pas le contenu) de tout le trafic IP (entrant/sortant) du VPC.
Activation
(Clic-droit sur VPC/Subnet/ENI) -> "Create flow log" -> Destination (CloudWatch Logs ou S3).
Usage : Débugger un "Connection Timeout" (SG/NACL)
ProblĂšme : Mon EC2-App (10.0.10.50) n'arrive pas (Timeout) Ă joindre RDS (10.0.20.100:5432). (Est-ce le SG (4.1) ou le NACL (5.1) ?)
Solution : Regarder les Flow Logs (sur CloudWatch Logs) (Filtrer 10.0.10.50 10.0.20.100 5432).
Format du Log (Exemple)
# (Version, Compte, ENI, SrcIP, DstIP, SrcPort, DstPort, Protocol, Packets, Action, Status)
2 111... eni-123 10.0.10.50 10.0.20.100 50000 5432 6 10 40 REJECT OK
10.0.10.50(App) ->10.0.20.100:5432(RDS)REJECT: Le trafic a été bloqué.
Conclusion : Si Action = REJECT -> C'est le Security Group (SG) (4.1) qui bloque (Défaut Deny).
(Si c'était le NACL (5.1) (Deny explicite), l'Action serait aussi REJECT, mais le Status (non-affiché ici) aiderait à différencier).
(Si Action = ACCEPT (mais Timeout) -> ProblÚme L4-L7 (ex: BDD (RDS) down, App (Nginx) crashée)).
ProblÚme : J'ai une EC2 (ou Lambda) dans un Subnet Privé (3.2) (sans NAT GW (3.3)). Elle doit appeler S3 (boto3.client('s3').list_buckets()). (S3 a une API Publique/Internet).
Résultat (Défaut) : Connection Timeout (L'EC2 Privée ne peut pas joindre Internet (S3)).
Solution (Gratuite) : Endpoint "Gateway" (Passerelle)
C'est une "passerelle" (virtuelle) qui intercepte le trafic (local) vers S3/DynamoDB et le route (via le réseau privé d'AWS) (Amazon Backbone) (sans passer par l'IGW/NAT).
Configuration (2 Ătapes)
- (Console VPC) "Create Endpoint" -> Type: Gateway -> Service:
s3(oudynamodb). - (Console VPC) Choisir votre VPC (1.1) et (Crucial) cocher les Route Tables (2.1) (ex:
rt-private-a) qui doivent l'utiliser.
Résultat (Automatique)
AWS ajoute (automatiquement) une nouvelle RĂšgle (Route) Ă votre Route Table (rt-private-a) :
| Destination | Target (Cible) |
|---|---|
10.0.0.0/16 | local |
pl-123... (Prefix List de S3) | vpce-456... (L'ID de l'Endpoint) |
Flux : (EC2 Privée) boto3.client('s3') -> (Route Table) Voit "S3" (pl-123) -> Envoie (privé) au vpce-456 (pas à Internet/NAT).
Avantages : Gratuit. Sécurisé (trafic ne quitte pas AWS). Simple (pas d'IP/ENI).
C'est la solution "moderne" (PaaS) (basée sur AWS PrivateLink) pour accéder (en privé) à tous les autres services (Lambda, SQS, KMS, Secrets Manager, etc.).
(Inconvénient : Payant (Facturé $/Heure + $/GB)).
ProblĂšme (Endpoint Gateway (7.1) ne suffit pas)
Mon EC2 (Subnet Privé (3.2), sans NAT (3.3)) doit appeler Secrets Manager (6.3) (boto3.client('secretsmanager')). (L'Endpoint Gateway (7.1) ne supporte pas Secrets Manager).
Résultat (Défaut) : Connection Timeout.
Solution : Endpoint "Interface"
- (Console VPC) "Create Endpoint" -> Type: Interface.
- (Console VPC) Service:
com.amazonaws.eu-west-3.secretsmanager. - (Console VPC) Choisir votre VPC (1.1) et (Crucial) les Subnets Privés (ex:
private-a,private-b) oĂč il doit "vivre".
Résultat (Magie DNS)
AWS provisionne une ENI (Carte Réseau) (avec une IP Privée (ex: 10.0.10.100)) dans votre Subnet Privé.
AWS utilise (via Route 53 (DNS)) Split-Horizon DNS :
- (Client Internet)
ping secretsmanager.eu-west-3...-> (Résout IP Publique). - (EC2 Privée)
ping secretsmanager.eu-west-3...-> (Résout IP Privée10.0.10.100).
Flux : (EC2 Privée) boto3.client('secretsmanager') -> (DNS) -> 10.0.10.100 (IP de l'ENI Endpoint) -> (Trafic 100% privé).
Note : (Contrairement Ă 7.1) L'Endpoint Interface n'utilise pas (ne modifie pas) la Route Table (2.1). Il utilise le DNS.
Ce sont les 2 méthodes (Réseau Hybride) pour connecter votre Data Center (Bureau / On-Premise) (ex: 192.168.1.0/24) à votre VPC (AWS) (ex: 10.0.0.0/16).
1. Site-to-Site VPN (Connexion Chiffrée)
- Transport : Internet (Public).
- Technologie : IPSec (Tunnel chiffré).
- AWS (Hub) : Virtual Private Gateway (VGW) (Legacy) ou Transit Gateway (TGW) (6.2) (Moderne).
- On-Premise (Hub) : Customer Gateway (CGW) (Routeur/Firewall (Cisco, Fortinet...)).
- Vitesse : Limitée (ex: ~1.25 Gbps). Dépend de votre FAI (Internet).
- Coût : Faible (Payé $/Heure (Connexion VPN) + Data Transfer).
- Usage : Dev/Test, PME, Backups.
2. Direct Connect (DX) (Connexion Privée)
- Transport : Fibre Optique (Privée) (Dédiée). (Vous (via Partenaire: Equinix, Orange...) tirez une fibre de votre DC (On-Prem) vers un "DX Location" (Point de Présence AWS)).
- Technologie : VLANs (802.1q). (Pas chiffré par défaut, car privé).
- AWS (Hub) : Direct Connect Gateway (+ TGW).
- Vitesse : Garantie (Dédiée : 1 Gbps, 10 Gbps, 100 Gbps).
- Latence : TrĂšs basse, stable (pas d'Internet).
- CoĂ»t : ĂlevĂ© (FacturĂ© au Port/Heure (ex: 10Gbps = $2.20/h) + CoĂ»t OpĂ©rateur (Equinix)).
- Usage : Production (Gros volumes), migration BDD (Oracle), workloads sensibles (latence).
