Saltar al contenido principal
Un servidor MCP registrado anuncia las herramientas que quiera — y un agente felizmente llamará a cualquiera de ellas. La postura segura es la inversa: decide la lista corta de herramientas que realmente necesitas, permite exactamente esas y deniega el resto. Eso es una lista de permitidos, y en OrcaRouter la construyes a partir de reglas tool_name_glob evaluadas en la superficie mcp. Cada tools/call que cruza el gateway MCP se ejecuta a través de tu política de firewall antes de que llegue al servidor real. Así que la lista de permitidos no es consultiva — una llamada a una herramienta que no permitiste nunca se despacha.
La edición de políticas es una acción de consola. Las rutas /api/workspace/firewall/* se autentican con tu token de sesión / acceso, no con una clave de relay sk-orca-…. Escribir reglas requiere el rol Developer+; cualquier miembro del espacio de trabajo (hasta Viewer) puede leer políticas y el feed de herramientas descubiertas.

1. Por qué una lista de permitidos de denegación por defecto para secure mcp tools

Una lista de denegación — “bloquea las herramientas peligrosas” — falla en el momento en que un servidor añade una nueva herramienta, renombra una, o conectas un segundo servidor. El conjunto de herramientas peligrosas es abierto; el conjunto que quisiste usar es pequeño y conocido. Una lista de permitidos invierte el valor por defecto para que lo desconocido se rechace, no se admita:
  • Las herramientas nuevas se deniegan por defecto. Un servidor que crece una herramienta delete_repo después de que lo conectaste no puede llamarse hasta que la añadas a la lista de permitidos.
  • El alcance es por servidor. El espacio de nombres <server>.<tool> te deja permitir github.create_issue mientras deniegas todo lo demás bajo github.*.
  • Un punto de estrangulamiento. La misma política gobierna el servidor incluido y cada servidor BYO detrás del gateway, así que hay un solo lugar para leer la lista de permitidos.
La lista de permitidos se empareja naturalmente con el modo observe: actívalo primero, deja que el tráfico real poble el feed de Herramientas Descubiertas, luego promueve las herramientas que ves a reglas allow explícitas y cambia el valor por defecto a deny.

2. Las dos piezas

Una lista de permitidos es un default_verdict más un conjunto ordenado de reglas.

default_verdict: deny

El recurso de la política para cualquier tools/call que ninguna regla coincide. Ponlo en deny y cualquier cosa que no permitiste explícitamente se bloquea. (También acepta allow y auditaudit es el valor por defecto.)

reglas allow

Una regla por herramienta (o por glob). Cada una lleva un tool_name_glob y un veredicto de allow. Un tools/call que coincide con el glob resuelve a allow y se despacha; todo lo demás cae al valor por defecto deny.
El glob se coteja contra el nombre de herramienta con espacio de nombres — github.create_issue, shell.exec. * coincide con cualquier herramienta (úsalo con moderación; una regla allow con * deshace toda la lista de permitidos). Un <server>. inicial acota el glob a un servidor.

3. Un ejemplo concreto

Conectaste un servidor github y solo quieres que los agentes lean y abran issues — nunca eliminar ni administrar nada. En la consola, abre Firewall → Policies, establece el veredicto por defecto de la política en deny, y añade dos reglas allow:
Ordentool_name_globVeredicto
1github.create_issueallow
2github.list_issuesallow
Esa es toda la lista de permitidos. Con el valor por defecto en deny:
  • github.create_issue → coincide con la regla 1 → allow, se despacha.
  • github.delete_repo → no coincide con nada → deny por defecto.
Una llamada MCP denegada vuelve al modelo como un error de herramienta (firewall deny: …) — la misma forma que devuelve cualquier herramienta que falla — así el agente puede adaptarse en vez de fallar. (En la superficie inbound un deny es en cambio un HTTP 400 con el código de error firewall_blocked.)
Las reglas están ordenadas y se evalúan de arriba abajo. No pongas un allow amplio tool_name_glob: github.* por encima de tus reglas de deny específicas — la primera coincidencia gana y el comodín admitiría las mismísimas herramientas que querías excluir. En la duda, mantén la lista de permitidos estrecha y apóyate en el valor por defecto deny en vez de comodines.

4. Apretar con argumentos

Un nombre de herramienta en la lista de permitidos todavía puede llamarse con malos argumentos. Acota más añadiendo una cláusula args_match (JSONPath + un operador como eq, contains, regex, in o cidr_match) a la regla, o poniendo en capa una regla deny por encima del allow para una forma de argumento específica — por ejemplo, permite github.create_issue pero denylo cuando el repo objetivo no esté en una lista aprobada. Ver la referencia de reglas del firewall para el conjunto completo de operadores.
sanitize redacta los argumentos de una llamada a herramienta antes de reenviar — nunca toca lo que una herramienta devuelve. Para recortar el contenido devuelto, ese es un control diferente; ver sanear la salida de herramientas.

5. Despliégalo con seguridad

Cambia una denegación por defecto de servidor entero en producción y arriesgas romper un agente que dependía silenciosamente de una herramienta que olvidaste. Dos ajustes lo reducen de riesgo:
Un flag por política que degrada los veredictos enforcing a audit. Tu valor por defecto deny y tus reglas deny registran [shadow] would deny … en vez de bloquear, así puedes validar la lista de permitidos contra el tráfico real antes de que muerda. Lee más en modos de cumplimiento.
Un ajuste de espacio de trabajo que registra cada llamada no cubierta como una brecha en el feed de Herramientas Descubiertas. Ejecútalo antes de escribir la lista de permitidos para aprender exactamente qué herramientas llaman tus agentes, luego promueve cada una a una regla allow explícita.
Una vez que el log sombra está limpio — ninguna llamada legítima habría sido denegada — limpia shadow_mode y la lista de permitidos aplica.

6. Verifica que funciona

Tras aplicar, confirma que las herramientas denegadas realmente se rechazan:
  • Dry-run un tools/call contra la política (Developer+) para ver el veredicto y qué regla — o el valor por defecto — lo produjo, sin enviar tráfico real. Pasa un nombre de herramienta, una superficie y argumentos de muestra; el motor los evalúa y devuelve la traza del veredicto sin registrar un evento.
  • Vigila los eventos. Cada llamada bloqueada registra un evento de firewall que un Developer+ puede leer en la consola; la página de eventos de auditoría cubre el feed y sus campos.
¿Prefieres no autorar cada regla a mano? El preset de autonomía tight escribe una política de denegación por defecto por ti (más reglas deny para herramientas de shell destructivas y nombres de herramienta con forma de fetch), luego añades de vuelta las herramientas específicas que necesitas. Ver modos de cumplimiento para lo que instala cada nivel de autonomía.

Relacionado

Conectar un servidor MCP

Registra un servidor antes de poder listar sus herramientas como permitidas.

Firewall: servidores MCP

El comportamiento en tiempo de ejecución del gateway y los veredictos por llamada.

Referencia de reglas del firewall

El DSL completo de reglas — globs, args_match, egress, sanitize.

Llamadas a herramienta peligrosas

La amenaza que una lista de permitidos está construida para contener.

Límites de egress

Gobierna dónde puede alcanzar una herramienta permitida.

Guardrails vs. firewall

Cuándo recurrir a la política de contenido vs. la política de herramientas.