Cybersécurité · IA générativeCybersecurity · Generative AI

Souveraine, mais ni sécurisée, ni optimisée.Sovereign, but neither secure nor optimized.

Deux portes restent ouvertes chez les plateformes d'IA souveraines : une clé d'API sans garde-fou réel, et une facture jamais optimisée. Voici l'architecture qui les ferme : un broker qui protège la clé, un routeur à IA locale embarquée qui aiguille vers le bon modèle.Two doors stay open on the sovereign AI platforms: an API key with no real guardrail, and a bill nothing optimizes. Here is the architecture that closes both: a broker that protects the key, a router with embedded local AI that steers to the right model.

Un scénario me trotte dans la tête depuis que je mets des IA génératives en production : un serveur qui tombe lors d'une compromission, une clé d'API d'inférence qui part avec, et une facture qui grimpe tranquillement toute la nuit pendant que tout le monde dort.One scenario has been on my mind ever since I started putting generative AI into production: a server gets compromised, an inference API key leaks with it, and the bill quietly climbs all night while everyone sleeps.

J'utilise les AI Endpoints des grandes plateformes françaises. Je crois à leur démarche : hébergement en France, conformité, tarification au token lisible. Sur le papier, tout y est. Mais en préparant leur passage en production, je suis tombé sur un angle mort gênant.I use the AI Endpoints of the major French platforms. I believe in what they stand for: hosting in France, compliance, clear per-token pricing. On paper it is all there. But getting them production-ready, I ran into an awkward blind spot.

Sur leurs offres serverless, il n'y a ni plafond de dépense qui coupe vraiment, ni filtrage par adresse IP, ni jeton à durée limitée. Une clé d'API, chez ces fournisseurs, c'est un jeton au porteur, permanent, sans plafond dur. Si elle fuite, un attaquant la rejoue depuis n'importe où, autant qu'il veut, jusqu'à ce que quelqu'un s'en aperçoive et la révoque à la main. Documentation en main, j'ai retrouvé le même trou chez les deux acteurs les plus connus : au mieux une alerte de budget, donc réactive, une fois le mal déjà commencé.On their serverless offerings there is no spend cap that truly cuts you off, no IP allowlisting, no short-lived token. An API key with these providers is a bearer token, permanent, with no hard ceiling. If it leaks, an attacker replays it from anywhere, as much as they want, until someone notices and revokes it by hand. Documentation in hand, I found the same gap at the two best-known players: at best a budget alert, which is reactive, once the damage has already begun.

Pour une brique aussi sensible, je trouve ça léger. Alors, plutôt que d'attendre qu'ils comblent le manque, je l'ai comblé moi-même.For such a sensitive component, I find that thin. So rather than wait for them to close the gap, I closed it myself.

Le principe tient en une phrase : sortir la clé des applications, et fabriquer à ma main les garde-fous que le fournisseur n'offre pas.The principle fits in one sentence: take the key out of the applications, and build by hand the guardrails the provider does not offer.

Une seule clé. Tous les garde-fous. Le bon modèle. Sortir la clé des applications, durcir le point de passage, et router chaque requête vers le modèle le plus adapté. APPLICATIONS Application A Application B Aucune clé d'API. Un jeton propre, court, révocable en une seconde. mTLS + jeton BROKER passerelle de sortie · boîte durcie, sans surface web Détient SEUL la clé d'API ROUTEUR LOCAL · petit LLM Analyse chaque requête, 100% local et gratuit. Choisit le modèle selon le besoin (règles) et le coût (bascule éco quand le budget se remplit). GARDE-FOUS DE SÉCURITÉ Plafond de dépense · jour + mois (coupure) Débit et quota par application Kill switch (coupe-circuit) Journal d'audit complet Clé chiffrée au repos · en clair en RAM Authentification mutuelle mTLS (certifs courts) Garde anti-injection (modération, gratuit) modèle choisi AI ENDPOINT fournisseur souverain (FR / UE) Modèle qualité (rédaction) Modèle éco (volume) Modèle code CE QU'IL N'OFFRE PAS NATIVEMENT Plafond de dépense dur Filtrage par adresse IP Jeton à durée limitée Agnostique du fournisseur et du modèle : on change de provider ou de modèle en un seul paramètre.
One key. Every guardrail. The right model. Take the key out of the apps, harden the single gateway, and route each request to the best-suited model. APPLICATIONS Application A Application B No API key. Its own short-lived, revocable token. mTLS + token BROKER egress gateway · hardened box, no web surface Holds the ONLY API key LOCAL ROUTER · small LLM Reads every request, 100% local and free. Picks the model by need (rules) and by cost (shifts to eco as the budget fills). SECURITY GUARDRAILS Spend cap · daily + monthly (hard cut) Rate limit and per-app quota Kill switch Full audit log Key encrypted at rest · plaintext in RAM only Mutual TLS (short-lived certs) Anti-injection guard (free moderation) chosen model AI ENDPOINT sovereign provider (FR / EU) Quality model (prose) Eco model (volume) Code model WHAT IT DOES NOT OFFER NATIVELY Hard spend cap IP allowlisting Short-lived token Provider and model agnostic: switch provider or model with one parameter.
Un point de passage unique : il détient la clé, applique les garde-fous, et route chaque requête vers le bon modèle.A single gateway: it holds the key, enforces the guardrails, and routes each request to the right model.

Une passerelle qui détient seule la cléA gateway that holds the key alone

Une passerelle interne, que j'appelle le broker, détient seule la clé. Les applications ne la voient jamais. Elles s'adressent au broker avec un jeton qui leur est propre, révocable en une seconde. Et le broker impose ce que le fournisseur ne fait pas :An internal gateway, which I call the broker, holds the key alone. The applications never see it. They talk to the broker with a token of their own, revocable in one second. And the broker enforces what the provider does not:

Puis on durcit la passerelle elle-mêmeThen you harden the gateway itself

Authentification mutuelle par certificats (mTLS), avec des certificats courts renouvelés tout seuls : un jeton volé ne suffit plus à entrer. Clé d'API chiffrée au repos, présente en clair uniquement en mémoire vive : un disque ou une sauvegarde volés ne donnent rien d'exploitable. Et un garde-fou de modération, gratuit, qui filtre les tentatives d'injection avant même d'appeler le modèle payant. Effet de bord agréable : ça allège aussi la facture.Mutual TLS authentication, with short-lived certificates that renew on their own: a stolen token is no longer enough to get in. The API key encrypted at rest, in plaintext only in RAM: a stolen disk or backup yields nothing usable. And a moderation guard, free, that filters injection attempts before even calling the paid model. A pleasant side effect: it also trims the bill.

Le résultat change la donne. Une application compromise ne livre plus la clé, seulement un jeton bridé et révocable, et l'abus reste plafonné. La clé ne vit que sur une boîte minimale, sans surface web, joignable par mes seules applications.The result changes the game. A compromised application no longer hands over the key, only a throttled, revocable token, and abuse stays capped. The key lives only on a minimal box, with no web surface, reachable only by my own applications.

Un cerveau local qui choisit le bon modèleA local brain that picks the right model

Puisque toutes les requêtes passent désormais par ce point unique, autant le rendre malin. Un petit modèle exécuté en local, donc gratuit et sans rien envoyer à l'extérieur, lit chaque requête et décide vers quel modèle distant l'envoyer.Since every request now goes through this single point, it might as well be smart. A small model run locally, so free and sending nothing outside, reads each request and decides which remote model to send it to.

La décision combine deux logiques. Le besoin : une règle envoie le code vers un modèle spécialisé, une rédaction soignée vers un modèle premium, une extraction basique vers un modèle économique. Le coût : à mesure que le budget se remplit, le routeur bascule de lui-même vers des modèles moins chers. Cerveau local, muscle distant.The decision combines two logics. Need: a rule sends code to a specialized model, polished prose to a premium model, basic extraction to a cheap one. Cost: as the budget fills, the router shifts on its own to cheaper models. Local brain, remote muscle.

La limite de l'exercice, sans faux-semblantThe limit of the exercise, no pretending

Un jeton au porteur doit, au moment de l'appel, exister en clair en mémoire. Un attaquant qui obtient un accès administrateur vivant sur la bonne machine finira toujours par l'atteindre. Aucune architecture ne change cela. Mais entre une clé en clair posée sur des applications web exposées, sans le moindre plafond, et une clé isolée, chiffrée, plafonnée, tracée, derrière du mTLS, il y a un fossé. C'est ce fossé que je voulais creuser.A bearer token must, at call time, exist in plaintext in memory. An attacker who gets live administrator access to the right machine will always reach it in the end. No architecture changes that. But between a key sitting in plaintext on exposed web applications, with no cap at all, and a key that is isolated, encrypted, capped, logged, behind mTLS, there is a gulf. That gulf is what I set out to dig.

Un mot pour les fournisseurs souverains, que je continue d'utiliser et de recommander. Ajoutez le plafond de dépense dur et le filtrage par IP sur vos offres serverless. C'est précisément ce qui manque pour qu'un RSSI vous confie sereinement de la production.A word for the sovereign providers, which I keep using and recommending. Add a hard spend cap and IP allowlisting to your serverless offerings. That is exactly what is missing for a CISO to trust you with production.

En attendant, l'architecture ci-dessus fait le travail, et elle a le bon goût d'être agnostique : je change de fournisseur, ou de modèle, en un seul paramètre, sans toucher à une seule application. C'est d'ailleurs ce qui m'a permis de comparer plusieurs modèles sur mes propres cas d'usage avant de trancher.In the meantime, the architecture above does the job, and it has the good taste of being agnostic: I switch provider, or model, with a single parameter, without touching a single application. That is in fact what let me compare several models on my own use cases before deciding.

La souveraineté, ce n'est pas une case à cocher. C'est fermer les portes une par une, y compris celles que votre fournisseur a oublié de fermer.Sovereignty is not a checkbox. It is closing doors one by one, including the ones your provider forgot to close.