tools/call qua engine firewall trước khi nó
đến được server thật.
1. Kiểm soát MCP mang lại cho bạn điều gì
- Một gateway, mọi server. Agent của bạn kết nối tới một endpoint.
Gateway tổng hợp các tool của mọi server đã đăng ký có thể tiếp cận được,
được đặt namespace
<server>.<tool>, nêngithub.create_issuevàshell.exechiển thị cạnh nhau dưới một kết nối MCP duy nhất. - Chính sách trên mọi cuộc gọi. Mỗi
tools/callđược chính sách của bạn đánh giá trước. Một cuộc gọi bị block quay lại với mô hình như một lỗi tool (firewall deny: …), không phải một thất bại truyền tải, nên agent có thể phản ứng thay vì crash.sanitizeviết lại các argument trước khi chuyển tiếp;pending_approvalgiữ cuộc gọi lại. - Được bảo vệ SSRF. Các endpoint từ xa được xác thực đối với chính sách SSRF của gateway — các dải intranet và các địa chỉ cloud-metadata bị block, và IP dial đã phân giải được kiểm tra lại để đánh bại DNS rebinding, trên mọi hop bao gồm cả redirect.
- Credential được mã hóa. Secret xác thực server được mã hóa lúc nghỉ và masked khi đọc. Gateway tiêm chúng vào lúc dispatch; chúng không bao giờ đến được mô hình hoặc client.
2. Hai loại server
| Loại | endpoint | Hành vi |
|---|---|---|
| BYO (bring-your-own) | Một URL streamable-HTTP | Gateway proxy tools/call tới MCP server từ xa của bạn. |
| Bundled | rỗng | MCP server in-process của OrcaRouter. Được đăng ký để nó hiển thị và có thể kiểm soát; không thể probe riêng. |
3. Đăng ký một server
Một bản ghi server mang theo:| Trường | Ghi chú |
|---|---|
name | Business key, duy nhất theo workspace, ≤ 128 ký tự. Không có . — nó là dấu phân tách namespace <server>.<tool>. |
endpoint | URL của MCP server (≤ 512 ký tự). Rỗng cho server đóng gói sẵn. |
auth_mode | none (mặc định), bearer, oauth, hoặc basic. |
auth_json | Credential đặc thù theo mode (xem bên dưới). Bắt buộc mỗi khi auth_mode không phải none. |
enabled | Mặc định là true. Một server bị tắt được bỏ qua hoàn toàn khỏi gateway. |
status | Khả năng tiếp cận — ok (mặc định), degraded, hoặc down. Được đặt bởi probing. |
Secrets không bao giờ được lưu dưới dạng plaintext.
auth_json được mã
hóa lúc nghỉ với một workspace secrets key. Nếu key đó không được cấu hình,
việc ghi bị từ chối thay vì persist một credential không mã hóa. Khi đọc,
secrets và endpoint được masked; echo mask trở lại trên một update để giữ
giá trị đã lưu. Chuyển đổi giữa hai auth mode có credential yêu cầu
auth_json mới (ciphertext bị ràng buộc hình dạng với mode của nó).4. Probe — khám phá các tool của nó
Trước khi bạn có thể viết các quy tắc đối với các tool của một server, bạn cần biết tên của chúng. Probe server:initialize + tools/list đối với endpoint (dùng các
credential đã giải mã, giới hạn ở 10s), ghi lại status khả năng tiếp cận
và một dấu thời gian, và trả về các tool được quảng bá cùng với các input
schema của chúng:
tool_name_glob: github.* khi biết
chính xác github.create_issue chấp nhận cái gì. Server đóng gói sẵn
(endpoint rỗng) không thể probe và trả về một 400.
5. Vòng đời & thực thi
- Bật vs. tắt. Một server bị tắt được loại khỏi registry runtime — các tool của nó biến mất khỏi gateway và các credential của nó không bao giờ được giải mã. Đó là công tắc off.
- Khả năng tiếp cận.
status(ok/degraded/down) phản ánh lần probe gần nhất; một server không thể tiếp cận được bỏ qua khi gateway xây dựng tập tool của nó. - Verdict theo từng cuộc gọi. Khi dispatch, engine trả về một verdict
cho cuộc gọi
<server>.<tool>cụ thể với các argument của nó:allow/audit→ chuyển tiếp (audit ghi log, vẫn cho phép).sanitize→ chuyển tiếp với các argument đã viết lại.deny/pending_approval/ bất cứ thứ gì chưa biết → bị block như một lỗi tool. (Qua gateway hợp nhất, một cuộc gọi bị giữ lại hiện ra như một lỗi vĩnh viễn thay vì luồn approval id — hãy dùng evaluate hook khi bạn cần cái bắt tay phê duyệt.)
- Xóa là một soft delete; slot tên được giải phóng ngay lập tức để bạn có thể đăng ký lại dưới cùng một tên.
6. Kết nối một client
Trỏ bất kỳ MCP client nào vào endpoint gateway với một token có phạm vi firewall-gateway:orcarouter-firewall-gateway. Nó
quảng bá các tool của mọi server đã bật, có thể tiếp cận được dưới namespace
<server>.<tool>, phơi bày lại input schema của mỗi tool nguyên văn. Một
token không có phạm vi firewall-gateway nhận 403 — hãy phát hành một
gateway token chuyên dụng cho việc này.
Tham chiếu API
Console (theo phạm vi workspace, RBAC)
| Method & path | Vai trò | Mục đích |
|---|---|---|
GET /api/workspace/firewall/mcp_servers | Member | Liệt kê các server (secrets masked, endpoint redacted). |
GET /api/workspace/firewall/mcp_servers/:id | Member | Một server đơn lẻ, masked. |
POST /api/workspace/firewall/mcp_servers | Developer+ | Đăng ký một server (409 khi tên trùng lặp). |
PUT /api/workspace/firewall/mcp_servers | Developer+ | Cập nhật một server (id trong body). |
DELETE /api/workspace/firewall/mcp_servers/:id | Developer+ | Soft-delete; giải phóng tên. |
POST /api/workspace/firewall/mcp_servers/:id/probe | Developer+ | Probe khả năng tiếp cận + khám phá các tool. |
Gateway (token có phạm vi firewall-gateway)
| Method & path | Mục đích |
|---|---|
ANY /api/v1/firewall/mcp | Endpoint dispatch MCP gateway hợp nhất. |
GET /api/v1/firewall/mcp_servers | Registry runtime (auth đã giải mã, chỉ các server đã bật) cho một SDK proxy. |
POST /api/v1/firewall/evaluate | Đánh giá một tools/call đơn lẻ trước khi tự bạn dispatch nó. |
FAQ
Tại sao lại định tuyến MCP qua OrcaRouter?
Tại sao lại định tuyến MCP qua OrcaRouter?
Để có một nơi duy nhất thấy mọi cuộc gọi tool. Không có một gateway,
mỗi agent kết nối tới mỗi MCP server trực tiếp — không có chính sách
chung, không có dấu vết audit, không có bảo vệ SSRF, và credential rải
rác khắp các config agent. Gateway tập trung hóa tất cả những thứ đó:
một kết nối, một chính sách, một log được audit, secrets được mã hóa
tiêm vào lúc dispatch.
Điều gì xảy ra khi một cuộc gọi MCP bị block quay lại?
Điều gì xảy ra khi một cuộc gọi MCP bị block quay lại?
Mô hình nhận nó như một lỗi tool (
firewall deny: <reason>), cùng hình
dạng nó sẽ nhận từ bất kỳ tool nào đang thất bại. Điều đó cho phép agent
thích nghi — thử một cách tiếp cận khác, hỏi người dùng, hoặc dừng lại
— thay vì coi nó như một crash truyền tải.Tôi có thể kiểm soát cùng một tool khác nhau theo từng server không?
Tôi có thể kiểm soát cùng một tool khác nhau theo từng server không?
Có — đó là mục đích của namespace
<server>.<tool>. Một quy tắc với
tool_name_glob: trusted.* có thể allow trong khi community.* bị
audit hoặc pending_approval. Kết hợp nó với một
skill-name glob để thu
hẹp phạm vi còn tinh hơn nữa.Gateway có bảo vệ chống SSRF không?
Gateway có bảo vệ chống SSRF không?
Có. Các URL endpoint và các IP dial đã phân giải của chúng được xác
thực đối với chính sách SSRF khi đăng ký và trên mọi hop dispatch — các
dải intranet và địa chỉ cloud-metadata bị từ chối, và IP đã phân giải
được kiểm tra lại để đánh bại DNS rebinding. Ghép nó với một
quy tắc egress
để kiểm soát nơi các tool có thể vươn tới.
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.Bảo mật MCP server (Zero Trust)
Kết nối, xác thực, và quản trị MCP server dưới một tư thế zero-trust.
Checklist tin tưởng MCP
Những gì cần xác minh trước khi bạn tin tưởng một MCP server của bên thứ ba.
