الانتقال إلى المحتوى الرئيسي
وكيل يمتلك قدرة أكبر مما تتطلبه مهمته هو مسؤولية تنتظر الاستغلال. سرِق مفتاحه، أو اخدعه بتعليمة محقونة، أو اخترق تبعيةً واحدة — وكل ما يستطيع المفتاح فعله بات في يد المهاجم. هذه هي مشكلة الصلاحية المفرطة، وتتضاعف مع نمط وثيق الصلة يُسمى النائب المرتبك: لا يُخترَق الوكيل مباشرةً، بل يُخدَع لاستخدام صلاحيته الشرعية لحساب المهاجم. كلا المشكلتين يشتركان في سبب جذري واحد: المفتاح الذي يحمله الوكيل المخترق قوي جداً بالنسبة للمهمة التي ينفّذها. الدفاع هو الصلاحية الأدنى — أعطِ كل وكيل القدرة التي تتطلبها مهمته بالضبط، لا أكثر.
هذه الصفحة عن ضوابط البوابة التي تحدّ نطاق الأضرار. سياق نموذج التهديد الأعمق — لماذا يُعدّ الوكلاء أهدافاً عالية القيمة وكيف يعمل الحقن — موجود في نموذج التهديد. للضبط المطابق الذي يحكم استدعاءات الأدوات الخطرة بشكل فردي، انظر استدعاءات الأدوات الخطرة.

1. ما الذي يجعل الوكيل مفرط القدرة

عندما يشترك جميع الوكلاء في مساحة العمل مفتاحاً واحداً، أو عندما يُصدَر مفتاح مرة واحدة ولا يُراجَع أبداً، تتراكم القدرة تدريجياً:
  • نماذج غير مقيّدة — يستطيع الوكيل استدعاء أي نموذج في مساحة العمل، بما فيها النماذج الغالية أو العالية القدرة التي لا يحتاجها أبداً.
  • بلا سقف إنفاق — يمكن لحلقة انفلاتية، أو حقن مشغَّل، أو هجوم فوترة استنزاف رصيد مساحة العمل قبل أن تلاحظ.
  • بلا انتهاء صلاحية — مفتاح صُدر خلال سبرنت لا يزال صالحاً بعد عام، طويلاً بعد تقاعد الوكيل الذي سُكّ له.
  • بلا قيد IP — بيانات الاعتماد تعمل من أي مكان، لذا مفتاح مُسرَّب ليس له حد جغرافي.
  • بلا قائمة سماح للأدوات — يستطيع الوكيل استدعاء أي أداة، حتى تلك غير المتعلقة بوظيفته.
أي واحدة من هذه منفردةً هي توسيع لنطاق الأضرار. مجتمعةً، يستطيع وكيل مخترق واحد فعل كل ما يستطيعه مدير مساحة العمل — استدعاء النموذج الأقوى، وإنفاق الرصيد بالكامل، والوصول لكل أداة.

2. نمط النائب المرتبك

النائب المرتبك هو تخصص للصلاحية المفرطة. الوكيل لم يُخترَق؛ بل أُقنِع. حمولة حقن مطالبة في صفحة ويب مسترجعة، أو مستند، أو نتيجة أداة تأمر الوكيل باتخاذ إجراء مُخوَّل له شرعياً — تحريك أموال، أو حذف سجل، أو إرسال رسالة — لحساب المهاجم. الوكيل يتصرف. كان مُخوَّلاً للقيام بذلك بالضبط. يجتاز فحص التخويل. يحدث الضرر. يتطلب الدفاع أمرين يعملان معاً:
  1. النطاق الضيق — لا يمكن خداع الوكيل للقيام بما لم تقصده مهمته، لأنه غير مُخوَّل للقيام به أصلاً.
  2. الموافقة البشرية للإجراءات غير القابلة للتراجع — حتى ضمن النطاق المُخوَّل، يتطلب الاستدعاء عالي المخاطر تأكيداً بشرياً قبل تنفيذه.

3. الدفاع المتعمق: الطبقات الأربع

تُنفّذ OrcaRouter الصلاحية الأدنى عبر أربعة ضوابط مستقلة تتركّب على مفتاح API واحد. لا يحتاج أيٌّ منها لتغيير في كود وكيلك.

الطبقة 1 — المفتاح المحدد النطاق (الهوية + الحدود الصارمة)

كل وكيل ينبغي أن يمتلك مفتاح API خاصاً به. يحمل المفتاح حدوداً صارمة تُنفّذها البوابة بصرف النظر عما يطلبه الوكيل:
الحقلما يقيّده
model_limitsالمجموعة الدقيقة من النماذج التي يجوز لهذا المفتاح استدعاؤها. يُرفض أي طلب لنموذج آخر قبل مغادرته البوابة.
allow_ipsتُرفض الطلبات من أي عنوان غير مدرج في هذه القائمة في طبقة المصادقة. فارغة تعني لا قيد IP.
credit_limit_usdسقف إنفاق مدى الحياة بالدولار الأمريكي. 0 يعني غير محدود. تُنفّذ البوابة ذلك مقابل الإنفاق التراكمي على المفتاح.
expired_timeطابع زمني لانتهاء الصلاحية المطلق. -1 يعني المفتاح لا ينتهي أبداً. اضبطه ليتوافق مع دورة حياة نشر الوكيل.
environmentتسمية (prod، staging، dev) لتنظيم المفاتيح وتصفية سجلات التدقيق.
تُنفَّذ هذه الحدود على مستوى المفتاح — قبل أي سياسة، وقبل أي استدعاء نموذج. إنها الحد الخارجي لنطاق الأضرار.

الطبقة 2 — سياسة جدار الحماية (قائمة سماح الأدوات)

ألحق سياسة جدار حماية بالمفتاح عبر firewall_policy_id. تحكم السياسة كل استدعاء أداة يصدره ذلك المفتاح:
  • اكتب قواعد تسمح بأسماء الأدوات التي يستخدمها الوكيل شرعياً (تدعم Glob أسماء الأدوات — مثل db.query*).
  • اضبط default_verdict للسياسة على deny حتى يُحجب أي شيء غير مدرج صراحةً.
  • أضف شروط وسائط لتقييد حتى الأدوات المسموح بها — مثل السماح بـ db.query فقط عندما يطابق وسيط database مخططاً محدداً.
مفتاح بلا ربط بجدار حماية يتراجع لسياسة مساحة العمل الافتراضية. بالنسبة للوكلاء ذوي احتياجات الأدوات الضيقة، الربط الصريح بسياسة tight دائماً مفضّل على الاعتماد على الافتراضي. انظر قواعد جدار الحماية للغة المطابقة الكاملة.

الطبقة 3 — الموافقة البشرية للإجراءات عالية المخاطر (pending_approval)

لاستدعاءات الأدوات غير القابلة للتراجع أو عالية القيمة — إرسال دفعة، أو حذف سجل، أو إرسال بريد إلكتروني — أضف قاعدة pending_approval. التدفق:
  1. يصدر الوكيل استدعاء الأداة. يُعلَّقه جدار الحماية ويُعيد استجابة “مُعلَّقة” تحمل معرّف موافقة. لا يصل الاستدعاء للأداة.
  2. يوافق مراجِع أو يرفض خارج النطاق — من وحدة التحكم (Developer+) أو عبر webhook مُوقَّع بـ HMAC لنظام موافقاتك الخاص.
  3. يستطلع وكيلك معرّف الموافقة. بمجرد الموافقة، يُعيد تقديم الاستدعاء الأصلي بترويسة X-OrcaRouter-Firewall-Approval أحادية الاستخدام. تمرّره البوابة مرة واحدة بالضبط.
يُوقَف النائب المرتبك هنا حتى عندما يكون النطاق صالحاً: إنسان يؤكد أن الإجراء مقصود قبل تنفيذه.

الطبقة 4 — سقف التكلفة لكل تشغيل (cap_cost)

تُرفض بقاعدة cap_cost أي استدعاء أداة بمجرد تجاوز الإنفاق المتراكم لتشغيل الوكيل سقفاً لكل قاعدة (بالسنتات). هذا هو قاطع الدائرة لـ:
  • الحلقات الانفلاتية المشغَّلة بالحقن.
  • هجمات الفوترة التي تُشغِّل الإنفاق قبل أن يلاحظ أي إنسان.
  • التكرار العرضي في الخطط متعددة الخطوات.
يعمل cap_cost على مستوى التشغيل، لا مستوى مدى الحياة للمفتاح — لذا يُعاد ضبطه مع كل استدعاء للوكيل، ولا يستطيع تشغيل واحد مخالف استنزاف سقف credit_limit_usd للمفتاح.

4. مفتاح وكيل محدد النطاق بشكل صحيح — مثال

وكيل يلخّص تذاكر العملاء باستخدام gpt-4o-mini ويستعلم نسخة قراءة فقط يجب أن يبدو هكذا:
  • model_limits: ["openai/gpt-4o-mini"] — لا يستطيع التصعيد لنموذج أكثر قدرة أو تكلفة.
  • allow_ips: CIDR egress لمجمع العمال — المفتاح غير فعّال في كل مكان آخر.
  • credit_limit_usd: سقف أسبوعي يتوافق مع التكلفة المتوقعة للمهمة مع هامش — مثل 5.00.
  • expired_time: نهاية السبرنت أو فترة النشر — المفتاح ينتهي ذاتياً دون تنظيف يدوي.
  • environment: "prod" — يظهر في فلاتر السجلات وعروض الشذوذ.
  • guardrail_id: حاجز حماية محدود النطاق لحساسية بيانات هذا الوكيل (إخفاء PII، لا أسرار في المخرجات).
  • firewall_policy_id: سياسة تُدرج db.query* وticket.read* فقط في قائمة السماح، حكم افتراضي deny.
عندما يُخدَع هذا الوكيل لتسريب بيانات عبر تعليمة محقونة، يكون نطاق الأضرار: نموذج واحد، ونطاق IP واحد، ونطاق أسماء أدوات واحد، وسقف تكلفة واحد. بقية مساحة العمل غير متأثرة.
is_firewall_gateway يُعلَّم مفتاحاً كرمز محدود النطاق للبوابة لمسارات إرسال MCP وخطّاف evaluate. أنشئ هذه فقط للوكلاء الذين يقودون جدار الحماية برمجياً — لا لحركة الاستدلال العامة أبداً. مفتاح البوابة على مسار الاستدلال يكشف مسارات لا ينبغي لمفاتيح الأغراض العامة الوصول إليها. تفعيل is_firewall_gateway يتطلب Admin+.

5. الأدوار المطلوبة

الإجراءالحد الأدنى للدور
قراءة أي مفتاح أو سياسة أو حدث جدار حمايةMember
إنشاء أو تعديل المفاتيح وسياسات جدار الحماية والقواعدDeveloper
الموافقة على استدعاء أداة مُعلَّق من وحدة التحكمDeveloper
تفعيل is_firewall_gateway على مفتاحAdmin

6. العلاقة بالتهديدات الأخرى

الصلاحية المفرطة هي المُمكِّن لما يكاد يكون كل تهديد وكيل آخر:
  • استدعاءات الأدوات الخطرة — مفتاح بقائمة سماح أدوات ضيقة لا يمكن إجباره على استدعاء أداة غير مدرجة، حتى لو نجح الحقن.
  • حقن المطالبة — تُقيّد الحدود ضرر ما يستطيع الحقن فعله؛ بوابات الموافقة تحجب الإجراءات غير القابلة للتراجع التي يحاول الحقن تشغيلها.
  • نموذج التهديد — خريطة سطح الهجوم الكاملة، التي تُظهر موقع الصلاحية المفرطة بالنسبة للمتجهات الأخرى.
الصلاحية الأدنى لا تمنع الحقن. إنها تُقلّص ما يستطيع الحقن تحقيقه.

المفاتيح والسياسات المحددة النطاق

مرجع حقول المفاتيح الكامل، وترتيب الحل، ونموذج حدود مساحة العمل.

جدار الحماية

تأليف السياسات، والأحكام، وتدفق الموافقة HITL، ومرجع الواجهة البرمجية الكاملة.
الصلاحية الأدنى — مفتاح ضيق واحد لكل وكيل، وقائمة سماح أدوات tight، وسقف إنفاق، وموافقة بشرية للإجراءات غير القابلة للتراجع — هي الدفاع الأساسي ضد هجمات الصلاحية المفرطة ونمط النائب المرتبك.