1. Couche 1 — Clé API à portée limitée
La clé est la première barrière. Avant que tout contenu ne soit inspecté ou qu’un modèle ne soit appelé, la passerelle résout la clé appelante et décide si la requête est même autorisée. Ce que la clé transporte :model_limits— l’ensemble des modèles que la clé peut appeler. Une requête pour un modèle en dehors de la liste est rejetée immédiatement.allow_ips— liste blanche d’IP optionnelle. Une requête depuis une source non répertoriée est rejetée.credit_limit_usd— un plafond de dépenses strict. Une requête qui ferait dépasser ce plafond à la clé est rejetée.expiry— une date d’expiration stricte. Les clés expirées sont rejetées.environment— une étiquette (production,staging,dev, …) pour organiser et identifier la clé par environnement de déploiement.guardrail_id— la politique de guardrail liée à cette clé (voir Couche 2 et Couche 4).firewall_policy_id— la politique firewall liée à cette clé (voir Couche 3).is_firewall_gateway— marque la clé comme token scopé à la passerelle firewall ; requis pour les routes d’évaluation et de passerelle MCP.
is_firewall_gateway et les lectures
de clés en texte clair nécessitent Admin.
Pour le modèle complet des clés, voir
Portée, clés, politiques et espaces de travail.
2. Couche 2 — Guardrails d’entrée
Une fois la clé validée, la passerelle exécute les règles de l’étape input du guardrail lié contre le texte de la requête — avant tout appel au modèle en amont. Ce qu’elle voit : Les messages de l’appelant tels que soumis. (Un prompt injecté depuis un registre de prompts est ajouté plus tard, à l’étape de routage ; les règles d’entrée ne le voient pas.) Types de règles disponibles :keyword, regex, pii, max_chars,
external, llm_judge, grounding.
Actions qu’une règle peut produire :
| Action | Ce qui se passe |
|---|---|
block | La requête est rejetée — HTTP 400 guardrail_blocked. Aucun quota n’est prélevé. Marqué skip-retry. |
mask | La correspondance est redactée (ex. jane@acme.com → [EMAIL]). Le texte assaini continue vers le modèle. |
flag | La correspondance est enregistrée ; le trafic est inchangé. |
block à cette étape signifie que le modèle n’est jamais appelé. Coût :
zéro. L’appelant voit une erreur structurée nommant le guardrail et la règle
qui s’est déclenchée.
Où configurer : Console → Guardrails, ou l’API guardrail. Nécessite
Developer+ pour créer ou modifier. Voir Guardrails
pour la référence complète des règles.
3. Couche 3 — Le modèle s’exécute
Si la clé est valide et que les guardrails d’entrée passent, la passerelle transfère la requête au modèle en amont. C’est la seule couche sans application configurable — c’est simplement le modèle qui fait son travail. Le firewall opère sur les actions que le modèle produit (Couche 3 → Couche 4 ci-dessous), pas sur le modèle lui-même. Le routage, les fallbacks et l’équilibrage de charge se produisent ici de manière transparente.4. Couche 4 — Agent Firewall (appels d’outils et egress)
Après que le modèle répond — ou en ligne, à mesure que les appels d’outils sont émis — l’Agent Firewall juge chaque action que le modèle demande. Quatre surfaces d’application :| Surface | Ce que le firewall voit |
|---|---|
inbound | Les définitions d’outils que l’agent annonce au modèle. Bloquez un outil dangereux avant que le modèle puisse le choisir. |
response | Les tool_calls que le modèle émet dans sa réponse. |
mcp | Un tools/call dispatché via la passerelle MCP du Firewall ou le hook d’évaluation. |
egress | Une destination réseau sortante (host / IP / CIDR) rapportée par un outil — la surface SSRF et d’exfiltration de données. |
| Verdict | Ce qu’il fait |
|---|---|
allow | L’appel continue. Journalisé. |
audit | L’appel continue ; enregistré pour revue. Le default_verdict par défaut. |
deny | L’appel est bloqué — HTTP 400 firewall_blocked sur la surface inbound ; une erreur d’outil sur mcp. |
sanitize | Les sous-chaînes correspondantes sont redactées des arguments de l’outil ; l’appel nettoyé continue. Sur inbound (pas encore d’arguments), escalade en refus. |
pending_approval | L’appel est mis en attente ; un relecteur hors-bande approuve ou rejette ; l’agent re-soumet avec un token d’approbation à usage unique. |
cap_cost | Refus une fois que la dépense accumulée de l’exécution de l’agent dépasse un plafond en centimes par règle. |
deny sur la surface inbound ne coûte aucun token de modèle — le block
se déclenche avant l’appel en amont. Un pending_approval retourne HTTP 400
firewall_approval_pending avec un id d’approbation que le client interroge.
Où configurer : Console → Firewall, ou l’API firewall. Nécessite
Developer+ pour créer ou modifier des politiques et des règles. Voir
Firewall et Règles firewall
pour le langage de règles complet.
5. Couche 5 — Guardrails de sortie
Après que le modèle répond (et après la fin de tout cycle d’appels d’outils), la passerelle exécute les règles de l’étape output du guardrail lié contre le texte de la réponse avant qu’il n’atteigne l’appelant. Les mêmes types de règles et actions s’appliquent qu’en Couche 2. Unblock
de sortie retourne HTTP 400 guardrail_blocked et rembourse le quota
pré-consommé — l’appelant ne paie rien.
Streaming et masquage de sortie. Une action
block est appliquée à la
fois aux réponses streaming et non-streaming — sur un flux, le scanner coupe
en plein vol et émet un remplacement. Une action mask sur la sortie
s’applique actuellement uniquement aux réponses non-streaming ; sur une
réponse streaming le chunk original passe non masqué. Vérifiez votre
combinaison étape/flux dans le sandbox guardrail avant de vous y fier.6. Couche 6 — Audit
Chaque correspondance, verdict et décision d’approbation est écrit dans la piste d’audit, corrélé à l’exécution de l’agent et à la session qui l’a causé. Ce n’est pas une étape d’application séparée — elle s’exécute en parallèle avec les Couches 2–5 — mais c’est la couche qui rend les autres responsables. Ce qui est journalisé :- Correspondances guardrail : type de règle, action, étape, chaîne de détail, et (si Log raw content est activé) la sous-chaîne correspondante.
- Événements firewall : surface, nom d’outil, verdict, règle correspondante, code de raison, facteurs de risque, et l’exécution/session à laquelle l’appel appartient.
- Décisions d’approbation : qui a approuvé ou rejeté, quand, et si la règle sous-jacente a changé entre la mise en attente et la décision.
- Changements de politique : chaque création, mise à jour, suppression et changement de niveau d’autonomie écrit une ligne d’audit versionnée.
7. Tableau récapitulatif
| Couche | Ce qu’elle contrôle | Ce qu’elle voit | Résultat sur un hit | Où configurer |
|---|---|---|---|---|
| 1. Clé à portée limitée | Identité, accès modèle, dépenses, IP, expiration | Le token d’auth de la requête | HTTP 4xx avant que quoi que ce soit ne s’exécute ; pas de mesure | Console → API Keys (Developer+) |
| 2. Guardrails d’entrée | Contenu du texte de la requête | Messages de l’appelant | Block (HTTP 400 guardrail_blocked, sans frais), mask, ou flag | Console → Guardrails (Developer+) |
| 3. Modèle | — | — | — | Config routage / canal |
| 4. Agent Firewall | Appels d’outils, dispatch MCP, egress | Nom d’outil, arguments, destination | allow / audit / deny / sanitize / pending_approval / cap_cost | Console → Firewall (Developer+) |
| 5. Guardrails de sortie | Contenu du texte de la réponse | Réponse du modèle | Block (HTTP 400, quota remboursé), mask, ou flag | Console → Guardrails (Developer+) |
| 6. Audit | Attribution et piste | Tout ce qui précède | Entrée de journal immuable | Console → Matches (Member) / Events & Runs (Developer+) |
8. Ordre de résolution des politiques
Pour toute requête, le guardrail actif et la politique firewall sont résolus indépendamment :- Attachement de clé — si la clé porte un
guardrail_idou unfirewall_policy_idexplicite, cette politique s’applique (lorsqu’elle existe et est activée). - Défaut de l’espace de travail — si la clé n’a pas d’attachement, le
guardrail ou la politique
is_defaultactivé de l’espace de travail s’applique. - Ni l’un ni l’autre — aucune application. La requête est byte-identique à un espace de travail qui n’a jamais activé la fonctionnalité.
9. Fail-open et fail-closed
Deux comportements — appliqués à des cas différents.Fail-open (erreurs transitoires) : Si la résolution de la politique
rencontre une erreur transitoire — un hoquet de BD, une interruption réseau
vers un fournisseur externe — la passerelle dégrade vers aucune application
plutôt que de couper le trafic. La sécurité se dégrade ; la disponibilité
est préservée. Configurez
fail_open: false sur les règles external ou
llm_judge quand une vérification manquée est inacceptable pour votre
politique.Fail-closed (cas ambigus) : Là où ne pas appliquer ferait échouer la
règle, le moteur fail closed : un rapport d’egress avec une destination
non résolvable est refusé ; un store d’approbation inaccessible met l’appel
en attente plutôt que de le laisser passer ; un skill dont la propriété ne
peut être résolue est bloqué. La disponibilité est préservée sur le chemin
heureux ; la sécurité n’est pas silencieusement ignorée sur les cas limites
qui comptent.10. Approfondissements
Guardrails
Référence complète des règles — types, actions, entités PII, juge LLM,
ancrage, et le sandbox de test.
Firewall
Modèle de politique, verdicts, surfaces, mode shadow, approbation HITL,
et détection d’anomalies.
Règles firewall
Le langage de correspondance des règles — globs d’outils, clauses
d’arguments, listes d’egress et assainisseurs.
Guardrails vs. Firewall
Quelle couche intercepte quelle menace — et quand vous avez besoin des
deux.
Portée, clés et politiques
Le modèle complet des clés : ce qu’une clé transporte et comment les
politiques se résolvent.
Modes d'application
Fail-open vs. fail-closed — l’arbre de décision complet.
