1. Das Firewall-Regel-Schema auf einen Blick
Jede Regel trägt dieselben Felder. Nurverdict ist immer erforderlich — alles
andere engt ein, was die Regel matcht, oder konfiguriert das gewählte
Verdikt, und ein abwesender Matcher ist vakuös wahr.
| Feld | Zweck |
|---|---|
priority | Auswertungsreihenfolge — niedrigere läuft zuerst. |
verdict | Die Aktion, wenn die Regel matcht (erforderlich). |
stage | Die Surface, auf die zu scopen ist; leer = alle. |
tool_name_glob | Glob auf dem Tool-Namen. |
args_match_json | JSONPath-Argument-Prädikat, als JSON-kodierter String. |
egress_json | Host- / CIDR-Allow-Deny-Liste (Egress-Regeln), als JSON-kodierter String. |
sanitize_json | Redaktions-Config (wenn verdict = sanitize), als JSON-kodierter String. |
cap_cost_cents | Run-Kosten-Obergrenze in USD-Cent (wenn verdict = cap_cost). |
sequence_json | Geordnetes mehrstufiges Ketten-Prädikat (Sequenzregeln), als JSON-kodierter String. |
label / notes | Menschlicher Name und Rationale — in Events gezeigt, von der Engine ignoriert. |
default_verdict der Policy.
2. priority — Auswertungsreihenfolge
Eine ganzzahlige Ordinalzahl. Niedrigere läuft zuerst; zwei Regeln mit
derselben Priorität brechen den Gleichstand über die Regel-ID
(Einfügereihenfolge). Setzen Sie Ihre spezifischen Carve-outs über Ihre breiten
Catch-alls — ein allow für ein vertrauenswürdiges Tool auf Priorität 10
schlägt ein deny * auf Priorität 100.
3. verdict — die Aktion
Das eine erforderliche Feld. Wenn eine Regel matcht, entscheidet ihr Verdikt,
was mit dem Aufruf passiert:
| Verdikt | Effekt |
|---|---|
allow | Den Aufruf durchlassen, geloggt. |
audit | Erlauben und zur Überprüfung aufzeichnen — das übliche default_verdict. |
deny | Den Aufruf blockieren. |
sanitize | Gematchte Teilstrings aus den Tool-Argumenten redigieren, dann weiterleiten. |
pending_approval | Den Aufruf für einen menschlichen Prüfer zurückhalten. |
cap_cost | Verweigern, sobald die akkumulierten Ausgaben eines Agentenlaufs eine Obergrenze überschreiten. |
deny gibt HTTP 400 firewall_blocked auf der inbound-Surface
zurück, oder einen Tool-Fehler auf der mcp-Surface. Ein zurückgehaltener
Aufruf gibt HTTP 400 firewall_approval_pending mit einer ID zurück, auf die
der Agent pollt. Im Shadow-Mode wird jedes
durchsetzende Verdikt auf audit herabgestuft und der Grund wird [shadow] would …
vorangestellt. Siehe Verdikte für die
vollständige Tabelle und die Block-Formen.
4. stage — die Enforcement-Surface
Pinnt die Regel auf eine der Surfaces der Firewall. Lassen Sie es leer, und die
Regel gilt für alle Surfaces:
inbound — angebotene Tool-Definitionen
inbound — angebotene Tool-Definitionen
Die Tools, die ein Agent dem Modell auf dem Request anbietet. Blockieren Sie
ein gefährliches Tool, bevor das Modell es überhaupt wählen kann.
response — modellausgegebene tool_calls
response — modellausgegebene tool_calls
Die
tool_calls, die das Modell in seiner Antwort ausgibt.mcp — tools/call-Dispatch
mcp — tools/call-Dispatch
Ein
tools/call, der durch das
Firewall-MCP-Gateway geroutet wird.egress — ausgehendes Ziel
egress — ausgehendes Ziel
Ein ausgehender Host / IP / CIDR, den ein Tool erreicht — die SSRF- und
Datenexfiltrations-Surface.
Einige Verdikt-+-Stage-Paarungen werden beim Speichern abgewiesen, weil das
Verdikt dort nicht feuern kann:
cap_cost ist eine Pre-Dispatch-Run-Kosten-Obergrenze,
inert auf response und egress; pending_approval hält je nur auf inbound,
sodass ein expliziter response/egress-Pin abgewiesen wird. Der Editor
verbirgt diese Kombinationen; die API weist sie ab. Siehe
Stages.5. tool_name_glob — welches Tool
Ein kleines, case-sensitives Glob auf dem Tool-Namen — shell.* für eine ganze
Familie, *.delete für ein Verb über Server hinweg, http_fetch für ein
exaktes Tool. Leer oder * matcht jedes Tool. Ein optionales Skill-Namen-Glob
(dieselbe Grammatik) UND-verknüpft eine zweite Bedingung auf dem besitzenden
Skill, sodass Sie ein Tool von einem eingebauten Skill vertrauen und es von
einem Community-Skill gaten können.
Die vollständige Grammatik — Präfix, Suffix, Infix, exakt und die Kanten, die
Leute stolpern lassen — ist ihre eigene Referenz:
Glob-Muster-Syntax.
6. args_match_json — mit welchen Argumenten
Das Glob beantwortet welches Tool; args_match_json beantwortet mit welchen
Argumenten — der Unterschied zwischen „shell.exec blockieren” und
„shell.exec nur blockieren, wenn der Befehl rm -rf ist”. Sein Wert ist ein
JSON-kodierter String, der einen Satz von JSONPath-Klauseln trägt, alle
UND-verknüpft. Dekodiert sieht das Klauselobjekt so aus:
"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}".
Operatoren sind eq, contains, regex, in, cidr_match, gt und lt.
Ein abwesendes args_match_json ist vakuös wahr — die Regel matcht auf das Glob
allein. Die vollständige Prädikatsprache, Pfadsyntax und das Fail-closed-Verhalten
einer kaputten Klausel sind in
Argumente validieren und dem
Argument-Kochbuch.
7. egress_json — welche Ziele
Verwendet auf der egress-Surface: ein JSON-kodierter String, der eine
Host- / CIDR-Allow-und-Deny-Liste trägt, gematcht gegen ein ausgehendes Ziel,
das ein Tool erreicht. Dekodiert sieht das Objekt so aus:
deny-Liste, was blockiert wird, und allow schnitzt Ausnahmen heraus.
Das Baseline-Firewall-Template liefert eine Egress-Deny-Regel mit einer
fertigen SSRF- / Cloud-Metadata-Denylist (die Metadata-IP
169.254.169.254,
RFC-1918-Bereiche, Loopback, Link-local und metadata.google.internal), sodass
Sie diese nicht handverfassen müssen. Fügen Sie Ihre eigenen Ziele obendrauf für
alles andere hinzu, das Sie gaten wollen. Siehe
Egress-Kontrolle für das vollständige
Rezept und Datenexfiltration dafür,
warum es zählt.8. sanitize_json — Argumente redigieren
Verwendet, wenn verdict = sanitize: ein JSON-kodierter String, der
benennt, welche Presets / Custom-Regexes gematchte Teilstrings aus den
Tool-Argumenten redigieren, bevor der bereinigte Aufruf weitergeleitet wird
— nützlich, um ein Secret oder einen PII-Wert zu strippen, den ein Agent in ein
Argument fallen ließ, ohne die ganze Aktion zu blockieren. Dekodiert sieht das
Objekt so aus:
9. cap_cost_cents — eine Ausgaben-Obergrenze
Verwendet, wenn verdict = cap_cost: eine Pro-Regel-Run-Kosten-Obergrenze, eine
Ganzzahl in USD-Cent. Wenn die Regel matcht, wird der Aufruf verweigert,
sobald die akkumulierten Ausgaben des Agentenlaufs die Obergrenze überschreiten
— ein Schutzschalter für eine außer Kontrolle geratene Schleife, der in Events
auf allow oder deny auflöst. Die Obergrenze muss explizit und nicht-negativ
sein, und die Regel kann nicht auf response oder egress gepinnt werden (wo
das Verdikt inert ist). Volles Verhalten in
Kosten begrenzen.
10. Eine vollständige Regel
Die Felder zusammensetzend —shell.exec verweigern, aber nur wenn der Befehl
destruktiv aussieht, gescopt auf die modellausgegebenen Tool-Calls:
shell.exec, die einzelne
Klausel engt auf einen destruktiven Befehl ein, und das Verdikt verweigert.
Jedes shell.exec, dessen Befehl den Regex nicht matcht, fällt durch zur
nächsten Regel oder zum Policy-Default. Hängen Sie einen Key an die Policy
(firewall_policy_id auf dem Key) und sie ist beim nächsten Aufruf aktiv — kein
Redeploy.
11. Wie die Felder sich kombinieren
Was ist das Minimum, das eine gültige Regel braucht?
Was ist das Minimum, das eine gültige Regel braucht?
Ein
verdict. Alles andere ist optional: eine leere stage matcht alle
Surfaces, ein leeres tool_name_glob (oder *) matcht jedes Tool, und ein
abwesendes args_match_json matcht jegliche Argumente. Ein bloßes
{ "verdict": "audit" } ist ein gültiger Catch-all.ANDen oder ORen die Matcher?
ANDen oder ORen die Matcher?
Sie ANDen. Eine Regel feuert nur, wenn ihre Stage, ihr Tool-Glob, ihr
Skill-Glob, ihre Argument-Klauseln und ihr Egress-Scope alle halten. Um OR
auszudrücken, schreiben Sie separate Regeln.
Welche Felder paaren mit welchem Verdikt?
Welche Felder paaren mit welchem Verdikt?
sanitize_json wird nur für das sanitize-Verdikt gelesen;
cap_cost_cents nur für cap_cost; egress_json nur auf der
egress-Surface. Die Konsole validiert diese Paarungen beim Speichern,
sodass eine Regel, die ein Verhalten anzeigt, es aber nie durchsetzen kann,
nicht persistiert werden kann.Was, wenn zwei Regeln beide matchen?
Was, wenn zwei Regeln beide matchen?
Die niedrigere
priority gewinnt (Gleichstände über die Regel-ID gebrochen)
— erster Treffer gewinnt, und die Auswertung stoppt dort. Siehe
Regel-Priorität.Verwandtes
Eine Policy erstellen
Verfassen Sie Ihre erste Policy und hängen Sie einen Key an.
Glob-Syntax
Die vollständige Tool-Namen-Glob-Grammatik.
Verdikte
Jedes Verdikt und wie ein Block aussieht.
Argumente validieren
JSONPath-Argument-Klauseln im Detail.
Policies verwalten
Policies bearbeiten, versionieren und reverten.
Firewall-Regeln
Die vollständige Matching-Engine-Referenz.
