1. El orden: prioridad ascendente, gana la primera coincidencia
Dentro de una política, las reglas se evalúan en ordenpriority ASC, id ASC:
- La
prioritymás baja se ejecuta primero. Una regla conpriority: 0se verifica antes que una conpriority: 10. Piénsalo como una posición en la cola, no una puntuación de fuerza — el número más pequeño tiene la primera palabra. - Los empates se rompen por id de regla. Dos reglas en la misma
priorityse ejecutan en orden de creación (id de regla ascendente), así que la regla más antigua gana el empate. Usa prioridades distintas cuando el orden realmente importa en vez de apoyarte en el desempate por id. - Gana la primera coincidencia. El motor se detiene en la primera regla cuyas condiciones todas se cumplen y aplica su veredicto. Las reglas más abajo en la lista nunca se consultan para esa llamada.
- Ninguna coincidencia → el veredicto por defecto. Si nada coincide,
aplica el
default_verdictde la política —audita menos que lo hayas cambiado.
Una regla coincide solo cuando cada condición declarada se cumple a la vez:
la superficie, el
glob de nombre de herramienta, el glob de
skill opcional, las cláusulas de argumentos
opcionales, y el alcance de egress (solo reglas de egress). Una coincidencia
parcial es sin coincidencia, y la evaluación pasa a la siguiente regla.
2. Un ejemplo concreto: específico antes que amplio
El trabajo de ordenamiento canónico es dejar que un allow estrecho sobreviva a un deny amplio. Pon la regla específica en una prioridad más baja para que se alcance primero:shell.echo golpea Rule A primero (priority 10), coincide, y
se permite — el motor nunca alcanza Rule B. Una llamada a shell.exec cae por
A (el glob no coincide), golpea Rule B, y se deniega.
Invierte las prioridades y el deny amplio shell.* en priority 10 capturaría
shell.echo primero, y tu allow en priority 20 sería código muerto. La regla
general: lo más específico primero, lo más amplio al final.
3. Verifica el orden antes de depender de él
Razonar sobre la prioridad en papel es propenso a errores una vez que una política tiene más de un puñado de reglas. El sandbox de Test ejecuta el motor real contra una llamada a herramienta de muestra y te dice no solo el veredicto sino qué regla ganó — para que puedas confirmar que la regla que esperabas realmente se disparó:Envía una llamada de muestra
Introduce un nombre de herramienta (y argumentos, si tus reglas los
inspeccionan) y ejecútala. Nada se despacha y nada se persiste — es una
ejecución en seco.
4. La aplicación de skill cabalga encima
La prioridad de reglas decide el veredicto de la regla ganadora — pero eso no siempre es la respuesta final. Si la llamada a herramienta es propiedad de una skill gobernada, el modo de aplicación de la skill se aplica encima del veredicto ganador, después de la resolución de primera-coincidencia:| Modo de skill | Efecto sobre el veredicto ganador |
|---|---|
allow | Sin cambio — el veredicto de la regla se mantiene. |
quarantine | Escala cualquier cosa por debajo de deny a pending_approval; un deny existente se deja tal cual. |
block | Fuerza un deny sin importar el veredicto de la regla. |
quarantine puede convertir un allow de regla en una
llamada retenida, y una skill block deniega una llamada incluso cuando
ninguna regla nombra sus herramientas. La cuarentena solo escala — nunca
degrada un deny a algo más suave. Por esto una skill autodetectada como
arriesgada se queda en cuarentena hasta que la revises, sin importar cuán
permisivas sean tus reglas.
5. Cosas que no cabalgan en primera-coincidencia
Algunos mecanismos se sitúan fuera del recorrido de prioridad por regla — sabe dónde aterrizan para no intentar ordenarlos:cap_cost — resuelto, no clasificado
cap_cost — resuelto, no clasificado
Una regla
cap_cost bajo su techo se
trata como no coincidente, así que la evaluación continúa a la siguiente
regla en vez de dejarla ganar por primera coincidencia como una concesión.
Sobre el techo resuelve a un deny. Nunca hace corto-circuito a una regla
de menor prioridad solo por ser alcanzada.Secuencias — reactivas, no en línea
Secuencias — reactivas, no en línea
Una regla de secuencia coincide con
una cadena de llamadas a lo largo de una ventana de tiempo, así que se
aplica de forma reactiva por un coincidente asíncrono en vez de sobre la
única llamada que completa la cadena. Ilumina el feed de eventos pero no
gana el recorrido de primera-coincidencia para una llamada individual.
Modo shadow — aplicado después del veredicto
Modo shadow — aplicado después del veredicto
El modo shadow no cambia qué regla
gana — degrada el veredicto de aplicación ganador a
audit (razón
prefijada con [shadow] would …) después de la resolución de
primera-coincidencia, así que puedes medir el impacto de una política antes
de que cambie el tráfico.6. Juntándolo todo
Para cualquier llamada a herramienta la resolución completa es:- Resolver la política — la adjunta a la clave que llama, o el valor por defecto del espacio de trabajo. Ver alcance.
- Recorrer reglas en
priority ASC, id ASC— gana la primera coincidencia; ninguna coincidencia →default_verdict. - Aplicar la aplicación de skill — el modo de una skill gobernada cabalga
encima del veredicto ganador (
blockfuerza deny,quarantineescala). - Aplicar el modo shadow — si está activado, degrada los veredictos de
aplicación a
audit. - Registrar el evento — veredicto, superficie, herramienta y regla coincidente aterrizan en el feed de eventos.
Editar la prioridad de una regla surte efecto en la siguiente llamada para
cada clave adjunta a la política — sin redespliegue, sin cambio de código del
agente. Reejecuta el sandbox de Test
después de reordenar para confirmar el nuevo ganador antes de que el tráfico
en vivo dependa de él.
Dónde ir a continuación
Veredictos
Qué hace realmente cada veredicto ganador.
Sintaxis glob
Cómo la coincidencia de nombre de herramienta decide si una regla es
siquiera un candidato.
Probar reglas
Ejecuta en seco una política y ve qué regla gana.
Lista de permitidos de herramientas
El patrón defecto-deny que más se apoya en el ordenamiento.
