Saltar para o conteúdo principal
Um servidor MCP registrado anuncia quaisquer ferramentas que quiser — e um agente alegremente chamará qualquer uma delas. A postura segura é o inverso: decida a lista curta de ferramentas que você de fato precisa, permita exatamente aquelas e negue o resto. Isso é uma lista de permissão, e no OrcaRouter você a constrói a partir de regras tool_name_glob avaliadas na superfície mcp. Cada tools/call que cruza o gateway MCP roda através da sua política de firewall antes de chegar ao servidor real. Então a lista de permissão não é apenas consultiva — uma chamada a uma ferramenta que você não permitiu nunca despacha.
Editar política é uma ação de console. As rotas /api/workspace/firewall/* autenticam com seu session / access token, não com uma chave de relay sk-orca-…. Escrever regras exige o papel de Developer+; qualquer membro do workspace (até Viewer) pode ler políticas e o feed de ferramentas descobertas.

1. Por que uma lista de permissão default-deny para ferramentas mcp seguras

Uma lista de negação — “bloqueie as ferramentas perigosas” — falha no momento em que um servidor adiciona uma nova ferramenta, renomeia uma, ou você conecta um segundo servidor. O conjunto de ferramentas perigosas é aberto; o conjunto que você pretendeu usar é pequeno e conhecido. Uma lista de permissão inverte o padrão de modo que o desconhecido é recusado, não admitido:
  • Novas ferramentas são negadas por padrão. Um servidor que cresce uma ferramenta delete_repo depois que você o conectou não pode ser chamado até você adicioná-la à lista de permissão.
  • O escopo é por servidor. O namespace <server>.<tool> permite que você permita github.create_issue enquanto nega tudo o mais sob github.*.
  • Um ponto de estrangulamento. A mesma política governa o servidor empacotado e cada servidor BYO atrás do gateway, então há um lugar para ler a lista de permissão.
A lista de permissão combina naturalmente com observe mode: ligue-o primeiro, deixe o tráfego real popular o feed de Ferramentas Descobertas, depois promova as ferramentas que você vê em regras de allow explícitas e vire o padrão para deny.

2. As duas peças

Uma lista de permissão é um default_verdict mais um conjunto ordenado de regras.

default_verdict: deny

O fallback da política para qualquer tools/call que nenhuma regra corresponde. Defina-o como deny e qualquer coisa que você não permitiu explicitamente é bloqueada. (Ele também aceita allow e auditaudit é o padrão.)

regras de allow

Uma regra por ferramenta (ou por glob). Cada uma carrega um tool_name_glob e um veredito de allow. Um tools/call que corresponde ao glob resolve para allow e despacha; tudo o mais cai para o padrão deny.
O glob é correspondido contra o nome de ferramenta com namespace — github.create_issue, shell.exec. * corresponde a qualquer ferramenta (use-o com parcimônia; uma regra de allow com * desfaz toda a lista de permissão). Um <server>. inicial escopa o glob a um servidor.

3. Um exemplo concreto

Você conectou um servidor github e só quer que os agentes leiam e abram issues — nunca deletem ou administrem nada. No console, abra Firewall → Policies, defina o veredito padrão da política como deny, e adicione duas regras de allow:
Ordemtool_name_globVeredito
1github.create_issueallow
2github.list_issuesallow
Essa é a lista de permissão inteira. Com o padrão em deny:
  • github.create_issue → corresponde à regra 1 → allow, despacha.
  • github.delete_repo → não corresponde a nada → deny por padrão.
Uma chamada MCP negada volta ao modelo como um erro de ferramenta (firewall deny: …) — o mesmo formato que qualquer ferramenta que falha retorna — de modo que o agente pode se adaptar em vez de quebrar. (Na superfície inbound um deny é em vez disso um HTTP 400 com código de erro firewall_blocked.)
As regras são ordenadas e avaliadas de cima para baixo. Não coloque um allow tool_name_glob: github.* amplo acima de suas regras de deny específicas — a primeira correspondência vence e o wildcard admitiria as próprias ferramentas que você pretendeu excluir. Na dúvida, mantenha a lista de permissão estreita e apoie-se no padrão deny em vez de wildcards.

4. Apertando com argumentos

Um nome de ferramenta na lista de permissão ainda pode ser chamado com argumentos ruins. Estreite ainda mais adicionando uma cláusula args_match (JSONPath + um operador como eq, contains, regex, in ou cidr_match) à regra, ou em camadas com uma regra deny acima do allow para um formato de argumento específico — por exemplo, permita github.create_issue mas faça deny quando o repo alvo não estiver em uma lista aprovada. Veja a referência de regras do firewall para o conjunto completo de operadores.
sanitize redige os argumentos de uma chamada de ferramenta antes de encaminhar — ele nunca toca o que uma ferramenta retorna. Para aparar conteúdo retornado, isso é um controle diferente; veja sanitize de saída de ferramenta.

5. Faça rollout com segurança

Vire um default-deny de servidor inteiro em produção e você arrisca quebrar um agente que silenciosamente dependia de uma ferramenta que você esqueceu. Duas configurações reduzem o risco:
Um flag por política que rebaixa vereditos de enforcing para audit. Seu padrão deny e regras de deny registram [shadow] would deny … em vez de bloquear, de modo que você pode validar a lista de permissão contra tráfego real antes que ela morda. Leia mais em modos de enforcement.
Uma configuração de workspace que registra cada chamada não coberta como uma lacuna no feed de Ferramentas Descobertas. Rode-a antes de escrever a lista de permissão para aprender exatamente quais ferramentas seus agentes chamam, depois promova cada uma em uma regra de allow explícita.
Uma vez que o log de shadow esteja limpo — nenhuma chamada legítima teria sido negada — limpe shadow_mode e a lista de permissão enforça.

6. Verifique que funciona

Depois de enforcing, confirme que as ferramentas negadas de fato são recusadas:
  • Dry-run um tools/call contra a política (Developer+) para ver o veredito e qual regra — ou o padrão — o produziu, sem enviar tráfego real. Passe um nome de ferramenta, superfície e args de amostra; o motor os avalia e retorna o trace do veredito sem registrar um evento.
  • Observe os eventos. Cada chamada bloqueada registra um evento de firewall que um Developer+ pode ler no console; a página de eventos de auditoria cobre o feed e seus campos.
Prefere não criar cada regra à mão? O preset de autonomia tight escreve uma política default-deny para você (mais regras de deny para ferramentas de shell destrutivas e nomes de ferramenta em formato fetch), depois você adiciona de volta as ferramentas específicas que você precisa. Veja modos de enforcement para o que cada nível de autonomia instala.

Relacionados

Conectar um servidor MCP

Registre um servidor antes de poder fazer lista de permissão de suas ferramentas.

Firewall: Servidores MCP

O comportamento de runtime do gateway e os vereditos por chamada.

Referência de regras do firewall

O DSL completo de regras — globs, args_match, egress, sanitize.

Chamadas de ferramenta perigosas

A ameaça que uma lista de permissão é construída para conter.

Limites de egress

Governe onde uma ferramenta permitida pode alcançar.

Guardrails vs. firewall

Quando recorrer à política de conteúdo vs. política de ferramenta.