1. Les deux familles de routes
Console — configurer
/api/workspace/firewall/*. Authentifiée par votre token de session / accès
(UserAuth), scopée à votre espace de travail actif. Rédigez des politiques,
lisez des événements, enregistrez des serveurs MCP, résolvez des approbations.
Chaque action est gardée par rôle.Passerelle — appliquer
/api/v1/firewall/*. Authentifiée par une clé scopée à la passerelle firewall
(une clé avec is_firewall_gateway activé). La surface machine-à-machine que
votre agent ou client MCP appelle à l’exécution. Une clé de relais ordinaire reçoit
un 403 ici.sk-orca-…, et les routes
de passerelle ne prennent jamais un token de session. Les confondre est le 401/403
le plus fréquent lors du premier câblage du firewall. La seule clé sk-orca-… qui a sa
place sur un appel /v1/firewall/* est une clé frappée avec is_firewall_gateway
activé — voir Portée, clés et politiques.2. Les rôles en un coup d’œil
Les routes de console résolvent votre rôle d’espace de travail et gardent en conséquence. Les lectures qui ne portent aucune provenance d’appel d’outil sont ouvertes à tout membre ; les écritures et tout ce qui expose des arguments d’appel d’outil requièrent Developer+.| Rôle | Peut faire |
|---|---|
| Viewer / membre | Lire les réglages, politiques, presets, outils découverts, simuler, anomalies. |
| Developer+ | Tout ce qui précède, plus chaque écriture, la surface events/runs/trace, et le dry-run test. |
| Admin+ | En plus, activer le flag is_firewall_gateway sur une clé et lire le texte en clair d’une clé de passerelle. |
3. Configurer une politique depuis la console
Les routes de console sont la manière dont vous rédigez et inspectez une politique. Vous configurez tout dans l’UI du dashboard — ce sont les mêmes endpoints qu’elle appelle.Politiques & réglages
| Méthode & chemin | Rôle | Objectif |
|---|---|---|
GET /api/workspace/firewall/settings | Member | Mode observe + comptes. |
PUT /api/workspace/firewall/settings | Developer+ | Mettre à jour les réglages firewall de l’espace de travail. |
GET /api/workspace/firewall/policies | Member | Lister les politiques. |
GET /api/workspace/firewall/policies/:id | Member | Détail d’une seule politique. |
POST /api/workspace/firewall/policies | Developer+ | Créer une politique. |
PUT /api/workspace/firewall/policies | Developer+ | Mettre à jour une politique. |
DELETE /api/workspace/firewall/policies/:id | Developer+ | Supprimer une politique. |
POST /api/workspace/firewall/rules | Developer+ | Ajouter une règle. |
PUT /api/workspace/firewall/rules | Developer+ | Mettre à jour une règle. |
DELETE /api/workspace/firewall/rules/:id | Developer+ | Supprimer une règle. |
Posture, presets & sandboxes
| Méthode & chemin | Rôle | Objectif |
|---|---|---|
GET /api/workspace/firewall/presets | Member | Presets de règles intégrés. |
GET /api/workspace/firewall/templates | Member | Galerie de templates par cas d’usage. |
POST /api/workspace/firewall/templates/apply | Developer+ | Appliquer un template → une politique + ses règles. |
POST /api/workspace/firewall/autonomy | Developer+ | Appliquer un niveau d’autonomie (tight / balanced / permissive). |
POST /api/workspace/firewall/autonomy/undo/:audit_id | Developer+ | Annulation en un clic depuis le snapshot d’audit. |
GET /api/workspace/firewall/simulate | Member | Ce qu’un niveau bloquerait (?level=). |
POST /api/workspace/firewall/test | Developer+ | Exécuter en dry-run une politique contre un appel d’échantillon. |
Observabilité
| Méthode & chemin | Rôle | Objectif |
|---|---|---|
GET /api/workspace/firewall/discovered-tools | Member | Outils vus, marqués covered / gap. |
GET /api/workspace/firewall/events | Developer+ | Lister les événements firewall (filtrables). |
GET /api/workspace/firewall/events/by-request/:request_id | Developer+ | Événements pour une requête. |
GET /api/workspace/firewall/events/aggregate | Developer+ | Récapitulatif par exécutions / sessions. |
GET /api/workspace/firewall/trace/by-run | Developer+ | Nœuds de trace pour une exécution (?run_id=). |
GET /api/workspace/firewall/anomalies | Member | Flux d’anomalies. |
POST /api/workspace/firewall/anomalies/snooze | Developer+ | Mettre en sourdine le flux (≤ 7 jours). |
Serveurs MCP
Enregistrez les serveurs Model Context Protocol que vos agents atteignent, derrière une seule passerelle auditée. Les identifiants sont stockés chiffrés et masqués à la lecture.| Méthode & chemin | Rôle | Objectif |
|---|---|---|
GET /api/workspace/firewall/mcp_servers | Member | Lister les serveurs enregistrés. |
GET /api/workspace/firewall/mcp_servers/:id | Member | Détail d’un serveur. |
POST /api/workspace/firewall/mcp_servers | Developer+ | Enregistrer un serveur (409 sur un name en double). |
PUT /api/workspace/firewall/mcp_servers | Developer+ | Mettre à jour un serveur. |
DELETE /api/workspace/firewall/mcp_servers/:id | Developer+ | Retirer un serveur. |
POST /api/workspace/firewall/mcp_servers/:id/probe | Developer+ | Handshake de joignabilité + tools/list. |
name unique, un endpoint, un auth_mode
(none / bearer / oauth / basic), et un status de santé
(ok / degraded / down). Voir Firewall MCP pour le
cycle de vie complet et la mise en quarantaine des skills.
4. Appliquer à la passerelle
Celles-ci s’exécutent sur une clé scopée à la passerelle firewall, pas sur votre session. Ce sont celles que votre boucle d’agent ou client MCP appelle à l’exécution.| Méthode & chemin | Objectif |
|---|---|
POST /api/v1/firewall/evaluate | Verdict pré-dispatch pour un appel d’outil. |
POST /api/v1/firewall/evaluate_plan | Vérification pré-exécution pour un plan multi-étapes. |
ANY /api/v1/firewall/mcp | L’endpoint unifié de la passerelle MCP. |
GET /api/v1/firewall/mcp_servers | Énumérer les serveurs enregistrés de l’espace de travail. |
GET /api/v1/firewall/approvals/:id | Interroger l’état d’approbation d’un appel en attente. |
POST /api/v1/firewall/approvals/:id/callback | Callback d’approbation signé HMAC. |
Un exemple concret : évaluer un appel d’outil
Avant que votre agent ne dispatche un outil, demandez un verdict à la passerelle. Passez la clé scopée à la passerelle firewall — pas votre clé de relaissk-orca-… :
allow, audit, deny, sanitize, ou
pending_approval. Sur deny vous sautez l’appel et faites remonter la raison au
modèle ; sur sanitize vous transmettez les arguments nettoyés que la passerelle
vous rend (sanitize redacte uniquement les arguments de l’appel d’outil — jamais le
contenu qu’un outil renvoie) ; sur pending_approval vous entrez dans la boucle
d’approbation ci-dessous.
5. Le handshake d’approbation (HITL)
Un verdictpending_approval met l’appel en attente d’un humain. L’erreur HTTP pendant
l’attente est firewall_approval_pending. Le débloquer est une boucle en trois étapes
répartie sur les deux familles de routes :
Un relecteur résout la mise en attente
PATCH /api/workspace/firewall/approvals/:id, Developer+), ou
votre propre système poste un callback signé HMAC vers
POST /api/v1/firewall/approvals/:id/callback. Le callback vérifie le HMAC en
ligne — aucune autre auth n’est acceptée.Votre agent interroge l'approbation
GET /api/v1/firewall/approvals/:id avec la clé de passerelle, jusqu’à ce que
l’état bascule en approuvé ou rejeté.6. À quoi ressemble un block
| Issue | HTTP | Code |
|---|---|---|
| Appel d’outil refusé (surface inbound) | 400 | firewall_blocked |
| Refusé via la passerelle MCP | erreur d’outil | firewall deny: <reason> |
| Mis en attente d’approbation | 400 | firewall_approval_pending |
firewall_blocked est marqué skip-retry — ré-exécuter l’appel identique ne ferait
que bloquer à nouveau, donc un client qui réessaie temporise plutôt que de marteler. La
liste complète des codes vit dans Codes d’erreur.
7. Références associées
API Guardrail
/api/guardrail/* pour le plan de
texte.Glossaire des verdicts
Glob et JSONPath
tool_name_glob et args_match.API Compliance
8. FAQ
Pourquoi ma clé de relais reçoit-elle un 403 sur /api/v1/firewall/evaluate ?
Pourquoi ma clé de relais reçoit-elle un 403 sur /api/v1/firewall/evaluate ?
is_firewall_gateway activé (une action Admin+). Une clé de
relais ordinaire, même valide, reçoit un 403. Frappez une clé de passerelle
dédiée pour votre runtime d’agent.Un viewer peut-il lire les événements firewall ?
Un viewer peut-il lire les événements firewall ?
events, events/aggregate, et trace sont Developer+ parce que
les enregistrements portent la provenance des arguments d’appel d’outil. Les
viewers peuvent lire les réglages, politiques, presets, outils découverts,
simuler, et le flux d’anomalies.Où résoudre une approbation en attente — console ou passerelle ?
Où résoudre une approbation en attente — console ou passerelle ?
PATCH /api/workspace/firewall/approvals/:id (Developer+), ou votre propre
système poste une décision signée HMAC vers
POST /api/v1/firewall/approvals/:id/callback. L’agent interroge
GET /api/v1/firewall/approvals/:id peu importe quel chemin l’a résolue.Sanitize nettoie-t-il ce qu'un outil renvoie ?
Sanitize nettoie-t-il ce qu'un outil renvoie ?
sanitize redacte uniquement les arguments de l’appel d’outil
— jamais le contenu qu’un outil renvoie. Sur la surface inbound, où il n’y a pas
encore d’arguments au moment de l’appel, sanitize escalade en un block. Voir
Règles du Firewall.Pour savoir comment ces contrôles se composent avec les guardrails et le reste de la passerelle, voir Sécuriser les agents IA et Guardrails vs Firewall.
