shell.exec ist in Ordnung, bis der Befehl rm -rf lautet,
db.query ist in Ordnung, bis es prod trifft. Genau diese Unterscheidung
drückt eine Argument-Klausel aus: ein
jsonpath-Tool-Argument-Prädikat,
das auf die Werte matcht, die ein Agent übergibt, sodass das Verdikt nur auf
dem gefährlichen Aufruf feuert und den Rest in Ruhe lässt.
Diese Seite ist ein Kochbuch — eine Handvoll Copy-Paste-args_match_json-Rezepte
für die häufigsten Fälle. Für die vollständige Klausel-Grammatik, die
Operator-Tabelle und die Fail-closed-Semantik siehe
Argumente validieren und die
Regel-Schema-Referenz.
1. Wie eine jsonpath-Tool-Argument-Klausel funktioniert
Dasargs_match_json einer Regel ist ein JSON-kodierter String, der eine
Menge von Klauseln trägt, allesamt UND-verknüpft. Der dekodierte Wert ist
ein Objekt, {"clauses": [ … ]}, wobei jede Klausel ein
{ path, op, value }-Tripel ist:
path— eine kleine JSONPath-Teilmenge über dem Argument-Objekt des Tools:$.command,$.foo.bar,$.items[0]oder$für das gesamte Objekt. Keine Wildcards, Filter, Slices oder rekursiver Abstieg.op— einer aus einer geschlossenen Menge:eq,contains,regex,in,cidr_match,gt,lt.value— das Literal, mit dem verglichen wird (ein String, eine Zahl, ein Bool oder — fürin— ein JSON-Array).
tool_name_glob der Regel UND-verknüpft: Die Regel
feuert nur, wenn der Tool-Name matcht und jede Klausel hält. Lassen Sie
args_match_json ganz weg (oder lassen Sie es ein leeres "{}"), und die
Regel matcht allein auf dem Glob.
Klauseln failen closed — die Regel, nicht der Request. Wenn ein Pfad nicht
auflöst, die Argumente fehlerhaft sind oder ein Wert den falschen Typ hat,
wertet die Klausel zu false aus, und die Regel feuert einfach nicht — der
Aufruf fällt auf die nächste Regel oder das Default-Verdikt durch. Eine kaputte
Klausel verweigert nie automatisch. Schreiben Sie Ihre harte Rückfalllinie als
einfaches Glob-
deny, nicht als Klausel, auf deren bestimmtes Failen Sie sich
verlassen.2. Rezept: einen destruktiven Befehl blockieren
Der kanonische Fall.shell.exec im Allgemeinen erlauben, es nur dann
verweigern, wenn der Befehl destruktiv aussieht. Eine regex-Klausel auf
$.command erledigt das:
$.command (oder ein fehlendes) matcht nie,
sodass ein fehlerhafter Aufruf durchfällt, statt fälschlich blockiert zu
werden.
3. Rezept: ein Tool gegen eine benannte Umgebung verweigern
db.query laufen lassen, aber nur gegen sichere Verbindungen — es verweigern,
wenn das Ziel prod oder ein replica ist. Der in-Operator matcht den
aufgelösten Wert gegen ein beliebiges Element eines JSON-Arrays:
in-Wert muss ein JSON-Array sein — ein Nicht-Array wird abgelehnt,
wenn Sie die Regel speichern. Elemente vergleichen sich mit skalarer
Gleichheit, sodass Zahlen und Strings jeweils ihren eigenen Typ matchen.
4. Rezept: ein Ziel mit privater IP oder Metadaten verweigern
Wenn ein Tool eine Ziel-IP als Argument nimmt, testetcidr_match, ob sie in
ein CIDR fällt — die SSRF-Form von „ein Agent, der 10.x oder die
Cloud-Metadaten-Adresse abruft”:
5. Rezept: ein numerisches Argument deckeln
gt und lt vergleichen Zahlen. Verwenden Sie sie, um eine absurde
Batch-Größe, ein überdimensioniertes Limit oder einen außer Kontrolle
geratenen Zähler abzulehnen — hier: ein Bulk-Delete verweigern, das auf mehr
als 100 Zeilen abzielt:
"500" ist eine Typabweichung und matcht nicht, sodass die Regel nicht auf
einem stringig-typisierten Argument feuert. Halten Sie das Argument numerisch,
oder normalisieren Sie es, bevor das Tool es sieht.
6. Rezept: Klauseln kombinieren (UND)
Alle Klauseln in einer Regel sind UND-verknüpft, sodass Sie ein Verdikt auf einen sehr spezifischen Aufruf verengen können — zum Beispielshell.exec
nur dann verweigern, wenn es ein destruktiver Befehl ist und er auf
einen prod-Host gerichtet ist:
args_match_json — verfassen Sie zwei Regeln (oder zwei Globs) mit
unterschiedlichen Prioritäten. Die Engine durchläuft Regeln in
Prioritätsreihenfolge, und der erste Treffer gewinnt, also stellen Sie die
engen Regeln voran. Siehe Regel-Priorität.
7. Das Verdikt für die gematchte Form wählen
Eine Klausel entscheidet, welche Aufrufe matchen; dasverdict der Regel
entscheidet, was passiert. deny ist der Kochbuch-Default, aber dieselbe
Klausel kann ein sanfteres Verdikt tragen:
sanitize — ein Secret in einem Argument redigieren
sanitize — ein Secret in einem Argument redigieren
Wenn das gematchte Argument ein Secret oder PII statt einer gefährlichen
Anweisung trägt, redigiert
sanitize die gematchten Teilstrings aus den
Tool-Argumenten und leitet den bereinigten Aufruf weiter. Es redigiert
nur Argumente — niemals den Inhalt, den ein Tool zurückgibt. Siehe
Antworten bereinigen.pending_approval — den gematchten Aufruf für einen Menschen zurückhalten
pending_approval — den gematchten Aufruf für einen Menschen zurückhalten
Genau die riskante Form zur Überprüfung zurückhalten, statt sie rundheraus
zu blockieren: Ein Prüfer genehmigt oder lehnt out-of-band ab, und der
Agent reicht den genehmigten Aufruf einmal erneut ein. Siehe
Freigaben.
audit — es vorerst nur sehen
audit — es vorerst nur sehen
Setzen Sie das Verdikt auf
audit, um den gematchten Aufruf aufzuzeichnen,
ohne zu blockieren, während Sie die Klausel tunen. Paaren Sie es mit dem
Shadow-Mode, um ein deny gegen
Live-Traffic zu messen, bevor es etwas verändert.8. Die Klausel testen, bevor Sie sich auf sie verlassen
Der Test-Tab der Konsole macht einen Dry-Run einer Policy gegen einen Beispiel-Tool-Call und gibt das Verdikt, die gematchte Regel und den Grund zurück — nichts wird dispatcht, nichts wird persistiert. Fügen Sie ein realistisches Argument-Objekt ein und bestätigen Sie, dass die Klausel auf den Aufrufen feuert, die Sie meinen, und nur auf diesen, da eine Klausel, die einen Wert nicht auflösen kann, stillschweigend nicht feuert. Siehe Regeln testen.Klauseln werden strikt beim Speichern validiert — unbekannte Operatoren,
fehlerhafte Pfade, ein nicht-Array-
in-Wert, ein nicht-kompilierbarer Regex
und ungültige CIDRs werden allesamt abgelehnt, sodass eine fehlerhafte Klausel
gar nicht erst persistiert werden kann.9. Wer Argument-Klauseln verfassen kann
All dies läuft in der Konsole unter Ihrer Session (/api/workspace/firewall/*):
| Aktion | Rolle |
|---|---|
| Policies, Presets, Discovered Tools lesen | Member |
| Regeln erstellen / bearbeiten / löschen | Developer+ |
| Test-Sandbox (Dry-Run einer Policy) | Developer+ |
| Events und Run-Aggregate lesen | Developer+ |
Verwandt
Argumente validieren
Der Argument-Matching-Use-Case in voller Länge.
Tools blockieren
Ein ganzes Tool nach Namen verweigern — keine Klausel nötig.
Egress-Kontrolle
Ausgehende Host- / IP- / CIDR-Ziele steuern.
Regel-Schema
Jedes Feld, das eine Regel tragen kann.
Regel-Priorität
Erster Treffer gewinnt — eng vor breit ordnen.
Gefährliche Tool-Calls
Die Bedrohung, die diese Rezepte adressieren.
