1. A ordem: prioridade ascendente, primeira correspondência vence
Dentro de uma política, as regras são avaliadas em ordempriority ASC, id ASC:
prioritymenor roda primeiro. Uma regra compriority: 0é verificada antes de uma compriority: 10. Pense nisso como uma posição de fila, não um score de força — o número menor tem a primeira palavra.- Empates quebram pelo id da regra. Duas regras na mesma
priorityrodam em ordem de criação (id de regra ascendente), então a regra mais antiga vence o empate. Use prioridades distintas quando a ordem realmente importa em vez de depender do desempate por id. - Primeira correspondência vence. O motor para na primeira regra cujas condições todas se sustentam e aplica seu veredito. Regras mais abaixo na lista nunca são consultadas para aquela chamada.
- Nenhuma correspondência → o veredito padrão. Se nada corresponder, o
default_verdictda política se aplica —audita menos que você o tenha mudado.
Uma regra corresponde apenas quando toda condição declarada se sustenta de
uma vez: a superfície, o
glob de nome de ferramenta, o glob de skill
opcional, as cláusulas de argumento
opcionais, e o escopo de egress (apenas regras de egress). Uma correspondência
parcial não é correspondência, e a avaliação passa para a próxima regra.
2. Um exemplo concreto: específico antes de amplo
O trabalho canônico de ordenação é deixar um allow estreito sobreviver a um deny amplo. Ponha a regra específica em uma prioridade menor para que ela seja alcançada primeiro:shell.echo atinge a Rule A primeiro (prioridade 10),
corresponde, e é permitida — o motor nunca alcança a Rule B. Uma chamada a
shell.exec cai pela A (o glob não corresponde), atinge a Rule B, e é
negada.
Inverta as prioridades e o deny amplo shell.* na prioridade 10 pegaria
shell.echo primeiro, e seu allow na prioridade 20 seria código morto. A regra
de bolso: mais específico primeiro, mais amplo por último.
3. Verifique a ordem antes de depender dela
Raciocinar sobre prioridade no papel é propenso a erros uma vez que uma política tem mais que um punhado de regras. O sandbox Test roda o motor real contra uma chamada de ferramenta de amostra e lhe diz não apenas o veredito mas qual regra venceu — para que você possa confirmar que a regra que esperava de fato disparou:Submeta uma chamada de amostra
Entre um nome de ferramenta (e argumentos, se suas regras os inspecionam) e
rode. Nada é despachado e nada é persistido — é um dry run.
4. O enforcement de skill anda por cima
A prioridade de regra decide o veredito da regra vencedora — mas essa nem sempre é a resposta final. Se a chamada de ferramenta é de propriedade de uma skill governada, o modo de enforcement da skill é aplicado por cima do veredito vencedor, depois da resolução de primeira-correspondência:| Modo da skill | Efeito sobre o veredito vencedor |
|---|---|
allow | Sem mudança — o veredito da regra se mantém. |
quarantine | Escala qualquer coisa aquém de deny para pending_approval; um deny existente é deixado como está. |
block | Força um deny independentemente do veredito da regra. |
quarantine pode transformar um allow de regra em uma chamada
retida, e uma skill block nega uma chamada mesmo quando nenhuma regra nomeia
suas ferramentas. A quarentena apenas escala — ela nunca rebaixa um deny para
algo mais brando. É por isso que uma skill autodetectada como arriscada
permanece em quarentena até você revisá-la, não importa quão permissivas sejam
suas regras.
5. Coisas que não andam por primeira-correspondência
Alguns mecanismos ficam fora da caminhada de prioridade por regra — saiba onde eles aterrissam para que você não tente ordená-los:cap_cost — resolvido, não ranqueado
cap_cost — resolvido, não ranqueado
Uma regra
cap_cost abaixo de seu teto é
tratada como não-correspondente, então a avaliação continua para a próxima
regra em vez de deixá-la vencer por primeira-correspondência como uma
concessão. Acima do teto resolve para um deny. Ela nunca dá curto-circuito
em uma regra de prioridade menor só por ser alcançada.Sequências — reativas, não inline
Sequências — reativas, não inline
Uma regra de sequência corresponde a
uma cadeia de chamadas ao longo de uma janela de tempo, então é aplicada
reativamente por um matcher assíncrono em vez de na única chamada que
completa a cadeia. Ela acende o feed de eventos mas não vence a caminhada de
primeira-correspondência para uma chamada individual.
Shadow mode — aplicado depois do veredito
Shadow mode — aplicado depois do veredito
O shadow mode não muda qual regra vence
— ele rebaixa o veredito de enforcement vencedor para
audit (motivo
prefixado [shadow] would …) depois da resolução de primeira-correspondência,
para que você possa medir o impacto de uma política antes que ela altere o
tráfego.6. Juntando tudo
Para qualquer chamada de ferramenta a resolução completa é:- Resolver a política — a vinculada à chave chamadora, ou o padrão do workspace. Veja escopo.
- Percorrer regras em
priority ASC, id ASC— primeira correspondência vence; nenhuma correspondência →default_verdict. - Aplicar enforcement de skill — o modo de uma skill governada anda por
cima do veredito vencedor (
blockforça deny,quarantineescala). - Aplicar shadow mode — se ligado, rebaixa vereditos de enforcement para
audit. - Registrar o evento — veredito, superfície, ferramenta e regra correspondente aterrissam no feed de eventos.
Editar a prioridade de uma regra entra em vigor na próxima chamada para cada
chave vinculada à política — sem redeploy, sem mudança no código do agente.
Re-rode o sandbox Test depois de reordenar
para confirmar o novo vencedor antes que o tráfego ao vivo dependa dele.
Para onde ir a seguir
Vereditos
O que cada veredito vencedor de fato faz.
Sintaxe de glob
Como a correspondência de nome de ferramenta decide se uma regra é sequer um
candidato.
Testar regras
Faça dry-run de uma política e veja qual regra vence.
Allow-listing de ferramentas
O padrão default-deny que mais depende da ordenação.
