Przejdź do głównej treści
Polityka firewalla to uporządkowana lista reguł. Ta strona to kompletna referencja tego, co reguła może wyrazić — języka dopasowania, werdyktów oraz tego, jak silnik je ewaluuje. Reguły są autorowane w edytorze reguł w konsoli, który zapisuje ustrukturyzowane obiekty dopasowania JSON. Wszystko poniżej opisuje to słownictwo, abyś mógł czytać, rozumować i precyzyjnie weryfikować regułę — niezależnie od tego, czy budujesz ją w UI, czy postujesz przez API.

1. Anatomia reguły

PoleTypZnaczenie
priorityintNiższy biegnie pierwszy. Remisy rozstrzyga id reguły.
labelstringLudzka nazwa, pokazywana w events i audycie.
stageenumPowierzchniainbound / response / mcp / egress. Puste = wszystkie powierzchnie.
tool_name_globstringGlob na nazwie narzędzia.
skill_name_globstringOpcjonalny glob na skillu będącym właścicielem. AND-owany z globem narzędzia; puste = dowolny skill.
verdictenumAkcja — zobacz §7.
args_matchobjectOpcjonalny predykat argumentu.
sanitizeobjectKonfiguracja redakcji, używana, gdy verdict = sanitize. Zobacz §5.
egressobjectLista allow/deny hostów/CIDR, używana, gdy stage = egress. Zobacz §6.
cap_cost_centsintPułap kosztu uruchomienia, używany, gdy verdict = cap_cost.
sequenceobjectUporządkowane wielokrokowe dopasowanie, egzekwowane reaktywnie. Zobacz §8.
notesstringUzasadnienie autora; ignorowane przez silnik.
Reguła pasuje do wywołania narzędzia, gdy wszystkie jej zadeklarowane warunki są spełnione: etap pasuje (lub jest pusty), glob narzędzia pasuje, glob skilla pasuje (lub jest pusty), klauzule argumentów pasują (lub są nieobecne), a zakres egress pasuje (tylko reguły egress). Silnik przechodzi reguły w kolejności priorytetów i wygrywa pierwsze dopasowanie.

2. Glob nazwy narzędzia

Celowo mała, rozróżniająca wielkość liter gramatyka — bez niespodzianek regex, liniowy czas, bezpieczna na gorącej ścieżce relay:
WzorzecDopasowuje
"" lub *Każde narzędzie.
foo.*Przedrostek — foo.bar, foo.exec (nie samo foo).
*.execPrzyrostek — shell.exec, db.exec (nie samo exec).
*.shell.*Wrostek — local.shell.exec (potrzebuje ≥1 znaku po każdej stronie).
cokolwiek innegoDokładne dopasowanie łańcucha (włącznie z foo.*.bar).
Narzędzia są umownie w przestrzeni nazw server.tool lub category.action, więc shell.* łapie całą rodzinę, a *.delete łapie czasownik w różnych serwerach.

3. Glob nazwy skilla

Ta sama gramatyka globa, dopasowywana wobec skilla będącego właścicielem wywołania narzędzia (np. community.*, builtin.send). Jest AND-owana z tool_name_glob, więc:
tool_name_glob:  http.fetch
skill_name_glob: community.*
dopasowuje http.fetch tylko wtedy, gdy jest własnością skilla community.* — ufaj temu samemu narzędziu z wbudowanego skilla, bramkuj je z społecznościowego. Pusty glob skilla pasuje do dowolnego właściciela. Jak wywołanie narzędzia jest przypisywane do skilla, opisano w Skille.

4. Klauzule argumentów

Dopasowanie nazwy narzędzia odpowiada na pytanie które narzędzie; klauzule argumentów odpowiadają z jakimi argumentami — różnica między „zablokuj shell.exec” a „zablokuj shell.exec tylko wtedy, gdy polecenie to rm -rf”. args_match to zestaw klauzul, wszystkie AND-owane razem:
{
  "clauses": [
    { "path": "$.command",    "op": "regex",      "value": "rm -rf|drop table" },
    { "path": "$.connection", "op": "in",         "value": ["prod", "replica"] },
    { "path": "$.ip",         "op": "cidr_match", "value": "10.0.0.0/8" }
  ]
}
Puste / nieobecne args_match jest próżniowo prawdziwe — reguła pasuje na samym globie.

Operatory

OperatorPasuje, gdy
eqRówność skalarna (liczby porównywane liczbowo; niezgodność typu → brak dopasowania).
containsPodłańcuch (oba operandy muszą być łańcuchami).
regexWzorzec Go RE2 pasuje do wartości łańcuchowej (liniowy czas, bez backreferencji).
inWartość jest elementem podanej tablicy JSON.
cidr_matchŁańcuchowy IP wpada do podanego CIDR.
gt / ltNumeryczne większe-niż / mniejsze-niż (łańcuchy nie są koercjonowane).

Składnia ścieżki

Mały podzbiór JSONPath nad obiektem argumentów narzędzia:
  • $.foo, $.foo.bar — dostęp do pola
  • $.foo[0], $.arr[1].k — indeksowanie tablicy
  • $ — cały obiekt argumentów
Bez symboli wieloznacznych, filtrów, wycinków ani zejścia rekurencyjnego.
Klauzule argumentów fail closed — reguła, nie żądanie. Jeśli ścieżka się nie rozwiązuje, argumenty są zniekształcone albo regex/CIDR jest nieprawidłowy, klauzula ewaluuje się do fałszu i reguła po prostu nie odpala — wywołanie spada do następnej reguły lub domyślnego werdyktu. Zepsuta klauzula nigdy nie auto-odrzuca i nigdy nie wysypuje relay. Napisz swoją regułę „złap wszystko niebezpieczne” jako jawne deny z własnym globem, zamiast polegać na tym, że klauzula zawiedzie w określony sposób.
Konsola waliduje klauzule ściśle przy zapisie (nieznane operatory, złe ścieżki, niebędące tablicą wartości in, niekompilowalne regexy oraz nieprawidłowe CIDR są wszystkie odrzucane), więc zniekształcona klauzula w ogóle nie może zostać utrwalona.

5. Sanityzatory

Werdykt sanitize redaguje dopasowane podłańcuchy z argumentów narzędzia i przesyła oczyszczone wywołanie — przydatne do usuwania sekretów lub PII, które agent wstawił do argumentu narzędzia, bez blokowania całej akcji.
{ "presets": ["email", "ssn_us"], "custom": ["foo-\\d+"] }
Dopasowania presetów są zastępowane przez [redacted:<preset>]; dopasowania niestandardowego regexa przez [redacted:custom]. Wbudowana biblioteka presetów: aws_access_key, aws_secret_key, openai_key, anthropic_key, bearer_token, email, ssn_us, credit_card (z kontrolą Luhna). Reguła sanitize musi zadeklarować co najmniej jeden preset lub niestandardowy wzorzec — pusty sanityzator jest odrzucany przy zapisie. Na powierzchni inbound nie ma argumentów czasu wywołania do zredagowania, więc werdykt sanitize tam eskaluje do bloku.

6. Listy celów egress

Reguła egress (etap egress) dopasowuje wychodzący cel — powierzchnię SSRF i eksfiltracji:
{
  "deny":  ["169.254.169.254", "10.0.0.0/8"],
  "allow": ["api.openai.com"]
}
Wpisy pasują jako CIDR, literał IP lub niezależna od wielkości liter nazwa hosta; nazwy hostów są rozwiązywane na zasadzie best-effort i ponownie sprawdzane wobec wpisów IP/CIDR. Polaryzacja podąża za werdyktem: przy werdykcie allow lista allow definiuje, co jest w zakresie, a deny wycina z niej wyjątki; przy werdykcie egzekwującym (deny) lista deny definiuje, co jest zablokowane, a allow wycina wyjątki. 169.254.169.254 (endpoint metadanych chmury) oraz zakresy RFC-1918 to kanoniczne rzeczy do zablokowania — preset block_ssrf_egress oraz poziom autonomii tight dostarczają dokładnie to.

7. Werdykty

WerdyktEfektUwagi
allowPrzepuść, zalogowane.
auditPrzepuść + zarejestruj do przeglądu.Zwykły default_verdict.
denyZablokuj wywołanie.HTTP 400 na inbound; błąd narzędzia na mcp.
sanitizeZredaguj argumenty, prześlij.Potrzebuje sanityzatora; eskaluje do deny na inbound.
pending_approvalWstrzymaj dla człowieka.Wymaga skonfigurowanego magazynu zatwierdzeń; odrzucane na response/egress.
cap_costOdrzuć po przekroczeniu limitu wydatków.Potrzebuje nieujemnego cap_cost_cents; bezczynne na response/egress.
W trybie cienia każdy egzekwujący werdykt jest degradowany do audit, a powód jest poprzedzony przedrostkiem [shadow] would ….

8. Sekwencje

Niektóre ryzyka są widoczne tylko na przestrzeni kilku wywołań — przeczytaj 50 rekordów CRM, potem eksportuj, potem uderz w zewnętrzny host. Reguła sequence dopasowuje uporządkowany łańcuch, a nie pojedyncze wywołanie:
{
  "window_seconds": 600,
  "steps": [
    { "match": "crm.*",   "min_count": 3 },
    { "match": "*.export" },
    { "match": "*",       "egress": true }
  ]
}
Każdy krok to glob narzędzia z opcjonalnym min_count (domyślnie 1) oraz opcjonalnym egress: true (krok musi być wywołaniem egress). Kroki muszą występować w kolejności — przeplatanie z innymi wywołaniami jest w porządku — a cały łańcuch musi zakończyć się w obrębie window_seconds (0 = brak ograniczenia).
Sekwencje są egzekwowane reaktywnie przez asynchroniczny matcher, nie inline na każdym wywołaniu — sekwencja z krokiem * w przeciwnym razie dopasowywałaby każde pojedyncze wywołanie narzędzia. Zapalają strumień events i mogą wyzwolić działanie następcze, ale nie blokują pojedynczego wywołania, które domyka łańcuch w czasie rzeczywistym.

9. Wbudowane presety

Zacznij od presetu zamiast od pustej reguły. Są autorowane po stronie serwera, więc konsola i te dokumenty opisują identyczne zachowanie:
PresetCo robi
block_destructive_shellOdrzuca destrukcyjne polecenia shell (rm -rf, mkfs, dd, fork bomby, …) przez zestaw reguł deny-by-glob.
block_ssrf_egressAudytuje egress do endpointu metadanych i zakresów RFC-1918.
block_secrets_in_argsZorientowany na wykrywanie — flaguje poświadczenia pojawiające się w argumentach narzędzi.
block_pii_in_tool_resultsZorientowany na wykrywanie — wydobywa PII w wynikach narzędzi.
Zastosuj preset jako ziarno, potem edytuj swobodnie — preset to punkt wyjścia, nie blokada.

10. Ewaluacja, limity i bezpieczeństwo

  • Wygrywa pierwsze dopasowanie. Reguły biegną w kolejności priority ASC, id ASC; pierwsza reguła, której wszystkie warunki są spełnione, decyduje o werdykcie. Żadna reguła nie pasuje → default_verdict polityki.
  • Deterministyczne i wolne od zależności. Dopasowanie globów i klauzul to czyste operacje na łańcuchach/JSON bez wywołania sieciowego, bezpieczne do uruchamiania na każdym wywołaniu narzędzia. Regexy są RE2 — liniowy czas, bez katastroficznego backtrackingu.
  • Klauzule fail-closed. Klauzula, której nie da się ewaluować, sprawia, że jej reguła nie odpala, zamiast auto-odrzucać (§4).
  • Ścisła walidacja przy zapisie. Parowania werdykt/etap, niepustość sanityzatora, obecność cap_cost_cents, kształt klauzuli oraz rozwiązywanie referencji są wszystkie sprawdzane przy zapisie — nieprawidłowe reguły nie mogą zostać utrwalone.
  • Audytowane. Każde utworzenie/aktualizacja/usunięcie reguły zapisuje wiersz audytu po zatwierdzeniu zmiany; bloby reguł i sekrety nigdy nie są zapisywane do logu audytu.

API reference

Reguły żyją pod polityką i są w zakresie przestrzeni roboczej; zapisy wymagają Developer+.
Metoda i ścieżkaRolaCel
POST /api/workspace/firewall/rulesDeveloper+Utwórz regułę.
PUT /api/workspace/firewall/rulesDeveloper+Zaktualizuj regułę (id w ciele).
DELETE /api/workspace/firewall/rules/:idDeveloper+Usuń regułę.
GET /api/workspace/firewall/presetsMemberLista wbudowanych presetów.
POST /api/workspace/firewall/testDeveloper+Dry-run polityki (z regułami) wobec przykładowego wywołania narzędzia.
Aby podejrzeć regułę przed poleganiem na niej, użyj Test — zwraca werdykt, dopasowaną regułę oraz powód, niczego nie dyspozytując.

Zobacz także

Chcesz głębiej wejść w bezpieczeństwo agentów? Przewodniki Secure Your Agents (Zero Trust) osadzają tę funkcję w przepływie pracy zero-trust.

Zbuduj politykę firewalla

Napisz politykę zero-trust krok po kroku, a potem przetestuj ją w trybie cienia, zanim ją wyegzekwujesz.

Referencja schematu reguł

Każde pole reguły — globy, predykaty argumentów, egress i limity kosztów.