1. Perché proteggere un agent MCP
Punta un agent direttamente su cinque MCP server e hai cinque confini di fiducia, cinque store di credenziali e zero traccia di audit condivisa. Iltools/call che legge un record di un cliente e quello che esegue un comando
shell sembrano identici al modello, e un server della community può
silenziosamente richiedere shell.exec e uno scope di rete esterno la prima
volta che si carica.
La soluzione è rendere OrcaRouter l’unico punto di strozzatura che ogni chiamata
attraversa. Per proteggere il traffico di un agent MCP end to end instradi
tutto il dispatch MCP attraverso il gateway MCP del
Firewall, così ogni tools/call viene valutato dalla policy prima di
raggiungere il server reale — con le skill a cui è assegnato un punteggio di
rischio, l’egress governato e le credenziali cifrate a riposo.
Questa è una ricetta — cuce insieme feature esistenti in un’unica passata di
hardening concreta. Per il riferimento completo, segui i link in
Firewall, MCP server e
Skill.
2. Parti dalla baseline Secure Agents
Prima di scrivere qualsiasi cosa su misura, imposta una postura. Nella console apri Firewall → Posture e applica il livello di autonomiabalanced (ruolo Developer). In una transazione auditerà le chiamate a tool
e segnala le PII mentre nega le azioni più distruttive — osservi prima di
applicare ampiamente, con undo a un clic.
Quando i feed Events e Runs sembrano
giusti, passa a tight: default-deny, shell distruttiva negata, egress a
forma di SSRF negato, più i guardrail PII Shield e Secrets Blocker applicati.
Quel singolo interruttore è il pavimento su cui questa ricetta costruisce.
3. Instrada ogni tools/call attraverso un unico gateway MCP
Registra ogni MCP server una volta; il gateway aggrega i loro tool sotto un’unica connessione (con namespace<server>.<tool>) ed esegue ogni
tools/call attraverso il motore del firewall.
Registra un server dalla console (o dalla REST API, Developer+):
github.create_issue e shell.exec compaiono fianco a fianco sotto
un’unica connessione, e ogni dispatch è valutato prima di girare. Una chiamata
bloccata torna al modello come un errore di tool (firewall deny: …), non un
crash di trasporto, così l’agent può adattarsi.
Prima di poter scrivere regole contro i tool di un server, sondalo per
scoprire i loro nomi e schemi:
4. Metti in quarantine le skill che l’agent tira dentro
Il gateway MCP governa le chiamate; la governance delle skill governa le capability che un agent carica. Ogni skill installabile, MCP server BYO o plugin viene scansionato in una fascia di rischio e una modalità di applicazione che si sovrappone a ogni verdetto di regola:| Modalità | Effetto a runtime |
|---|---|
allow | Decidono i verdetti delle regole; la skill non aggiunge nulla. |
quarantine | Qualsiasi cosa al di sotto di deny viene messa in attesa per pending_approval. |
block | I tool della skill vengono forzati a deny. |
5. Nega l’egress a forma di SSRF
Un tool MCP compromesso o confuso che raggiunge il cloud-metadata o un host di intranet è il classico percorso di esfiltrazione. Due layer lo coprono. Primo, il gateway valida ogni endpoint MCP remoto e il suo IP di dial risolto contro una policy SSRF in fase di registrazione e a ogni hop di dispatch — i range di intranet e l’indirizzo di cloud-metadata vengono rifiutati, ri-controllati per sconfiggere il DNS rebinding. Questo è integrato; non lo configuri. Secondo, il livello di autonomiatight fornisce un preset di egress SSRF
che nega i nomi di tool a forma di fetch — http_fetch, web_search,
fetch_url, request, e le loro forme con namespace <server>.* — così un
tool il cui intero compito è “vai a recuperare questo URL” viene fermato prima
di comporre il numero.
Per governare dove i tool possono arrivare per destinazione, scrivi la tua
regola egress con una deny list di host/CIDR — quella è la superficie per
fissare la portata in uscita:
Nessun preset fornisce regole egress CIDR — il preset SSRF corrisponde sui
nomi di tool, non sulle destinazioni. Scrivi tu stesso la deny list host/CIDR
quando ti serve il controllo a livello di destinazione. Vedi
liste di egress e
fermare l’esfiltrazione.
6. Mantieni cifrate le credenziali dei server
L’auth_json di ogni MCP server è cifrato a riposo e mascherato in lettura; il
gateway inietta le credenziali al momento del dispatch, così non raggiungono mai
il modello o il client. Valori di auth_mode supportati:
bearer
bearer
{ "token": "…" } — un token bearer statico, inviato come
Authorization: Bearer.oauth
oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" } —
OAuth client-credentials; il gateway recupera e rinnova il token.basic
basic
{ "username": "…", "password": "…" } — HTTP Basic auth.none
none
"" — un server non autenticato. Il default.status del server (ok / degraded /
down) dall’ultima
sonda ti dice se è
raggiungibile prima di farci affidamento.
7. Aggiungi un guardrail di contenuto sulla richiesta
Il Firewall governa le azioni; abbinalo a un Guardrail così anche il testo che si muove attraverso il tuo agent MCP viene filtrato. Il preset Secrets Blocker coglie le credenziali in una richiesta prima che il modello — o qualsiasi tool — le veda, e un PII Shield maschera gli identificatori all’ingresso. Entrambi arrivano con il livello di autonomiatight, oppure collega un guardrail nominato alla chiave di relay
dell’agent tramite guardrail_id.
8. Verifica e osserva
Conferma che la policy faccia ciò che ti aspetti prima di fidartene, poi tieni d’occhio i feed:Testa una chiamata a tool
Esegui in dry-run un
tools/call di esempio contro la tua policy e vedi il
verdetto, la regola corrispondente e la motivazione — nulla dispatchato,
nulla loggato.Discovered tools
Ogni tool che il workspace ha visto, marcato covered o gap — scrivi regole
direttamente dal traffico MCP reale.
Events & Runs
Ogni dispatch, il suo verdetto e la superficie che ha colpito, aggregato per
esecuzione dell’agent.
Feed delle anomalie
Picchi di rate/costo, loop di retry e percorsi di tool nuovi rispetto a una
baseline appresa.
9. Dove andare dopo
MCP tool poisoning
Il modello di threat dietro la quarantine e il gateway MCP.
Agenzia eccessiva
Perché default-deny e HITL contano per l’uso autonomo dei tool.
Ricetta per agent autonomo
Hardening di un agent ad alta autonomia end to end.
Fermare l'esfiltrazione
Blinda l’egress in uscita in profondità.
