Tout ici se lie à votre espace de travail et est configuré depuis la
console. Votre agent continue d’appeler
https://api.orcarouter.ai/v1/...
avec la même clé sk-orca-... — seule la politique dans la passerelle
change. Les actions de configuration nécessitent les rôles indiqués à
chaque étape ; les appels de relais utilisent la clé scopée. Le firewall ne
voit l’egress que pour les destinations routées à travers la passerelle (le
chemin de dispatch MCP ou le hook d’évaluation) — routez vos appels
d’outils liés au réseau à travers elle et ils sont gouvernés.1. Les trois couches qui préviennent l’exfiltration de données IA
Chaque couche attrape l’attaque à un point différent du cycle de vie de la requête. Empilez les trois — elles sont indépendantes et complémentaires.Identifiants dans le prompt
Un secret collé dans (ou tiré dans) la requête est attrapé au stage
input par le guardrail Secrets Blocker — avant qu’aucun modèle ne le
voie.
Secrets dans les args d'outil
Un modèle qui émet un appel d’outil portant un identifiant est nettoyé
par une règle de firewall sanitize, qui redacte l’argument
correspondant.
Destination sortante
L’étape réseau effective est bornée par une allow-list d’egress —
seuls les hôtes énumérés passent ; tout le reste est refusé.
2. Arrêtez les identifiants au prompt — le guardrail Secrets Blocker
La première chose à verrouiller est l’identifiant lui-même. Le guardrail Secrets & API-Key Blocker s’exécute au stage input et scanne la requête à la recherche de motifs d’identifiants — clés d’accès de style AWS, clés OpenAI, JWTs, et tokens similaires — avant que la requête ne quitte la passerelle. Sur une correspondance, la requête est bloquée : l’identifiant n’atteint jamais un modèle et n’atterrit jamais dans un appel d’outil. Dans la console, ouvrez Guardrails → Nouveau guardrail (le rôle Developer ; les lectures et la sandbox Test sont ouvertes à tout membre), nommez-leexfil-shield, et appliquez le preset Secrets &
API-Key Blocker depuis la bibliothèque de templates (catégorie
secrets). Le preset sème trois règles de block regex au stage
input, une par forme d’identifiant — clés d’accès AWS, clés de style
OpenAI, et tokens GitHub :
guardrail_blocked, ne coûte
aucun quota (un block au stade input se déclenche avant le metering),
et est marquée skip-retry. Prouvez-le dans l’onglet Test — collez une
clé AWS d’échantillon, choisissez le stage input, et confirmez le
verdict — avant d’attacher une clé.
3. Assainissez les secrets hors des arguments d’appel d’outil
Un guardrail filtre le prompt ; il ne voit pas les appels d’outils qu’un modèle émet. Quand le modèle produit untool_call dont les arguments
portent un identifiant, une règle de firewall sanitize l’attrape.
Sanitize redacte les sous-chaînes correspondantes des arguments d’appel
d’outil et transmet l’appel nettoyé — l’outil s’exécute, mais avec le
secret retiré.
Dans Firewall → Policies → Nouvelle politique (rôle Developer),
nommez-la exfil-firewall et ajoutez une règle sanitize sur la surface
response — les tool_calls que le modèle émet dans sa réponse :
4. Verrouillez les destinations sortantes — l’allow-list d’egress
La défense la plus durable est la frontière réseau elle-même : énumérez les hôtes que vos agents sont légitimement autorisés à atteindre et refusez tout le reste. Une règle d’egress utilisestage: egress et le champ
egress ; le verdict définit la polarité — allow laisse passer les
destinations listées et un deny catch-all de priorité inférieure bloque
le reste.
Ajoutez ces règles à la même politique exfil-firewall :
169.254.169.254) et les plages
privées RFC-1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Un appel
refusé renvoie une HTTP 400 firewall_blocked.
Aucun preset ne livre de règles d’egress CIDR — vous rédigez vous-même les
entrées allow et deny host/CIDR. Le niveau d’autonomie
tight est le chemin rapide adjacent : il refuse purement et simplement les
noms d’outils de forme « fetch » (http_fetch, web_search,
fetch_url, request), supprimant la capacité réseau avant qu’une
destination ne soit jamais évaluée. Utilisez-le quand votre agent n’a pas du
tout besoin de ces outils.5. Attachez une seule clé scopée
Une politique ne s’applique que sur les clés qui s’y résolvent. Donnez à l’agent sa propre clé, scopée au minimum dont il a besoin — jamais votre clé à portée de compte. Dans API Keys → Nouvelle clé (rôle Developer) :Attacher les deux politiques
Attacher les deux politiques
Choisissez
exfil-shield dans le menu déroulant Guardrail (définit
guardrail_id) et exfil-firewall dans le menu déroulant Firewall
policy (définit firewall_policy_id). Les deux liaisons vivent sur la
clé dans la passerelle. Un attachement explicite de guardrail ne retombe
jamais silencieusement — le désactiver est l’interrupteur d’arrêt. Une
politique firewall désactivée, en revanche, retombe sur la politique
par défaut de l’espace de travail.Plafonner le rayon d'explosion
Plafonner le rayon d'explosion
Définissez
credit_limit_usd à un plafond raisonnable (0 = illimité)
afin qu’une clé compromise ne puisse pas drainer le quota, et allow_ips
sur les IPs d’egress de votre backend si l’agent appelle depuis un
serveur fixe. Définissez un expired_time pour les clés temporaires
(-1 = n’expire jamais).exfil-shield et
chaque appel d’outil à travers exfil-firewall sans qu’aucun code ne soit
conscient que l’application a lieu.
6. Déployez avec le mode shadow, puis surveillez
Si vous ne connaissez pas encore chaque hôte que votre agent atteint légitimement, n’appliquez pas à l’aveugle — observez d’abord. Voir modes d’application pour le chemin complet observe → shadow → enforce.Shadow les règles d'egress
Définissez
shadow_mode: true sur exfil-firewall. Chaque verdict
appliquant est rétrogradé en audit et journalisé comme [shadow] would deny avec la destination. Aucun trafic n’est bloqué tant que le mode
shadow est activé.Surveillez les flux
Firewall → Events / Runs (Developer+) montre chaque appel d’outil et
destination d’egress que votre agent a touchés et ce qui aurait été
refusé. Guardrails → Matches (tout Member) montre chaque secret que
le guardrail d’input a attrapé. Ajustez la liste
allow d’egress
jusqu’à ce que seuls les hôtes joignables par un attaquant soient
refusés.Le flux Matches enregistre la sous-chaîne correspondante uniquement
quand Log raw content est activé pour le guardrail (désactivé par
défaut — la posture prudente en matière de vie privée). Marquez un faux
positif (Admin) pour ajuster la politique. Chaque changement de
guardrail écrit une ligne d’historique de versions que vous pouvez comparer
et restaurer ; les changements de politique firewall sont enregistrés dans
la piste d’audit.
7. Couverture en un coup d’œil
| Étape d’exfiltration | Couche qui l’arrête |
|---|---|
| L’identifiant entre dans la requête | Guardrail Secrets Blocker (input) |
| Le modèle émet un appel d’outil portant un secret | Règle de firewall sanitize (surface response) |
| L’outil compose vers un hôte attaquant | Règle d’egress allow / deny |
| L’agent atteint le cloud metadata ou RFC-1918 | Règle de deny d’egress listant ces CIDRs |
| Un outil de forme « fetch » offert au modèle | Niveau d’autonomie tight (deny de nom d’outil) |
8. Où aller ensuite
Référence règles du firewall
Le langage de correspondance complet — listes d’egress, CIDRs,
assainisseurs, et tous les verdicts.
Menace d'exfiltration de données
L’anatomie d’attaque contre laquelle cette recette se défend, de bout en
bout.
Durcir un agent MCP
Gouvernez chaque
tools/call qu’un agent dispatche à travers un serveur
MCP.Journalisation sans PII
Gardez les données sensibles hors de vos journaux de requêtes et du flux
Matches.
