Aller au contenu

Exoledge

Plateforme de bord souveraine : un WAF, une protection anti-bot et anti-DDoS, et un plan de contrôle qui pilote tout par Kubernetes, chez un hébergeur européen, avec la possibilité pour le client de repartir avec son système.

Le projet part d'un constat simple : les offres de protection de bord sont opaques. On ne sait pas pourquoi une requête a été bloquée, on ne peut pas récupérer ses journaux sans payer, et changer de fournisseur signifie tout reconstruire. Ici, tout est décrit en OpenTofu, versionné, et l'état du bord est lisible depuis une console qui dit la vérité sur ce qu'elle applique.

Où en est le projet

Le prototype tourne réellement : Scaleway, Talos, Cilium, Istio, Coraza, un décideur Rust, un opérateur Go et une console Rust. Ce site est servi par la plateforme elle-même, depuis demo.guillaume.ink.

Langue

Le produit vise le marché européen : la console, ses messages d'erreur, la page de connexion et le guide client sont en anglais. La documentation d'ingénierie reste en français, parce qu'elle s'adresse à qui exploite la plateforme, pas à qui l'achète.

Ce que fait la plateforme

  • Filtrage HTTP par signatures OWASP CRS (Coraza en Proxy-WASM), avec un score de risque explicable et trois issues possibles : laisser passer, challenger, bloquer.
  • Preuve de travail plutôt que CAPTCHA : le client résout un défi léger, le bord pose un laissez-passer signé, la navigation redevient normale.
  • Réputation par adresse, par plage et par pays, alimentée par des listes signées et rechargées à chaud.
  • Empreintes de client : JA4 du ClientHello TLS, et une normalisation HTTP maison qui distingue un navigateur d'un script qui copie son User-Agent.
  • Pilotage déclaratif : un EdgeSite décrit un domaine, un opérateur Kubernetes crée les objets réels, et les retire quand on éteint une fonction.
  • Journaux structurés par organisation, consultables en temps réel, exportables vers un SOC au format OpenTelemetry.

Les couches

  • Architecture


    Le découpage en plan de contrôle et plan de données, et pourquoi il change tout pour le multi-région.

    Architecture

  • Le bord


    Proxy, WAF, scoring, réputation : ce qui voit la requête et décide.

    Proxy et protocole · WAF · Scoring

  • Pilotage


    L'opérateur, la console, les fonctions activables, et la feuille de route.

    Opérateur · Console · Feuille de route

  • Exploitation


    Sauvegardes, mises à jour, incidents, ce qu'il faut regarder en premier.

    Exploitation

Le trajet d'une requête

client
  │  TLS, ClientHello (empreinte JA4)
  ▼
passerelle Istio  ──►  WAF Coraza (CRS, signatures)
  │                        │
  │                        ├── bloqué      → 403, journal structuré
  │                        ▼
  │                   décideur (ext_authz) : score, réputation, empreinte
  │                        │
  │                        ├── challenge   → preuve de travail, laissez-passer
  │                        └── laissé passer
  ▼
application

Chaque décision produit un événement : instant, site, règle, score, action, adresse, empreinte, durée. C'est cet événement qui alimente la console, les drains et les alertes.

Démarrer

L'infrastructure entière tient dans cinq couches OpenTofu, appliquées dans l'ordre.

git clone git@github.com:GuillaumeASSIER/poc-exoledge.git
cd poc-exoledge

# 1. le cluster (Scaleway + Talos)
make apply-infra

# 2. la base : Cilium, cert-manager, Istio, Gateway API
make apply-platform

# 3. le bord : passerelle, WAF, challenge, décideur
make apply-edge

# 4. l'opérateur et la console
make apply-operator
make apply-overwatch

Les identifiants Scaleway ne sont jamais dans le dépôt : ils viennent de l'environnement ou du fichier de configuration de la CLI.

Principes

Tout est réversible. Pas de secret dans le dépôt, pas de dépendance à un service propriétaire : le client peut repartir avec ses manifests, ses images et sa base.

La console ne ment pas. Une fonction qui n'est pas appliquée au bord est affichée comme telle. Un interrupteur éteint retire réellement l'objet correspondant.

Le bord ne s'arrête pas. Si le décideur tombe, la politique est permissive : une panne d'un composant de sécurité ne doit pas fermer le site du client.

Les données restent en Europe. Scaleway à Paris, images dans le registre Scaleway, aucune police ni ressource chargée depuis un tiers.

Pour qui

Ingénieurs et hébergeurs qui veulent une protection de bord qu'ils peuvent auditer, modifier et emporter. Le code est lisible, les décisions sont expliquées, et les limites sont écrites noir sur blanc dans la feuille de route.