1. L’ordre : priorité ascendante, première correspondance gagne
Au sein d’une politique, les règles sont évaluées dans l’ordrepriority ASC, id ASC :
- La
priorityplus basse s’exécute en premier. Une règle avecpriority: 0est vérifiée avant une avecpriority: 10. Pensez-y comme à une position dans une file, pas un score de force — le plus petit numéro a son mot à dire en premier. - Les égalités se tranchent par l’id de règle. Deux règles à la même
prioritys’exécutent dans l’ordre de création (id de règle ascendant), de sorte que la règle la plus ancienne gagne l’égalité. Utilisez des priorités distinctes quand l’ordre compte réellement plutôt que de compter sur le tie-break par id. - La première correspondance gagne. Le moteur s’arrête à la première règle dont les conditions tiennent toutes et applique son verdict. Les règles plus bas dans la liste ne sont jamais consultées pour cet appel.
- Aucune correspondance → le verdict par défaut. Si rien ne correspond,
le
default_verdictde la politique s’applique —auditsauf si vous l’avez changé.
Une règle ne correspond que lorsque chaque condition déclarée tient à la
fois : la surface, le
glob de nom d’outil, le glob de skill
optionnel, les clauses d’arguments
optionnelles, et la portée d’egress (règles d’egress seulement). Une
correspondance partielle est une non-correspondance, et l’évaluation passe à
la règle suivante.
2. Un exemple concret : spécifique avant large
Le job d’ordonnancement canonique est de laisser un allow étroit survivre à un deny large. Placez la règle spécifique à une priorité plus basse pour qu’elle soit atteinte en premier :shell.echo atteint Rule A en premier (priorité 10),
correspond, et est autorisé — le moteur n’atteint jamais Rule B. Un appel à
shell.exec retombe à travers A (le glob ne correspond pas), atteint
Rule B, et est refusé.
Inversez les priorités et le deny large shell.* à la priorité 10 attraperait
shell.echo en premier, et votre allow à la priorité 20 serait du code mort.
La règle de pouce : le plus spécifique en premier, le plus large en
dernier.
3. Vérifier l’ordre avant de vous y fier
Raisonner sur la priorité sur papier est sujet aux erreurs une fois qu’une politique a plus d’une poignée de règles. Le sandbox Test exécute le vrai moteur contre un appel d’outil d’échantillon et vous dit non seulement le verdict mais quelle règle a gagné — de sorte que vous pouvez confirmer que la règle que vous attendiez s’est réellement déclenchée :Ouvrir l'onglet Test de la politique
Dans la console, ouvrez la politique et passez à Test (Developer+).
Soumettre un appel d'échantillon
Entrez un nom d’outil (et des arguments, si vos règles les inspectent) et
exécutez-le. Rien n’est dispatché et rien n’est persisté — c’est un dry
run.
4. L’application de skill se superpose par-dessus
La priorité des règles décide le verdict de la règle gagnante — mais ce n’est pas toujours la réponse finale. Si l’appel d’outil appartient à un skill gouverné, le mode d’application du skill est appliqué par-dessus le verdict gagnant, après la résolution first-match :| Mode du skill | Effet sur le verdict gagnant |
|---|---|
allow | Aucun changement — le verdict de la règle tient. |
quarantine | Escalade tout ce qui est en-deçà d’un deny vers pending_approval ; un deny existant est laissé tel quel. |
block | Force un deny quel que soit le verdict de la règle. |
quarantine peut transformer un allow de règle en un appel
mis en attente, et un skill block refuse un appel même quand aucune règle
ne nomme ses outils. La quarantaine n’escalade que — elle ne rétrograde
jamais un deny vers quelque chose de plus doux. C’est pourquoi un skill
auto-détecté comme risqué reste en quarantaine jusqu’à ce que vous le
relisiez, peu importe à quel point vos règles sont permissives.
5. Les choses qui ne suivent pas la première correspondance
Quelques mécanismes se situent en dehors du parcours de priorité par règle — sachez où ils atterrissent pour ne pas essayer de les ordonner :cap_cost — résolu, pas classé
cap_cost — résolu, pas classé
Une règle
cap_cost sous son plafond est
traitée comme non-correspondante, de sorte que l’évaluation continue vers
la règle suivante plutôt que de la laisser gagner en première
correspondance comme une autorisation. Au-dessus du plafond, elle se résout
en un deny. Elle ne court-circuite jamais une règle de priorité plus
basse juste en étant atteinte.Séquences — réactives, pas en ligne
Séquences — réactives, pas en ligne
Une règle de séquence correspond à
une chaîne d’appels sur une fenêtre temporelle, donc elle est appliquée
réactivement par un matcher asynchrone plutôt que sur l’unique appel qui
complète la chaîne. Elle allume le flux d’événements mais ne gagne pas le
parcours first-match pour un appel individuel.
Mode shadow — appliqué après le verdict
Mode shadow — appliqué après le verdict
Le mode shadow ne change pas quelle
règle gagne — il rétrograde le verdict appliquant gagnant en
audit
(raison préfixée [shadow] would …) après la résolution first-match, de
sorte que vous pouvez mesurer l’impact d’une politique avant qu’elle ne
change le trafic.6. Mettre le tout ensemble
Pour tout appel d’outil, la résolution complète est :- Résoudre la politique — celle attachée à la clé appelante, ou le défaut de l’espace de travail. Voir portée.
- Parcourir les règles dans
priority ASC, id ASC— la première correspondance gagne ; aucune correspondance →default_verdict. - Appliquer l’application de skill — le mode d’un skill gouverné se
superpose au verdict gagnant (
blockforce un deny,quarantineescalade). - Appliquer le mode shadow — si activé, rétrograder les verdicts
appliquants en
audit. - Enregistrer l’événement — verdict, surface, outil et règle correspondante atterrissent dans le flux d’événements.
Éditer la priorité d’une règle prend effet dès le prochain appel pour
chaque clé attachée à la politique — aucun redéploiement, aucun changement de
code d’agent. Ré-exécutez le sandbox Test
après réordonnancement pour confirmer le nouveau gagnant avant que le trafic
réel n’en dépende.
Où aller ensuite
Verdicts
Ce que fait réellement chaque verdict gagnant.
Syntaxe glob
Comment la correspondance de nom d’outil décide si une règle est même un
candidat.
Tester les règles
Dry-run d’une politique et voir quelle règle gagne.
Liste blanche d'outils
Le pattern default-deny qui s’appuie le plus sur l’ordonnancement.
