Réseaux privés et internes
1) Pourquoi un réseau privé
L'objectif est de minimiser la surface d'attaque et le coût de l'egress en connectant des services critiques sur des liens privés sans accéder à Internet. Cela donne :- Isolation du PaaS/DB/stockage des PI publiques ;
- la simplification de la conformité (PCI DSS/GDPR) ;
- retards prévisibles et routage.
2) Modèle de base : VPC/VNet et hubs
Espace d'adressage : plan unique du CIDR, sans intersections (p. ex. "10. 0. 0. 0/12 'découpé en cercles et pôles).
Segmentation : sous-réseaux 'ingress', 'app', 'data', 'ops', 'shared' avec des itinéraires distincts/ACL/SG.
Transit Habe : VPC/VNet central avec passerelles (VPN/DirectConnect/ExpressRoute/Interconnect), inter-VPC peering/Transit Gateway et les faervoles réseau.
Dual-stack : planification IPv6 à l'avance (économise NAT, améliore l'échelle des adresses).
3) Private endpoints : principes
Private endpoint/PrivateLink/Private Service Connect est une interface privée vers un service géré (stockage objet, files d'attente, bases de données, stockage secret) accessible uniquement à partir de votre espace d'adresse :- Le trafic va à l'intérieur du réseau du fournisseur (pas sur Internet).
- Endpoint politique limite où vous pouvez aller (préfixes/ARN/ressources).
- Le DNS est redéfini en IP privées (voir § 6).
Cibles types : stores d'objets (S3/GCS/Blob), secret/KMS, files d'attente, bus d'événements, bases de données gérées, services d'analyse, registres d'artefact.
4) Entrée et équilibrage à l'intérieur
L'Internal Load Balancer (ILB) pour les L4/7, ne peut être vu qu'à partir de sous-réseaux privés.
Kubernetes:- Service de type LoadBalancer avec annotations internes.
- Connectez-vous via l'API Internal Ingress (Nginx/Contour/Gateway) sur une adresse privée.
- API Gateway (privé) : intégration privée aux backends ; à l'extérieur - seulement via edge si nécessaire.
Exemple : K8s Ingress comme interne
yaml apiVersion: networking. k8s. io/v1 kind: Ingress metadata:
name: api-internal annotations:
kubernetes. io/ingress. class: "nginx"
alb. ingress. kubernetes. io/scheme: internal # or provider equivalent spec:
rules:
- host: api. internal. corp http:
paths:
- path: /v1/
pathType: Prefix backend:
service:
name: api port: { number: 8080 }
5) Contour egress : « par défaut - deny »
Sans Internet direct à partir de sous-réseaux privés : tout à l'extérieur seulement par :- NAT Gateway (pour les updates/référentiels) + egress allowlist par FQDN/IP ;
- Inspection/proxy TLS si les politiques exigent des contrôles ;
- Private endpoints to PaaS/registres au lieu de NAT.
- SG/NACL : autorisations explicites par service, « est-ouest » - minimum.
- Les politiques egress de K8s (CNI/OPA Gatekeeper/Calico NetworkPolicy) - interdiction des IP externes, autorisations de clusters/endpoint.
6) DNS: split-horizon и private zones
Séparez les zones intérieures ('.internal. corp ') et public.
Zones DNS privées pour les services du fournisseur : redéfinissent les noms publics (par exemple, 'bucket. s3. region. amazonaws. com ') sur les enregistrements A/AAAA privés.
Forwarders/Conditional DNS между on-prem ↔ cloud.
Format des noms : encapsuler l'environnement/région ('api. eu1. internal. corp '), éviter les PII.
api. internal. corp. A 10. 20. 30. 40 s3. bucket. corp. A 10. 100. 0. 25 # via private endpoint
7) Modèles d'interconnexion
Peering (VPC↔VPC/VNet↔VNet) : simple et rapide ; le transit n'est pas toujours pris en charge → utilisez Transit Gateway/Virtual WAN/Cloud Router pour l'étoile (hub-and-spoke).
On-prem ⇄ cloud : IPsec VPN pour le départ, puis la ligne mise en relief (DC/ER/IC) avec BGP et la réserve (deux providers, de différents points de l'entrée).
Segmentation VRF/Route-domain : isolation prod/stage/dev et périmètre carte.
8) Zero Trust et l'authentification interne
mTLS-par défaut (service mesh : Istio/Linkerd/Consul), identité machine : SPIFFE/SPIRE.
Politiques L7 : autorisation par JWT/clims/scopes, limitation des itinéraires/méthodes au niveau du proxy.
Secrets: HashiCorp Vault/КMS + External Secrets Operator; credenshels à courte durée de vie (STS).
Bastion/Accès privilégié : Accès à la vie privée uniquement par le biais d'une session de courtage/JIT (MFA, enregistrement des commandes).
Exemple : Envoy filtre mTLS + JWT-authz (fragment)
yaml transport_socket:
name: tls typed_config: {... spiffe://svc. api... }
http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
providers:
oidc: { issuer: https://idp. corp, audiences: ["api"], remote_jwks: {...} }
rules: [{ match: { prefix: "/v1" }, requires: { provider_name: oidc } }]
9) Données et PaaS à l'intérieur de la private
Bases/clusters : adresses privées uniquement ; adminka via bastion/JIT.
Stockages : accès depuis VPC via private endpoint ; endpoint policy n'autorise que les réservoirs/conteneurs dont vous avez besoin.
Files d'attente/bus : interfaces privées ; vendeurs/consumers - dans le même VPC/peering.
Registres d'artefacts : accès privé depuis les runners CI/CD dans les sous-réseaux privés.
10) Observabilité dans les réseaux privés
OpenTelemetry Collector - en tant que passerelle de télémétrie : les exportateurs nationaux en self-hosted (Prometheus/Tempo/Loki/ClickHouse) ou en backends gérés par des endpoints privés.
Flow logs/NSG/NACL logs et reachability analyzer - sont obligatoires.
Tranches SLO : 'site/region/vpc/subnet', alertes à la fuite egress et « direction Internet » inattendue.
11) Test et vérification
Policy as Code (OPA/Gatekeeper) pour les règles réseau/Ingress/Service.
Routes canaries : domaines de test en DNS privé, vérifications synthétiques à partir de différents sous-réseaux/AZ/régions.
Chaos-network : retards/pertes dans l'inter-VPC/inter-AZ (netem/Toxiproxy), vérifications des délais et retri-politiques.
12) Exemples de configurations
12. 1 Terraform : étiquettes et itinéraires (idée)
hcl resource "aws_route_table" "app" {
vpc_id = aws_vpc. core. id tags = { Name = "rt-app", env = var. env, zone = "private" }
}
Route on PrivateLink endpoint (interface endpoint is created separately)
resource "aws_vpc_endpoint_route_table_association" "s3" {
route_table_id = aws_route_table. app. id vpc_endpoint_id = aws_vpc_endpoint. s3. id
}
12. 2 K8s NetworkPolicy : Interdire tout sauf le bon
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata: { name: deny-all }
spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
kind: NetworkPolicy metadata: { name: allow-core }
spec:
podSelector: { matchLabels: { app: api } }
egress:
- to:
- namespaceSelector: { matchLabels: { ns: db } }
ports: [{ port: 5432, protocol: TCP }]
- to:
- ipBlock: { cidr: 10. 100. 0. 0/16 } # private endpoints ports: [{ port: 443, protocol: TCP }]
12. 3 Nginx Ingress (internal scheme) + HSTS
yaml metadata:
annotations:
alb. ingress. kubernetes. io/scheme: internal nginx. ingress. kubernetes. io/hsts: "true"
13) Anti-modèles
Internet de gestion partagé à partir de sous-réseaux privés ; l'absence de contrôle egress.
Split-brain DNS et aléatoire manuel '/etc/hosts '.
Le CIDR et les « matelas NAT » se croisent.
Endpoint 'public pour les bases de données/dépôts « par commodité ».
Absence de logs de flux/d'audit des règles ; « ouvert » SG '0. 0. 0. 0/0`.
Clés d'accès statiques à longue durée de vie dans le code/CI.
14) Coût et performance
Les endpoints privés sont souvent moins chers que le NAT permanent et plus sûrs.
Planifiez les clusters NAT/az-local pour la bande passante afin de ne pas créer de bottleneck.
Cache/edge et SWR réduisent le trafic intersectoriel.
Choix de protocoles : HTTP/2/gRPC moins de connexions et de connexions TLS à l'intérieur du →.
15) Spécificités iGaming/Finance
PCI DSS : circuit de cartes (CDE) sur un réseau séparé/VRF, pas d'Internet ; l'accès aux loges store/PSP uniquement par endpoints privés ; audits invariables (WORM/Object Lock).
KMS/Vault : clés segmentées par région/marque ; les opérations de signature (HSM) sont disponibles uniquement à partir du CDE par mTLS.
PSP/KYC : s'il y a une connectivité privée/markets - utiliser ; sinon - egress via un proxy de confiance avec HMAC/mTLS et une liste explicite.
Multi-tenance : tags et politiques par 'tenant '/' brand' ; noms DNS privés individuels et couches SG.
16) Chèque-liste prod-prêt
- Plan du CIDR sans intersections ; dual-stack est prêt (IPv6).
- Hub-and-Spoke, Transit, peering; on-bou ⇄ cloud - BGP, paires de liens de secours.
- Tous les PaaS/entrepôts/OBD - via les politiques privées endpoints + endpoint.
- Internal LB/Ingress; périmètre public - seulement sur edge/WAF.
- Split-horizon DNS, zones privées et conditional-forwarding sont personnalisés.
- Egress par défaut « deny » ; Les NAT/proxy sont limités et journaux.
- Mesh mTLS + SPIFFE; JWT-authz sur L7 ; Vault/ESO, secrets courts.
- NetworkPolicy/SG/NACL - « minimum nécessaire », flow-logs et reachability-analysis.
- OTel Collector à l'intérieur ; alertes à la fuite egress, SLO par 'site/region/vpc'.
- PCI/audit : journaux WORM, KMS/HSM, isolation CDE, runbook d'accès.
17) TL; DR
Construisez votre réseau selon un schéma hub-and-spoke avec un plan CIDR clair, utilisez les endpoints privés à chaque PaaS/stockage/OBD, et le trafic vers l'extérieur uniquement via des points egress gérés. À l'intérieur - internal LB/Ingress, mTLS + SPIFFE, split-horizon DNS, stricte NetworkPolicy/SG et télémétrie via OTel. Pour iGaming/Finance, ajoutez la segmentation PCI, KMS/Vault et l'audit immuable ; Sortie PSP/KYC via des canaux privés ou un proxy étroitement contrôlé.