# Algoritmos de Combinação de Regras do XC: FIRST_MATCH, ALLOW_OVERRIDES, DENY_OVERRIDES

> Quando uma service policy guarda uma lista de regras, o algoritmo de combinação de regras decide a ordem em que são avaliadas. FIRST_MATCH percorre de cima para baixo e para no primeiro acerto. ALLOW_OVERRIDES e DENY_OVERRIDES reordenam primeiro por ação. A escolha muda qual regra vence quando várias poderiam casar.

Source: https://ronutz.com/pt-BR/learn/xc-rule-combining-algorithms  
Updated: 2026-07-01  
Related tools: https://ronutz.com/pt-BR/tools/f5xc-service-policy-explainer

---

Uma service policy com um `rule_list` guarda uma lista ordenada de regras. O **algoritmo de combinação de regras** decide como essa lista é percorrida e, portanto, qual ação de regra vence quando mais de uma regra pode casar com uma requisição.

## Os três algoritmos

**FIRST_MATCH** é o padrão e o que a maioria das pessoas raciocina. As regras são avaliadas sequencialmente de cima para baixo até uma casar. A ação dessa regra é aplicada e a avaliação para. A ordem na lista é tudo: uma regra ampla perto do topo pode ofuscar uma regra mais específica abaixo, que nunca tem a chance de rodar.

**ALLOW_OVERRIDES** avalia todas as regras com ação ALLOW antes de qualquer regra com ação DENY. O efeito prático é que se qualquer regra ALLOW casar, a requisição é permitida, mesmo que uma regra DENY também casasse. A permissão vence os empates.

**DENY_OVERRIDES** é o espelho: todas as regras DENY são avaliadas antes de qualquer regra ALLOW. Se qualquer regra DENY casar, a requisição é negada, independentemente de um ALLOW que casa. A negação vence os empates.

## Por que a ordem importa

Considere duas regras: uma nega um ASN ruim específico, e uma permite tudo de um país parceiro. Sob FIRST_MATCH, o que aparecer primeiro decide. Sob DENY_OVERRIDES, a negação é considerada primeiro, então uma requisição do ASN ruim é bloqueada mesmo que também venha do país parceiro. Sob ALLOW_OVERRIDES, a mesma requisição é permitida, porque a permissão é considerada primeiro.

As mesmas regras, três resultados diferentes para a requisição que se sobrepõe. É por isso que ler uma política sem conhecer seu algoritmo pode enganar você.

## A restrição do App Firewall

Há uma regra rígida a conhecer. Se qualquer regra na política é configurada com uma ação de App Firewall (WAF), o algoritmo de combinação **precisa** ser FIRST_MATCH. Os modos de override não são permitidos junto com ações WAF, porque o processamento WAF está atrelado à avaliação sequencial. Se você vê ações WAF nas regras, pode assumir FIRST_MATCH.

## Onde o algoritmo vive

Um ponto sutil: no schema do objeto service_policy, o algoritmo de combinação de regras não é um campo no spec da própria política. Ele é definido no nível do **service policy set**, o contêiner ordenado ao qual a política pertence. O `rule_list` dentro de uma política documenta que suas regras são avaliadas de cima para baixo, que é o comportamento FIRST_MATCH, e esse é o padrão seguro a assumir quando você está lendo uma única política isoladamente.

Por essa razão o explicador neste site assume, por padrão, a avaliação FIRST_MATCH de cima para baixo, e mostra um algoritmo explícito apenas se o JSON colado carregar um. Quando você está auditando um deployment real, verifique o policy set que a contém para confirmar o algoritmo em vigor.
