الانتقال إلى المحتوى الرئيسي
خادم MCP توصّله يأتي بأدوات تصل إلى الشبكة — fetch، أو web_search، أو ناشر webhook. قد يكون اسم الأداة على قائمة سماحك، وقد تبدو الوسائط نظيفة، ولا يزال الاستدعاء ينتهي بإجراء POST لبياناتك إلى مضيف يتحكم به مهاجم أو سحب اعتمادات من نقطة نهاية بيانات الوصف 169.254.169.254. الوجهة هي الجزء من الاستدعاء الذي لا تراه قواعد اسم أداتك أبداً. تحكّم خروج mcp يغلق تلك الفجوة. قاعدة خروج تحدّد نطاق حكم جدار حماية إلى حيث تصل أداة — مضيف، أو IP، أو نطاق CIDR — بحيث نفس http_fetch المسموح له بـapi.openai.com يُمنَع لكل شيء آخر. تعمل على سطح egress في جدار الحماية، فوق التقييم لكل استدعاء الذي يمرّ به كل tools/call بالفعل.
هذه مهمة وحدة التحكم. قواعد جدار الحماية تعيش على مسارات /api/workspace/firewall/*، التي تصادق برمز جلستك / وصولك — وليس بمفتاح ترحيل sk-orca-…. تأليف قاعدة يتطلب دور Developer+.

1. ماذا تتحكم قاعدة الخروج

القاعدة العادية تطابق على اسم الأداة ووسائطها. قاعدة الخروج تضيف بُعداً ثالثاً: الوجهة التي يتحلّل إليها الاستدعاء. تضبط stage القاعدة على egress وترفق قائمة egress_json بمدخلات سماح / منع. يستخرج المحرك مضيف الوجهة من الاستدعاء ولا يطلق القاعدة إلا عندما يكون ذلك المضيف في النطاق. تُطابَق المدخلات بثلاث طرق:

اسم المضيف

تطابق تام غير حسّاس لحالة الأحرف، مثل api.openai.com. النقطة اللاحقة تُقصّ على الجانبين.

IP حرفي

تطابق تام مقابل IP الاتصال المحلول، مثل 169.254.169.254.

نطاق CIDR

وجهة IP — حرفية أو محلولة عبر DNS — يجب أن تقع داخل الكتلة، مثل 10.0.0.0/8.
عندما تكون الوجهة اسم مضيف لكن قائمتك تحمل مدخلات IP/CIDR، يُحَلّ الاسم وتُعاد فحص عناوين IP الخاصة به — فـmetadata.internal يطابق منع 169.254.0.0/16 حتى لو لم يكن مدرَجاً بالاسم. هذا دفاع أفضل-جهد متعدّد الطبقات ضد اسم يحلّ إلى نطاق ممنوع؛ وحارس SSRF المرجعي لا يزال يعمل عند طبقة اتصال البوابة.

2. مثال ملموس واحد

امنع كل أداة بشكل جلب من الوصول إلى نقطة نهاية بيانات وصف السحابة ونطاقات RFC-1918. هذا قطع ساق تسريب SSRF القانوني: حكم deny على مرحلة egress، محدّد النطاق بقائمة منع egress_json.
curl https://api.orcarouter.ai/api/workspace/firewall/rules \
  -H "Authorization: Bearer <your-session-or-access-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "policy_id": 12,
    "priority": 10,
    "label": "Deny SSRF / metadata egress",
    "stage": "egress",
    "tool_name_glob": "*",
    "verdict": "deny",
    "egress_json": "{\"deny\":[\"169.254.169.254\",\"10.0.0.0/8\",\"172.16.0.0/12\",\"192.168.0.0/16\"]}"
  }'
tools/call تتحلّل وجهته إلى أي من تلك النطاقات يعود إلى النموذج كخطأ أداة؛ واستدعاء إلى مضيف عام لا تغطّيه قائمة المنع يمرّ.
قوائم السماح/المنع تقلب معناها مع الحكم. على قاعدة deny (أو فارضة أخرى)، قائمة deny هي المجموعة ضمن النطاق وallow تنحت استثناءات — “امنع هذه، إلا تلك.” على قاعدة allow تنعكس الأدوار: قائمة allow هي المجموعة ضمن النطاق وdeny تنحت استثناءات — “اسمح بهذه فقط.” egress_json غير الفارغ يجب أن يُعلِن مدخل allow أو deny واحداً على الأقل، وإلا تُرفض الكتابة.

3. وضع قائمة سماح لوجهة واحدة فقط

عكس المثال أعلاه: ثبّت أداة جلب على مضيف واحد مُجاز ودع default_verdict للسياسة (أو قاعدة شاملة لاحقة) تتولّى البقية. لأن هذا حكم allow، فإن قائمة allow هي المجموعة ضمن النطاق.
// egress_json على قاعدة بحكم allow ومرحلة egress
{ "allow": ["api.openai.com", "api.anthropic.com"] }
تطلق القاعدة الآن (تسمح) فقط عندما تكون الوجهة أحد هذين المضيفين. أي شيء آخر يمرّ إلى القاعدة التالية — اقرن هذا بـ سياسة منع افتراضي بحيث تُرفَض وجهة غير مدرَجة بدلاً من السماح لها.
اختبره قبل أن تثق به. تبويب Test في وحدة التحكم ونقطة النهاية POST /api/workspace/firewall/test (Developer+) يعيدان تشغيل استدعاء عيّنة مقابل مسوّدة سياستك بحيث تستطيع تأكيد الحكم على وجهة معروفة دون إرسال حركة حية.

4. كيف تتركّب مع بقية جدار الحماية

قاعدة الخروج قاعدة واحدة من بين كثيرات في سياسة جدار حماية مساحة العمل. يمشي المحرك في القواعد بترتيب الأولوية (الأدنى أولاً) وأول تطابق يفوز، فضع منع خروج ضيّقاً فوق أي سماح عريض.
الحكم على قاعدة خروجالأثر
denyيحجب الاستدعاء إلى الوجهات ضمن النطاق — يُسجَّل على سطح egress ويُعاد إلى الأداة كخطأ.
auditيسجّل الاستدعاء المطابق كـحدث جدار حماية؛ لا يزال يُرسَل.
allowيسمح بالوجهات ضمن النطاق؛ يقترن بأرضية منع افتراضي.
pending_approval وcap_cost غير مفروضين على سطح egress — الخروج فحص وجهة، وليس احتجازاً أو سقف إنفاق. استخدم تلك الأحكام على سطحَي mcp أو inbound بدلاً من ذلك. انظر مرجع الأحكام.
ضابطان ذوا صلة يستحقان التوصيل بجانب قاعدة خروج:
بشكل مستقل عن أي قاعدة تؤلّفها، تتحقق بوابة MCP من كل نقطة نهاية خادم وIP اتصالها المحلول مقابل سياسة SSRF — نطاقات الإنترانت وعنوان بيانات وصف السحابة مرفوضة، ويُعاد فحص IP على كل قفزة لهزيمة إعادة ربط DNS. قاعدة خروجك تضع طبقة سياسة وجهة خاصة بمساحة العمل فوق ذلك خط الأساس.
منع خروج واحد يوقف أداة عن الوصول إلى مضيف. قاعدة تسلسل توقف السلسلة — مثلاً “اقرأ ملفاً، ثم اخرج ضمن النافذة” — بتعليم ساق الخروج فقط عندما تتبع قراءة حسّاسة. ذلك كاسر الثلاثي القاتل؛ وتحديد نطاق الخروج هو الضابط لكل استدعاء.

5. ظلّلها أولاً، ثم افرض

طرح منع خروج مباشرة إلى الفرض على مساحة عمل مزدحمة يخاطر بكسر تكامل مشروع نسيته. شبكتا أمان:
  • وضع الظل. السياسة في وضع الظل تخفّض كل حكم فارض إلى تدقيق — منع خروجك يسجّل [shadow] would deny … بدلاً من الحجب، فترى نطاق الانفجار قبل أن يعضّ.
  • وضع المراقبة. إعداد مساحة العمل firewall_observe_mode يسجّل الاستدعاءات غير المغطّاة كـأدوات مكتشَفة، مُظهِراً الوجهات الحقيقية التي يصلها وكلاؤك بالفعل بحيث تكتب قائمة سماح دقيقة من بيانات بدلاً من التخمين.
مطابقة وجهة الخروج تعتمد على المضيف الذي يتحلّل إليه الاستدعاء وقت التقييم. الخادم العدائي يمكنه إعادة ربط DNS بين فحص السياسة والاتصال الفعلي (TOCTOU) — وهذا بالضبط سبب أن حارس IP لطبقة المقبس في البوابة هو الضابط المرجعي وهذه القاعدة دفاع متعدّد الطبقات، وليست الخط الوحيد.

6. الأدوار والمسارات

كل مسارات وحدة التحكم ضمن نطاق مساحة العمل وتصادق برمز جلستك / وصولك. القراءات مفتوحة لأي Member؛ تأليف أو تحرير قاعدة يتطلب Developer+.
الطريقة والمسارالدورالغرض
GET /api/workspace/firewall/policies/:idMemberاقرأ سياسة وقواعدها.
POST /api/workspace/firewall/rulesDeveloper+أضِف قاعدة (اضبط stage: egress).
PUT /api/workspace/firewall/rulesDeveloper+حدّث قاعدة (المعرّف في الجسم).
DELETE /api/workspace/firewall/rules/:idDeveloper+أزِل قاعدة.
POST /api/workspace/firewall/testDeveloper+أعِد تشغيل استدعاء عيّنة مقابل مسوّدة سياسة.

ذات صلة

مرجع قواعد جدار الحماية

لغة القواعد الكاملة — globs الأدوات، ومطابقة الوسائط، وقوائم الخروج، والتسلسلات.

توصيل خادم MCP

سجّل خادماً بحيث تعمل استدعاءات أدواته خلف جدار الحماية.

قائمة سماح أدوات MCP

امنع افتراضياً الأدوات التي لم توافق عليها صراحةً.

تسريب البيانات

التهديد الذي بُني تحكّم الخروج لإيقافه.