Passer au contenu principal
OrcaRouter applique quatre couches à chaque requête dans un ordre fixe. Chaque couche est indépendante, à portée d’espace de travail, et s’attache à une clé API sans changement de code. Cette page fait traverser une requête à travers les quatre couches en séquence, puis couvre l’ordre de résolution et le comportement fail-open/fail-closed. Pour une introduction plus large, voir Sécuriser les agents IA avec OrcaRouter.

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.
Une requête qui échoue à la validation de la clé n’atteint jamais un modèle — et n’est jamais mesurée. Où configurer : Console → API Keys, ou l’API token. Nécessite Developer+ pour créer ou modifier ; 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 :
ActionCe qui se passe
blockLa requête est rejetée — HTTP 400 guardrail_blocked. Aucun quota n’est prélevé. Marqué skip-retry.
maskLa correspondance est redactée (ex. jane@acme.com[EMAIL]). Le texte assaini continue vers le modèle.
flagLa correspondance est enregistrée ; le trafic est inchangé.
Un 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 :
SurfaceCe que le firewall voit
inboundLes définitions d’outils que l’agent annonce au modèle. Bloquez un outil dangereux avant que le modèle puisse le choisir.
responseLes tool_calls que le modèle émet dans sa réponse.
mcpUn tools/call dispatché via la passerelle MCP du Firewall ou le hook d’évaluation.
egressUne destination réseau sortante (host / IP / CIDR) rapportée par un outil — la surface SSRF et d’exfiltration de données.
Verdicts qu’une règle (ou le défaut) peut produire :
VerdictCe qu’il fait
allowL’appel continue. Journalisé.
auditL’appel continue ; enregistré pour revue. Le default_verdict par défaut.
denyL’appel est bloqué — HTTP 400 firewall_blocked sur la surface inbound ; une erreur d’outil sur mcp.
sanitizeLes 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_approvalL’appel est mis en attente ; un relecteur hors-bande approuve ou rejette ; l’agent re-soumet avec un token d’approbation à usage unique.
cap_costRefus une fois que la dépense accumulée de l’exécution de l’agent dépasse un plafond en centimes par règle.
Un 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. Un block 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.
Où consulter : Console → Guardrails → Matches ; Console → Firewall → Events, Runs & Sessions, Audit. Le flux Matches des guardrails est ouvert à tout Member de l’espace de travail ; les flux Events et Runs & Sessions du firewall nécessitent Developer+.

7. Tableau récapitulatif

CoucheCe qu’elle contrôleCe qu’elle voitRésultat sur un hitOù configurer
1. Clé à portée limitéeIdentité, accès modèle, dépenses, IP, expirationLe token d’auth de la requêteHTTP 4xx avant que quoi que ce soit ne s’exécute ; pas de mesureConsole → API Keys (Developer+)
2. Guardrails d’entréeContenu du texte de la requêteMessages de l’appelantBlock (HTTP 400 guardrail_blocked, sans frais), mask, ou flagConsole → Guardrails (Developer+)
3. ModèleConfig routage / canal
4. Agent FirewallAppels d’outils, dispatch MCP, egressNom d’outil, arguments, destinationallow / audit / deny / sanitize / pending_approval / cap_costConsole → Firewall (Developer+)
5. Guardrails de sortieContenu du texte de la réponseRéponse du modèleBlock (HTTP 400, quota remboursé), mask, ou flagConsole → Guardrails (Developer+)
6. AuditAttribution et pisteTout ce qui précèdeEntrée de journal immuableConsole → 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 :
  1. Attachement de clé — si la clé porte un guardrail_id ou un firewall_policy_id explicite, cette politique s’applique (lorsqu’elle existe et est activée).
  2. Défaut de l’espace de travail — si la clé n’a pas d’attachement, le guardrail ou la politique is_default activé de l’espace de travail s’applique.
  3. 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é.
Les deux plans diffèrent lorsqu’une politique attachée est désactivée : un attachement de guardrail désactivé désactive les guardrails pour cette clé (sans fallback), tandis qu’un attachement de firewall désactivé revient à la politique firewall par défaut de l’espace de travail. Au plus un guardrail et une politique firewall par espace de travail peuvent être le défaut. Promouvoir un nouveau défaut rétrograde l’ancien dans la même transaction.

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.
Voir Modes d’application pour l’arbre de décision complet, et Comment OrcaRouter inspecte les requêtes pour les mécaniques du chemin de relais.

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.
Chaque appel à travers OrcaRouter passe par les quatre couches d’application dans l’ordre — validation de clé, filtrage d’entrée, jugement firewall, filtrage de sortie — avec une piste d’audit complète écrite à travers toutes.