Security: dev et staging publiquement exposés en clair et branchés sur la base prod

Constaté en live le 2026-07-26 pendant la session de validation de #136 (closed) (hors périmètre de cette issue).

Constat

curl -sS -o /dev/null -w '%{http_code}\n' http://dev.api.devopsyouss.com/healthz/ready
200

L'endpoint dev répond 200 en clair, publiquement, sans TLS à contourner.

Et l'overlay dev (k8s/overlays/fastapi/dev/kustomization.yaml) ne patche que le namespace, le hostname, le rattachement au Gateway, les bornes HPA et le tag d'image. Il ne surcharge pas l'ExternalSecret : le base tire fastapi-eks/app depuis AWS Secrets Manager (k8s/base/externalsecret.yaml:25), la même clé pour les 3 envs.

Donc dev et staging tapent la base de la prod. Combiné à l'écriture publique assumée en démo (cf #129), la base prod est joignable en écriture via un endpoint public en clair.

Le risque n'est pas que sécuritaire : le tag dev est bumpé automatiquement par le write-back à chaque merge sur develop. Du code qui n'a passé ni staging ni E2E sert donc publiquement sur le jeu de données de la prod.

Pourquoi c'est arrivé

L'exposition s'est faite toute seule au démarrage du cluster : dès que les overlays se synchronisent, ExternalDNS crée les enregistrements et les HTTPRoutes s'attachent au Gateway partagé. Les listeners du Gateway n'ont aucun champ hostname (k8s/platform/gateway.yaml:55-75), donc ils acceptent tout.

La consigne « ne pas remonter le multi-env en live avant la fin du socle » n'avait aucun garde-fou technique. Même classe de problème que le gate prod documentaire.

Done when

  • Les overlays dev et staging n'attachent aucune HTTPRoute tant que #137 (closed) (bases séparées) et #138 (closed) (secrets/DNS/certs par env) ne sont pas livrés
  • Le garde-fou est technique, pas documentaire : un aws-start ne doit pas pouvoir réexposer dev/staging par accident
  • Vérifié en live après le prochain start : dev.api et staging.api ne résolvent pas, ou ne répondent pas
  • ADR 029 mis à jour avec la contrainte

Voir aussi : issue sur l'absence de redirection HTTP vers HTTPS (dette antérieure, touche aussi la prod).