Chuyển đến nội dung chính
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.

1. Giải phẫu một quy tắc

TrườngKiểuÝ nghĩa
priorityintThấp hơn chạy trước. Hòa nhau thì phân định theo rule id.
labelstringTên người-đọc, hiển thị trong events và audit.
stageenumBề mặtinbound / response / mcp / egress. Rỗng = mọi bề mặt.
tool_name_globstringGlob trên tên tool.
skill_name_globstringGlob tùy chọn trên skill sở hữu. AND với tool glob; rỗng = bất kỳ skill nào.
verdictenumHành động — xem §7.
args_matchobjectPredicate argument tùy chọn.
sanitizeobjectCấu hình redaction, dùng khi verdict = sanitize. Xem §5.
egressobjectDanh sách allow/deny host/CIDR, dùng khi stage = egress. Xem §6.
cap_cost_centsintTrần chi phí lần chạy, dùng khi verdict = cap_cost.
sequenceobjectMatch nhiều bước có thứ tự, thực thi theo phản ứng. Xem §8.
notesstringLý 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.

2. Glob tên tool

Một văn phạm cố ý nhỏ, phân biệt hoa thường — không có bất ngờ regex, thời gian tuyến tính, an toàn trên đường relay nóng:
PatternKhớp
"" hoặc *Mọi tool.
foo.*Tiền tố — foo.bar, foo.exec (không phải foo trần).
*.execHậu tố — shell.exec, db.exec (không phải exec trần).
*.shell.*Trung tố — local.shell.exec (cần ≥1 ký tự mỗi bên).
bất cứ thứ gì khácSo khớp chuỗi chính xác (bao gồm foo.*.bar).
Các tool theo quy ước được đặt namespace server.tool hoặc category.action, nên shell.* bắt nguyên một họ và *.delete bắt một động từ xuyên các server.

3. Glob tên skill

Cùng văn phạm glob, được so khớp đối với skill sở hữu của cuộc gọi tool (vd: community.*, builtin.send). Nó được AND với tool_name_glob, nên:
tool_name_glob:  http.fetch
skill_name_glob: community.*
khớp http.fetch chỉ 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.

4. Mệnh đề argument

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:
{
  "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" }
  ]
}
Một args_match rỗng / vắng mặt là đúng một cách hiển nhiên — quy tắc khớp chỉ dựa trên glob.

Các toán tử

Toán tửKhớp khi
eqBằng nhau vô hướng (số được so sánh theo số học; lệch kiểu → không khớp).
containsChuỗi con (cả hai toán hạng phải là chuỗi).
regexMột pattern Go RE2 khớp giá trị chuỗi (thời gian tuyến tính, không có backreference).
inGiá trị là một phần tử của mảng JSON đã cho.
cidr_matchIP dạng chuỗi rơi vào bên trong CIDR đã cho.
gt / ltLớn-hơn / nhỏ-hơn theo số (chuỗi không bị ép kiểu).

Cú pháp path

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.

5. Sanitizer

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.
{ "presets": ["email", "ssn_us"], "custom": ["foo-\\d+"] }
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.

6. Danh sách đích egress

Một quy tắc egress (stage egress) khớp trên một đích đến đi ra ngoài — bề mặt SSRF và rò rỉ:
{
  "deny":  ["169.254.169.254", "10.0.0.0/8"],
  "allow": ["api.openai.com"]
}
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_egresscấp độ tự chủ tight ship chính xác cái đó.

7. Verdict

VerdictHiệu ứngGhi chú
allowCho đi qua, được ghi log.
auditCho phép + ghi lại để xem xét.default_verdict thông thường.
denyBlock cuộc gọi.HTTP 400 trên inbound; lỗi tool trên mcp.
sanitizeRedact args, chuyển tiếp.Cần một sanitizer; leo thang thành deny trên inbound.
pending_approvalGiữ lại cho một con người.Yêu cầu kho phê duyệt được cấu hình; bị từ chối trên response/egress.
cap_costDeny khi vượt mức trần chi tiêu.Cần một cap_cost_cents không âm; trơ trên response/egress.
Trong shadow mode mọi verdict thực thi bị hạ cấp thành audit và lý do được thêm tiền tố [shadow] would ….

8. Chuỗ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ẻ:
{
  "window_seconds": 600,
  "steps": [
    { "match": "crm.*",   "min_count": 3 },
    { "match": "*.export" },
    { "match": "*",       "egress": true }
  ]
}
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.

9. Các preset built-in

Khởi đầu từ một preset thay vì một quy tắc trắng. Chúng được soạn ở phía server nên console và các tài liệu này mô tả cùng một hành vi giống hệt:
PresetNó làm gì
block_destructive_shellDeny các lệnh shell phá hủy (rm -rf, mkfs, dd, fork bomb, …) qua một tập quy tắc deny-theo-glob.
block_ssrf_egressAudit egress tới endpoint metadata và các dải RFC-1918.
block_secrets_in_argsHướng-phát-hiện — flag credential xuất hiện trong argument tool.
block_pii_in_tool_resultsHướng-phát-hiện — phơi bày PII trong kết quả tool.
Áp dụng một preset làm hạt giống, rồi chỉnh sửa tự do — một preset là điểm khởi đầu, không phải khóa.

10. Đánh giá, giới hạn & an toàn

  • 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.

Tham chiếu API

Các quy tắc nằm dưới một chính sách và theo phạm vi workspace; ghi yêu cầu Developer+.
Method & pathVai tròMục đích
POST /api/workspace/firewall/rulesDeveloper+Tạo một quy tắc.
PUT /api/workspace/firewall/rulesDeveloper+Cập nhật một quy tắc (id trong body).
DELETE /api/workspace/firewall/rules/:idDeveloper+Xóa một quy tắc.
GET /api/workspace/firewall/presetsMemberLiệt kê các preset built-in.
POST /api/workspace/firewall/testDeveloper+Dry-run một chính sách (bao gồm quy tắc) đối với một cuộc gọi tool mẫu.
Để xem trước một quy tắc trước khi dựa vào nó, hãy dùng Test — nó trả về verdict, quy tắc đã khớp, và lý do mà không dispatch gì cả.

Xem thêm

Muốn đi sâu hơn về bảo mật agent? Các hướng dẫn Bảo mật agent (Zero Trust) đặt tính năng này vào một quy trình zero-trust.

Xây dựng một chính sách firewall

Soạn một chính sách zero-trust từng bước, rồi chạy shadow trước khi thực thi.

Tham chiếu schema quy tắc

Mọi trường quy tắc — glob, predicate tham số, egress, và giới hạn chi phí.