Chuyển đến nội dung chính
Mọi quy tắc firewall bắt đầu bằng việc trả lời tôi áp dụng cho những cuộc gọi tool nào? Nửa đầu của câu trả lời đó là một glob tên tool — trường tool_name_glob trên một quy tắc. Nó là một ngữ pháp nhỏ có chủ đích, phân biệt hoa-thường (không regex, không backtracking) nên một quy tắc đọc lên giống như cách bạn gõ một tên tool từ tab Discovered tools, và việc so khớp giữ thời gian tuyến tính trên hot path của relay. Trang này là tham chiếu ngữ pháp tập trung cho một trường đó. Để biết một glob nằm đâu bên trong một quy tắc đầy đủ — bề mặt, mệnh đề argument, danh sách egress, verdict — xem Schema quy tắc và tham chiếu engine sâu trong Quy tắc Firewall.

1. Tại sao một glob tên tool thay vì regex

Các tool theo quy ước được đặt namespace server.tool hoặc category.action (shell.exec, db.query, community.http_fetch). Một glob cho phép một quy tắc bắt cả một họ — shell.* cho mọi động từ shell, *.delete cho một động từ trên nhiều server — mà không có những cái bẫy của một regex trên một đường chạy trên mọi cuộc gọi tool.
Ngữ pháp cố tình rất nhỏ. So khớp phân biệt hoa-thường — tên tool MCP theo quy ước là chữ-thường-với-dấu-chấm, nên một case-fold sẽ làm bất ngờ một người soạn copy-paste một tên thẳng từ chế độ xem Discovered tools. Không có backtracking thảm họa vì không có engine regex đằng sau nó; mọi mẫu bên dưới là một nhúm phép toán chuỗi.

2. Năm hình dạng mẫu

Một glob tên tool đúng là một trong các hình dạng này. Bất cứ thứ gì không khớp các dạng wildcard đều được xử lý như một literal, match chính xác.
MẫuHình dạngKhớp
"" hoặc *bất kỳMọi cuộc gọi tool.
foo.*tiền tốfoo.bar, foo.execkhông phải foo trần.
*.exechậu tốshell.exec, db.exec, exec trần.
*.shell.*trung tốlocal.shell.exec, byo.shell.run.
shell.execchính xácChỉ chuỗi literal shell.exec.
Đọc các mục tiếp theo để biết một biên trong mỗi hình dạng hay làm người ta vấp.

3. Tiền tố — foo.*

Khớp bất kỳ tool nào có tên bắt đầu bằng foo. và có ít nhất một ký tự nữa sau dấu chấm.

Khớp

shell.exec, shell.run, shell.rm cho mẫu shell.*

Không khớp

shell trần (tiền tố yêu cầu dấu chấm cuối thứ gì đó sau nó)
Dùng một prefix glob để quản trị cả một server hoặc category cùng lúc — một deny shell.* bao phủ mọi động từ shell mà một server có thể thêm sau này.

4. Hậu tố — *.exec

Khớp bất kỳ tool nào có tên kết thúc bằng .exec, neo tại một dấu chấm — cũng khớp động từ trần, không namespace exec đứng một mình.
Match động từ trần là có chủ đích. Các lệnh gọi hàm provider-native và các MCP server không đặt namespace phơi bày một tool dưới động từ trần của nó (chỉ exec, không phải shell.exec). Một quy tắc *.exec bao cả hai hình dạng nên một tool không-namespace không bị bỏ sót một cách im lặng.
Hậu tố giữ neo — nó sẽ không khớp một phần của từ:
Mẫushell.execexec trầnshell.execute
*.execkhớpkhớpkhông khớp
*.execute sẽ cần cho shell.execute; hậu tố chỉ kích hoạt ở một ranh giới dấu chấm hoặc đầu chuỗi, không bao giờ giữa từ.

5. Trung tố — *.shell.*

Khớp bất kỳ tên tool nào chứa .shell. như một trung tố, với ít nhất một ký tự ở mỗi phía. Đây là cách một quy tắc bao một động từ ở bất cứ đâu mà một BYO-MCP server tình cờ đặt namespace cho nó.
{
  "label": "gate every shell tool, any server",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Quy tắc đó khớp local.shell.exec, byo.shell.run, và bất kỳ hình dạng <server>.shell.<verb> nào khác. Nó không khớp shell trần hoặc một .shell. trần không có gì xung quanh — yêu cầu ký-tự-ở-mỗi-phía giữ trung tố trung thực.
Dạng trung tố chỉ là hình dạng đối xứng *.X.*. Một mẫu với một dấu sao ở giữafoo.*.barkhông phải một glob trung tố; nó rơi xuống thành một match chuỗi chính xác (nó chỉ khớp một tool tên đúng nghĩa đen là foo.*.bar, vốn sẽ không tồn tại). Để khớp “bắt đầu bằng foo., kết thúc bằng .bar” bạn cần hai quy tắc hoặc một mệnh đề argument, không phải một glob.

6. Chính xác — shell.exec

Bất cứ thứ gì không phải một trong các hình dạng wildcard ở trên là một match chuỗi literal. shell.exec khớp shell.exec và không gì khác. Đây là lựa chọn đúng khi bạn muốn nêu tên một tool cụ thể — ghép nó với một mệnh đề argument để thu hẹp thêm (“block shell.exec chỉ khi lệnh là rm -rf”).

7. Một ví dụ cụ thể

Giả sử bạn muốn deny mọi động từ shell phá hủy bất kể một MCP server đặt namespace nó ra sao, trong khi để mọi thứ khác audit. Trong trình chỉnh sửa quy tắc của console (ghi yêu cầu Developer+), nửa so khớp của quy tắc là một glob trung tố duy nhất:
{
  "label": "deny shell across servers",
  "stage": "response",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Gắn một key vào chính sách (firewall_policy_id trên key), và quy tắc giờ bắt local.shell.exec, byo.shell.run, và acme.shell.rm — ba server, một glob. Muốn xác nhận nó kích hoạt trên đúng cái bạn mong đợi trước khi phụ thuộc vào nó? Dùng Test quy tắc — nó trả về verdict, quy tắc đã khớp, và lý do mà không dispatch gì.
Một glob thu hẹp tool nào. Để thu hẹp với đối số gì, AND một mệnh đề argument lên cùng quy tắc; để quản trị một tool chỉ khi một skill cụ thể sở hữu nó, thêm một glob tên skill (cùng ngữ pháp, khớp với skill sở hữu). Cả hai được đề cập trong Quy tắc Firewall.

8. Tham chiếu nhanh

Có. *.exec khớp shell.exec, db.exec, exec trần, không namespace. Các prefix glob (foo.*) không khớp namespace trần foo — chỉ các tên có gì đó sau dấu chấm.
Không. Hình dạng wildcard-ở-giữa duy nhất mà engine hiểu là trung tố đối xứng *.X.*. foo.*.bar rơi xuống thành một match literal chính xác. Dùng hai quy tắc hoặc một mệnh đề argument thay vào.
Có. Shell.Execshell.exec là các tool khác nhau. Copy tên nguyên văn từ tab Discovered tools.
Bất kỳ hình dạng nào không phải một trong năm cái ở trên được xử lý như một match chính xác — nó đơn giản sẽ không khớp một tên tool thật, nên quy tắc không bao giờ kích hoạt thay vì khớp một thứ bất ngờ. Console kiểm tra quy tắc khi lưu.

Liên quan

Allow-list tool

Dùng glob để allow một tập đã biết và deny phần còn lại.

Kiểm tra đối số

AND một mệnh đề argument JSONPath lên một glob.

Schema quy tắc

Mọi trường của một quy tắc, ở một nơi.
Để biết toàn bộ ngôn ngữ so khớp — verdict, bề mặt, danh sách egress, và chuỗi — xem Quy tắc Firewall. Mới với mặt phẳng này? Bắt đầu ở tổng quan Firewall.