Vai al contenuto principale
Un MCP server registrato pubblicizza qualsiasi tool voglia — e un agent chiamerà volentieri uno qualsiasi di essi. La postura sicura è l’inverso: decidi la breve lista di tool che ti servono davvero, consenti esattamente quelli, e nega il resto. È un’allow-list, e su OrcaRouter la costruisci a partire da regole tool_name_glob valutate sulla superficie mcp. Ogni tools/call che attraversa il gateway MCP passa attraverso la tua policy del firewall prima di raggiungere il server reale. Quindi l’allow-list non è consultiva — una chiamata a un tool che non hai consentito non viene mai dispacciata.
L’editing della policy è un’azione di console. Le route /api/workspace/firewall/* si autenticano con il tuo session / access token, non con una chiave relay sk-orca-…. Scrivere regole richiede il ruolo Developer+; qualsiasi membro del workspace (fino a Viewer) può leggere le policy e il feed dei tool scoperti.

1. Perché un’allow-list default-deny per secure mcp tools

Una deny-list — “blocca i tool pericolosi” — fallisce nel momento in cui un server aggiunge un nuovo tool, ne rinomina uno, o connetti un secondo server. L’insieme dei tool pericolosi è aperto; l’insieme che intendevi usare è piccolo e noto. Un’allow-list inverte il default così l’ignoto viene rifiutato, non ammesso:
  • I nuovi tool sono negati per default. Un server che fa crescere un tool delete_repo dopo che l’hai connesso non può essere chiamato finché non lo aggiungi all’allow-list.
  • Lo scope è per server. Il namespace <server>.<tool> ti lascia consentire github.create_issue negando tutto il resto sotto github.*.
  • Un punto di strozzatura. La stessa policy governa il server bundled e ogni server BYO dietro il gateway, così c’è un unico posto dove leggere l’allow-list.
L’allow-listing si abbina naturalmente con l’observe mode: attivalo prima, lascia che il traffico reale popoli il feed dei Tool Scoperti, poi promuovi i tool che vedi in regole allow esplicite e fai passare il default a deny.

2. I due pezzi

Un’allow-list è un default_verdict più un insieme ordinato di regole.

default_verdict: deny

Il fallback della policy per qualsiasi tools/call che nessuna regola matcha. Impostalo su deny e qualsiasi cosa non hai esplicitamente consentito è bloccata. (Accetta anche allow e auditaudit è il default.)

regole allow

Una regola per tool (o per glob). Ciascuna porta un tool_name_glob e un verdetto allow. Un tools/call che matcha il glob si risolve in allow e fa il dispatch; tutto il resto ricade sul default deny.
Il glob è confrontato con il nome del tool con namespace — github.create_issue, shell.exec. * matcha qualsiasi tool (usalo con parsimonia; una regola allow con * annulla l’intera allow-list). Un <server>. iniziale dà scope al glob a un solo server.

3. Un esempio concreto

Hai connesso un server github e vuoi solo che gli agent leggano e aprano issue — mai eliminare o amministrare nulla. Nella console, apri Firewall → Policies, imposta il verdetto di default della policy su deny, e aggiungi due regole allow:
Ordinetool_name_globVerdetto
1github.create_issueallow
2github.list_issuesallow
Questa è l’intera allow-list. Con il default a deny:
  • github.create_issue → matcha la regola 1 → allow, fa il dispatch.
  • github.delete_repo → non matcha nulla → deny per default.
Una chiamata MCP negata torna al modello come un errore di tool (firewall deny: …) — la stessa forma che restituisce qualsiasi tool che fallisce — così l’agent può adattarsi anziché andare in crash. (Sulla superficie inbound un deny è invece un HTTP 400 con codice di errore firewall_blocked.)
Le regole sono ordinate e valutate dall’alto verso il basso. Non mettere un ampio tool_name_glob: github.* allow sopra le tue regole deny specifiche — il primo match vince e il wildcard ammetterebbe proprio i tool che intendevi escludere. Nel dubbio, mantieni l’allow-list ristretta e appoggiati al default deny anziché ai wildcard.

4. Stringere con gli argomenti

Un nome di tool sull’allow-list può comunque essere chiamato con argomenti errati. Restringi ulteriormente aggiungendo una clausola args_match (JSONPath + un operatore come eq, contains, regex, in o cidr_match) alla regola, o stratificando una regola deny sopra l’allow per una forma di argomento specifica — per esempio, consenti github.create_issue ma fai deny quando il repo target non è su una lista approvata. Vedi il riferimento delle regole del firewall per l’insieme completo di operatori.
sanitize redige gli argomenti di una chiamata a tool prima di inoltrare — non tocca mai ciò che un tool restituisce. Per ritagliare il contenuto restituito, quello è un controllo diverso; vedi sanitizzare l’output dei tool.

5. Fai il rollout in sicurezza

Fai scattare un default-deny per tutto un server in produzione e rischi di rompere un agent che dipendeva in silenzio da un tool che hai dimenticato. Due impostazioni lo rendono meno rischioso:
Un flag per-policy che declassa i verdetti enforcing a audit. Il tuo default deny e le regole deny loggano [shadow] would deny … invece di bloccare, così puoi validare l’allow-list contro il traffico reale prima che morda. Leggi di più in modalità di applicazione.
Un’impostazione del workspace che logga ogni chiamata non coperta come una lacuna nel feed dei Tool Scoperti. Eseguila prima di scrivere l’allow-list per imparare esattamente quali tool chiamano i tuoi agent, poi promuovi ciascuno in una regola allow esplicita.
Una volta che il log shadow è pulito — nessuna chiamata legittima sarebbe stata negata — togli shadow_mode e l’allow-list viene applicata.

6. Verifica che funzioni

Dopo l’enforcing, conferma che i tool negati vengano effettivamente rifiutati:
  • Dry-run di un tools/call contro la policy (Developer+) per vedere il verdetto e quale regola — o il default — l’ha prodotto, senza inviare traffico reale. Passa un nome di tool, una superficie e args di esempio; il motore li valuta e restituisce la traccia del verdetto senza registrare un evento.
  • Osserva gli eventi. Ogni chiamata bloccata registra un evento del firewall che un Developer+ può leggere nella console; la pagina eventi di audit copre il feed e i suoi campi.
Preferisci non scrivere a mano ogni regola? Il preset di autonomia tight scrive una policy default-deny per te (più regole deny per i tool shell distruttivi e i nomi di tool a forma di fetch), poi aggiungi indietro i tool specifici che ti servono. Vedi modalità di applicazione per cosa installa ogni livello di autonomia.

Correlati

Connettere un MCP server

Registra un server prima di poter mettere in allow-list i suoi tool.

Firewall: MCP server

Il comportamento a runtime del gateway e i verdetti per chiamata.

Riferimento delle regole del firewall

Il DSL completo delle regole — glob, args_match, egress, sanitize.

Chiamate a tool pericolose

La minaccia che un’allow-list è costruita per contenere.

Limiti di egress

Governa dove un tool consentito può arrivare.

Guardrails vs. firewall

Quando ricorrere alla policy sui contenuti vs. alla policy sui tool.