الانتقال إلى المحتوى الرئيسي
وصّلت خادم MCP، والآن تريد أن تنزع البوابة سرّاً مسرّباً من استدعاء أداة قبل أن يصل إلى الخادم الحقيقي — وأن تمنع أياً كان ما تعيده تلك الأداة من تهريب اعتماد (أو حمولة حقن) عائداً إلى النموذج. هاتان مهمتان مختلفتان، يتولاهما ضابطان مختلفان، والنسخة الأمينة تهم: إذا افترضت أن مقبضاً واحداً يغطّي كليهما، ستشحن فجوة. هذه الصفحة هي الدليل المركّز على تنظيف مخرجات mcp على OrcaRouter — ما ينقّحه حكم sanitize في جدار الحماية فعلاً، وما لا ينقّحه، وأي ضابط يحوكم المحتوى الذي تعيده أداة.
حكم sanitize ينقّح وسائط استدعاء الأداة، وليس أبداً النتيجة التي تعيدها أداة. يعيد كتابة ما يرسله وكيلك إلى أداة. لحوكمة ما ترسله أداة عائداً، تستخدم حاجز حماية مرحلة المخرجات على رد النموذج — انظر §3.

1. ماذا يعني “sanitize” على سطح mcp

عندما يستدعي وكيل أداة عبر بوابة MCP، يُقيَّم كل tools/call على سطح mcp قبل الإرسال. يمكن لـ قاعدة مطابقة أن تحمل أحد أحكام جدار الحماية القابلة للتأليف — allow، أو audit، أو deny، أو sanitize، أو pending_approval، أو cap_cost. حكم sanitize هو المنقِّح:
  • يشغّل مجموعة من كواشف أشكال الأسرار على وسائط الاستدعاء (الـ JSON الذي مرّره النموذج إلى الأداة).
  • يُستبدَل كل تطابق برمز قانوني مثل [redacted:openai_key]، والوسائط المُعاد كتابتها هي ما يُمرَّر إلى الخادم.
  • لا تزال الأداة تعمل — sanitize حكم غير حاجب ومُمرِّر. لا ينهار الوكيل؛ هو فقط لا يسلّم السرّ الخام إلى الأداة أبداً.
تغطي الكواشف المدمجة أشكال الأسرار المعروفة (مفاتيح وصول AWS، ومفاتيح API بنمط sk-، ورموز Bearer، ورقم الضمان الاجتماعي الأمريكي، وأرقام بطاقات صحيحة Luhn، والبريد الإلكتروني)، ويمكن لقاعدة إضافة تعبيرات نمطية مخصّصة تُعرَض تطابقاتها كـ[redacted:custom].
على السطح inboundtools[] المُعلَنة التي يُصرّح بها طلب، قبل استدعاء أي أداة — لا توجد وسائط وقت استدعاء لتنقيحها، فحكم sanitize هناك يفشل مغلقاً ويُصعَّد إلى deny. sanitize ذو معنى فقط حيث توجد حمولة وسيط حية لإعادة كتابتها: سطحا mcp وresponse.

2. قاعدة ملموسة واحدة

لنقل إنك تريد أن يُمرَّر أي استدعاء أداة تحتوي وسائطه مفتاحاً بنمط OpenAI مع تنظيف المفتاح، بدلاً من حجبه. ألّف قاعدة على سطح mcp بحكم sanitize، مُكوَّنة لكشف ذلك الشكل من الأسرار. افعل هذا من وحدة التحكم (Firewall → السياسة → القواعد)؛ تتطلب الكتابة Developer+. القاعدة، مفاهيمياً:
الحقلالقيمة
السطحmcp
tool_name_glob* (أو حدّد نطاق خادم واحد، مثل github.*)
الحكمsanitize
مُعَدّات التنظيفكواشف الأسرار المطلوب تفعيلها
وقت الاستدعاء، حمولة وسيط مثل:
{ "note": "use key sk-AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH for the upstream" }
تُمرَّر إلى الخادم كـ:
{ "note": "use key [redacted:openai_key] for the upstream" }
ينجح الاستدعاء؛ ولا يصل السرّ أبداً إلى الخادم. يسجّل حدث جدار الحماية حكم sanitize، والسطح، والقاعدة المطابقة.
الجأ إلى sanitize عندما تحتاج أداة بمشروعية إلى معظم وسيط لكن سرّاً يركب أحياناً في نص حر. عندما يكون الاستدعاء كله خطيراً، استخدم deny (أو pending_approval) بدلاً من ذلك — انظر قائمة سماح أدوات MCP.

3. نتائج الأدوات غير موثوقة — حوكمها على رد النموذج

هنا الجزء الذي تخطئ فيه معظم إعدادات “تنظيف المخرجات”. حكم sanitize يلمس الوسائط فقط. نتيجة أداة — النص أو الـ JSON الذي يعيده خادم MCP — لا يُعاد كتابتها أبداً بحكم جدار حماية. يعامل OrcaRouter محتوى نتيجة الأداة كـإدخال غير موثوق إلى النموذج. خادم MCP مخترَق أو مسمَّم يمكنه إعادة سرّ، أو سجل PII، أو حمولة حقن مطالبة متنكّرة كبيانات. الضابط لذلك المحتوى هو حاجز حماية على مرحلة المخرجات — رد النموذج، مُقيَّماً بعد أن يكون النموذج قد ضمّ نتيجة الأداة.
أرفِق حاجز حماية بمُعَدّ Secrets & API-Key Blocker (الفئة secrets). يحجب اعتمادات بنمط AWS / OpenAI / GitHub؛ اقرنه بـ Private Keys & Cloud Tokens لمفاتيح PEM، ورموز Slack/Stripe، ومفاتيح Google، وJWT. حجب مرحلة المخرجات يعيد guardrail_blocked (HTTP 400) ويردّ حصة الطلب.
مُعَدّ PII Shield يقنّع الكيانات المصنّفة — [EMAIL]، و[SSN]، و[CREDIT_CARD]، … — مُعرِضاً القيم المطابقة كوسوم. تقنيع مرحلة المُدخَلات حيّ على كل طلب (تدفّقي أو لا): يقنّع الطلب قبل أن يراه النموذج. تقنيع مرحلة المخرجات يعيد كتابة رد النموذج على الاستجابات غير التدفّقية فقط؛ وإعادة الكتابة داخل النطاق لرد تدفّقي في خارطة الطريق، فقاعدة تقنيع لا تنقّح بعد رداً متدفّقاً.
النتيجة المسمَّمة يمكن أن تحمل نصاً بنمط “تجاهل التعليمات السابقة”. مُعَدّ السلامة Prompt-Injection Basics (كلمة مفتاحية/تعبير نمطي) إضافة إلى قاعدة llm_judge تسجّل نية الحقن هما الضابطان هنا. انظر تسميم أدوات MCP و حقن المطالبة.
فرض المخرجات والتدفّق. حجب مرحلة المخرجات مفروض على كل من الردود التدفّقية وغير التدفّقية — على تدفّق، يقطع الحجب التدفّق عند تطابقه ويبعث إشعار حجب عاماً. تقنيع مرحلة المخرجات ينطبق على الردود غير التدفّقية فقط؛ وإعادة الكتابة داخل النطاق لرد تدفّقي في خارطة الطريق، فقاعدة تقنيع لا تنقّح بعد رداً متدفّقاً.

4. أين يعيش كل ضابط

خريطة مدمجة للسطحين، بحيث توصّل المقبض الصحيح بالمخاطرة الصحيحة:
تريد حوكمة…الضابطأين
الأسرار في وسائط استدعاء أداةحكم sanitize في جدار الحماية (سطح mcp)قواعد جدار الحماية
الأسرار / PII / الحقن في نتيجة أداةحاجز حماية على مرحلة المخرجاتحواجز الحماية
لا تحاول جعل sanitize يغطّي نتائج الأدوات — لا يمكنه رؤيتها. ولا تفترض أن حاجز حماية مرحلة المُدخَلات سيمسك بما تعيده أداة في منتصف المحادثة؛ محتوى نتيجة الأداة يُحوكَم على رد النموذج، الذي هو مرحلة المخرجات.

5. الإرفاق والمراقبة

كلا الضابطين ضمن نطاق مساحة العمل، ومسمّيان، ومرتّبان، وكلاهما يُرفَق بالطريقتين نفسيهما:
  • لكل مفتاح — اضبط firewall_policy_id (لقاعدة sanitize) و guardrail_id (لسياسة المخرجات) على المفتاح الذي يستخدمه الوكيل.
  • افتراضي مساحة العمل — علّم سياسة / حاجز حماية كافتراضي مساحة العمل بحيث يرثه كل مفتاح.
كوّن كل هذا من وحدة التحكم برمز جلستك/وصولك (تستخدم مسارات الإدارة UserAuth، وليس مفتاح الترحيل). كتابات جدار الحماية تتطلب Developer+؛ كتابات حواجز الحماية تتطلب Developer+. بمجرد أن تصير حية، تظهر تطابقات sanitize كأحداث جدار حماية (الحكم، والسطح، والقاعدة المطابقة)، وتظهر تطابقات حواجز الحماية في تغذية تطابق حواجز الحماية. للاثنين بوابتا قراءة مختلفتان: تغذية أحداث جدار الحماية تتطلب Developer+، بينما تغذية تطابق حواجز الحماية قابلة للقراءة من أي عضو مساحة عمل. افتراضياً يسجّل التطابق نوعه، وإجراءه، ومرحلته، وليس المحتوى المطابق الخام؛ شغّل تسجيل المحتوى الخام فقط عندما تحتاج السلسلة الفرعية للفرز.

6. إلى أين تذهب بعد ذلك

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

امنع خادماً افتراضياً واسمح فقط بالأدوات التي راجعتها.

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

لغة القواعد الكاملة — الأحكام، والـ globs، وargs-match، وتكوين sanitize.

حواجز الحماية

سياسات المحتوى، والمُعَدّات، وكيانات PII، وفرض مرحلة المخرجات.

تسميم أدوات MCP

التهديد الذي يجعل نتائج الأدوات غير موثوقة أصلاً.
جديد على الفصل بين هاتين الطبقتين؟ اقرأ حواجز الحماية مقابل جدار الحماية، ثم تسريب البيانات لمسار التسريب الذي يغلقه sanitize وحواجز حماية المخرجات معاً.