Ngôn ngữ so khớp đằng sau một chính sách firewall. So khớp các cuộc gọi tool theo tên, skill, argument, và đích đến — rồi allow, audit, deny, sanitize, giữ lại chờ phê duyệt, hoặc giới hạn chi phí. Tất định, fail-closed, và an toàn trên đường nóng.
Một chính sách firewall là một danh sách quy
tắc có thứ tự. Trang này là tham chiếu đầy đủ cho những gì một quy tắc
có thể biểu đạt — ngôn ngữ so khớp, các verdict, và cách engine đánh giá
chúng.Quy tắc được soạn trong rule editor của console, nơi ghi ra các đối tượng
match JSON có cấu trúc. Mọi thứ bên dưới mô tả từ vựng đó để bạn có thể
đọc, suy luận về, và xác minh một quy tắc một cách chính xác — dù bạn xây
nó trong UI hay post nó qua API.
Cấu hình redaction, dùng khi verdict = sanitize. Xem §5.
egress
object
Danh sách allow/deny host/CIDR, dùng khi stage = egress. Xem §6.
cap_cost_cents
int
Trần chi phí lần chạy, dùng khi verdict = cap_cost.
sequence
object
Match nhiều bước có thứ tự, thực thi theo phản ứng. Xem §8.
notes
string
Lý do của tác giả; bị engine bỏ qua.
Một quy tắc khớp một cuộc gọi tool khi tất cả các điều kiện được khai
báo của nó đều thỏa: stage khớp (hoặc rỗng), tool glob khớp, skill glob
khớp (hoặc rỗng), các mệnh đề argument khớp (hoặc vắng mặt), và phạm vi
egress khớp (chỉ các quy tắc egress). Engine duyệt các quy tắc theo thứ tự
ưu tiên và match đầu tiên thắng.
khớp http.fetchchỉ khi nó thuộc sở hữu của một skill community.* —
tin tưởng cùng một tool từ một built-in skill, kiểm soát nó từ một
community skill. Một skill glob rỗng khớp bất kỳ chủ sở hữu nào. Cách một
cuộc gọi tool được quy gán cho một skill được trình bày trong
Skills.
So khớp tên tool trả lời tool nào; các mệnh đề argument trả lời với
argument gì — khác biệt giữa “block shell.exec” và “block shell.exec
chỉ khi lệnh là rm -rf.”args_match là một tập các mệnh đề, tất cả AND lại với nhau:
Một tập con nhỏ của JSONPath trên đối tượng argument của tool:
$.foo, $.foo.bar — truy cập trường
$.foo[0], $.arr[1].k — đánh chỉ số mảng
$ — toàn bộ đối tượng arguments
Không có wildcard, filter, slice, hay recursive descent.
Các mệnh đề argument fail closed — quy tắc, không phải request. Nếu một
path không phân giải, các argument bị dị dạng, hoặc một regex/CIDR không
hợp lệ, mệnh đề đánh giá thành false và quy tắc đơn giản là không kích
hoạt — cuộc gọi rơi xuống quy tắc kế tiếp hoặc verdict mặc định. Một mệnh
đề hỏng không bao giờ tự động deny và không bao giờ làm crash relay. Hãy
viết quy tắc “bắt mọi thứ nguy hiểm” của bạn như một deny tường minh với
glob riêng của nó thay vì dựa vào một mệnh đề để thất bại theo một cách cụ
thể.
Console xác thực các mệnh đề một cách nghiêm ngặt khi lưu (toán tử không
xác định, path tồi, giá trị in không phải mảng, regex không biên dịch
được, và CIDR không hợp lệ đều bị từ chối) nên một mệnh đề dị dạng không
thể được persist ngay từ đầu.
Một verdict sanitize redact các chuỗi con đã khớp khỏi argument của
tool và chuyển tiếp cuộc gọi đã làm sạch — hữu ích để loại bỏ secrets hoặc
PII mà một agent đặt vào một argument tool mà không block toàn bộ hành
động.
Các match preset được thay bằng [redacted:<preset>]; các match
custom-regex bằng [redacted:custom]. Thư viện preset built-in:aws_access_key, aws_secret_key, openai_key, anthropic_key,
bearer_token, email, ssn_us, credit_card (với một kiểm tra Luhn).Một quy tắc sanitize phải khai báo ít nhất một preset hoặc pattern custom
— một sanitizer rỗng bị từ chối khi lưu. Trên bề mặt inbound không có
argument tại thời điểm gọi để redact, nên một verdict sanitize ở đó leo
thang thành một block.
Các mục khớp như một CIDR, một IP literal, hoặc một hostname không phân
biệt hoa thường; hostname được phân giải theo nỗ lực tốt nhất và kiểm tra
lại đối với các mục IP/CIDR. Cực tính theo verdict: với một verdict allow
danh sách allow định nghĩa cái gì trong phạm vi và deny khoét các ngoại
lệ ra khỏi nó; với một verdict thực thi (deny) danh sách deny định
nghĩa cái gì bị block và allow khoét các ngoại lệ ra.169.254.169.254 (endpoint cloud metadata) và các dải RFC-1918 là những
thứ kinh điển cần deny — preset block_ssrf_egress và
cấp độ tự chủtight ship chính xác cái đó.
Một số rủi ro chỉ hiện ra qua nhiều cuộc gọi — đọc 50 bản ghi CRM, rồi
export, rồi truy cập một host bên ngoài. Một quy tắc sequence khớp một
chuỗi có thứ tự thay vì một cuộc gọi đơn lẻ:
Mỗi bước là một tool glob với một min_count tùy chọn (mặc định 1) và một
egress: true tùy chọn (bước phải là một cuộc gọi egress). Các bước phải
diễn ra theo thứ tự — xen kẽ với các cuộc gọi khác là được — và toàn bộ
chuỗi phải hoàn thành trong vòng window_seconds (0 = không có giới
hạn).
Các chuỗi được thực thi theo phản ứng bởi một matcher bất đồng bộ,
không phải inline trên mỗi cuộc gọi — một chuỗi với một bước * nếu không
sẽ khớp mọi cuộc gọi tool đơn lẻ. Chúng làm sáng feed events và có thể kích
hoạt hành động tiếp theo, nhưng chúng không block cuộc gọi đơn lẻ hoàn
thành chuỗi theo thời gian thực.
Match đầu tiên thắng. Các quy tắc chạy theo thứ tự priority ASC, id ASC; quy tắc đầu tiên có các điều kiện đều thỏa quyết định verdict.
Không quy tắc nào khớp → default_verdict của chính sách.
Tất định và không phụ thuộc. So khớp glob và mệnh đề là các thao tác
chuỗi/JSON thuần túy không có cuộc gọi mạng, an toàn để chạy trên mọi
cuộc gọi tool. Các regex là RE2 — thời gian tuyến tính, không có
backtracking thảm họa.
Các mệnh đề fail-closed. Một mệnh đề không thể được đánh giá làm quy
tắc của nó không kích hoạt thay vì tự động deny (§4).
Xác thực nghiêm ngặt lúc lưu. Các cặp verdict/stage, tính không rỗng
của sanitizer, sự hiện diện của cap_cost_cents, hình dạng mệnh đề, và
phân giải ref đều được kiểm tra khi bạn lưu — các quy tắc không hợp lệ
không thể được persist.
Được audit. Mỗi lần tạo/cập nhật/xóa quy tắc ghi một hàng audit sau
khi thay đổi được commit; rule blob và secrets không bao giờ được ghi vào
audit log.