shell.exec jest w porządku,
dopóki polecenie nie jest rm -rf, db.query jest w porządku, dopóki nie
trafi w prod. To rozróżnienie wyraża klauzula argumentu: predykat
argumentu narzędzia w jsonpath,
który dopasowuje na wartościach, które agent przekazuje, więc werdykt
odpala tylko na niebezpiecznym wywołaniu i zostawia resztę w spokoju.
Ta strona to książka kucharska — garstka przepisów args_match_json do
skopiowania na przypadki, które pojawiają się najczęściej. Dla pełnej
gramatyki klauzul, tabeli operatorów i semantyki fail-closed zobacz
Waliduj argumenty i referencję
Schemat reguły.
1. Jak działa klauzula argumentu narzędzia w jsonpath
args_match_json reguły to string zakodowany w JSON niosący zestaw
klauzul, wszystkie połączone AND. Zdekodowana wartość to obiekt,
{"clauses": [ … ]}, gdzie każda klauzula to trójka { path, op, value }:
path— mały podzbiór JSONPath nad obiektem argumentów narzędzia:$.command,$.foo.bar,$.items[0]lub$dla całego obiektu. Bez symboli wieloznacznych, filtrów, wycinków ani rekurencyjnego zstępowania.op— jeden z zamkniętego zestawu:eq,contains,regex,in,cidr_match,gt,lt.value— literał do porównania (string, liczba, bool lub — dlain— tablica JSON).
tool_name_glob reguły: reguła odpala tylko,
gdy nazwa narzędzia dopasuje i każda klauzula zachodzi. Pomiń
args_match_json całkowicie (lub zostaw je puste "{}"), a reguła
dopasowuje na samym globie.
Klauzule fail closed — reguła, nie żądanie. Jeśli ścieżka się nie
rozwiązuje, argumenty są zniekształcone albo wartość jest złego typu,
klauzula ewaluuje się do false, a reguła po prostu nie odpala —
wywołanie spada do następnej reguły lub werdyktu domyślnego. Zepsuta klauzula
nigdy nie auto-odmawia. Napisz swój twardy backstop jako zwykłe deny po
globie, nie jako klauzulę, na której polegasz, by zawiodła w określony
sposób.
2. Przepis: zablokuj jedno destrukcyjne polecenie
Kanoniczny przypadek. Zezwól nashell.exec ogólnie, odmów go tylko, gdy
polecenie wygląda destrukcyjnie. Klauzula regex na $.command to robi:
$.command (lub brakujący) nigdy nie
dopasowuje, więc zniekształcone wywołanie spada zamiast zostać błędnie
zablokowanym.
3. Przepis: odmów narzędzia wobec nazwanego środowiska
Pozwóldb.query działać, ale tylko wobec bezpiecznych połączeń — odmów go,
gdy cel to prod lub replica. Operator in dopasowuje rozwiązaną wartość
wobec dowolnego elementu tablicy JSON:
in musi być tablicą JSON — nie-tablica jest odrzucana przy
zapisie reguły. Elementy porównują się z równością skalarną, więc liczby i
stringi każde dopasowują własny typ.
4. Przepis: odmów celu z prywatnym IP lub metadanymi
Gdy narzędzie przyjmuje docelowe IP jako argument,cidr_match testuje, czy
wpada w CIDR — kształt SSRF „agenta pobierającego 10.x lub adres metadanych
chmury”:
5. Przepis: ogranicz argument numeryczny
gt i lt porównują liczby. Użyj ich, by odmówić absurdalnego rozmiaru
partii, zbyt dużego limitu lub dowolnego rozbieganego licznika — tutaj odmów
zbiorczego usunięcia, które celuje w więcej niż 100 wierszy:
"500" to niezgodność typu i nie dopasowuje, więc reguła nie odpali na
argumencie typu stringowego. Trzymaj argument numerycznym lub normalizuj go,
zanim narzędzie go zobaczy.
6. Przepis: łącz klauzule (AND)
Wszystkie klauzule w jednej regule łączą się AND, więc możesz zacieśnić werdykt do bardzo konkretnego wywołania — na przykład odmówshell.exec
tylko, gdy to destrukcyjne polecenie i jest wymierzone w host prod:
args_match_json — napisz dwie reguły (lub dwa globy) na różnych
priorytetach. Silnik przechodzi reguły w kolejności priorytetów i wygrywa
pierwsze dopasowanie, więc umieść wąskie reguły pierwsze. Zobacz
Priorytet reguł.
7. Wybierz werdykt dla dopasowanego kształtu
Klauzula decyduje, które wywołania dopasowują;verdict reguły decyduje,
co się dzieje. deny to domyślny w książce kucharskiej, ale ta sama klauzula
może nieść łagodniejszy werdykt:
sanitize — zredaguj sekret w argumencie
sanitize — zredaguj sekret w argumencie
Gdy dopasowany argument niesie sekret lub PII zamiast niebezpiecznej
instrukcji,
sanitize redaguje dopasowane podłańcuchy z argumentów
narzędzia i przesyła oczyszczone wywołanie. Redaguje wyłącznie argumenty
— nigdy treść, którą narzędzie zwraca. Zobacz
Sanityzacja odpowiedzi.pending_approval — wstrzymaj dopasowane wywołanie dla człowieka
pending_approval — wstrzymaj dopasowane wywołanie dla człowieka
Wstrzymaj dokładnie ryzykowny kształt do przeglądu zamiast blokować go
wprost: recenzent zatwierdza lub odrzuca poza pasmem, a agent ponownie
wysyła zatwierdzone wywołanie raz. Zobacz
Zatwierdzenia.
audit — po prostu zobacz to, na razie
audit — po prostu zobacz to, na razie
Ustaw werdykt na
audit, aby zarejestrować dopasowane wywołanie bez
blokowania, gdy stroisz klauzulę. Połącz z
trybem cienia, by zmierzyć deny
wobec ruchu na żywo, zanim cokolwiek zmieni.8. Przetestuj klauzulę, zanim na niej polegniesz
Zakładka Test w konsoli robi dry-run polityki wobec przykładowego wywołania narzędzia i zwraca werdykt, dopasowaną regułę i powód — nic nie jest dyspozytowane, nic persystowane. Wklej realistyczny obiekt argumentów i potwierdź, że klauzula odpala na wywołaniach, które masz na myśli, i tylko tych, ponieważ klauzula, która nie może rozwiązać wartości, po cichu nie odpala. Zobacz Testowanie reguł.Klauzule są walidowane ściśle przy zapisie — nieznane operatory, złe
ścieżki, nie-tablicowa wartość
in, niekompilowalny regex i nieprawidłowe
CIDR-y są wszystkie odrzucane, więc zniekształcona klauzula nie może być
persystowana w pierwszej kolejności.9. Kto może pisać klauzule argumentów
Wszystko to działa w konsoli pod twoją sesją (/api/workspace/firewall/*):
| Akcja | Rola |
|---|---|
| Odczyt polityk, presetów, wykrytych narzędzi | Member |
| Tworzenie / edycja / usuwanie reguł | Developer+ |
| Piaskownica Test (dry-run polityki) | Developer+ |
| Odczyt zdarzeń i agregatów uruchomień | Developer+ |
Powiązane
Waliduj argumenty
Przypadek użycia dopasowania argumentów w całości.
Blokuj narzędzia
Odmów całego narzędzia po nazwie — bez klauzuli.
Kontrola egress
Zarządzaj wychodzącymi celami host / IP / CIDR.
Schemat reguły
Każde pole, które reguła może nieść.
Priorytet reguł
Wygrywa pierwsze dopasowanie — porządkuj wąskie przed szerokimi.
Niebezpieczne wywołania narzędzi
Zagrożenie, któremu zaradzają te przepisy.
