الانتقال إلى المحتوى الرئيسي
وكيل البرمجة هو أكثر شيء في مساحة عملك ذو نفوذ والأخطر. يشغّل shell.exec، ويحرّر الملفات، ويجلب روابط URL، ويحمّل مهارات مجتمعية — وأيّ واحد منها يمكن أن يفعل rm -rf لقرص، أو يقرأ .env، أو يسرّب إلى مضيف مهاجم. تحكم هذه الوصفة إغلاق ذلك السطح بـ جدار الحماية: ارفض الـ shell المدمّر، وتحقّق من وسائط الاستدعاءات التي تسمح بها، وسيّج egress، وعلّق العمليات الخطرة حقاً لإنسان. لا شيء من ذلك يلمس كود وكيلك — تعيش السياسة في البوابة وتُفرض في الاستدعاء التالي.
كل شيء أدناه يُضبط في وحدة التحكم (Firewall → Posture / Policies). تستخدم مسارات الإدارة تلك جلسة وحدة تحكّمك، لا مفتاح ترحيل. وحدها استدعاءات /v1/* التي يجريها وكيلك تحمل مفتاح sk-orca-…. تتطلب تحريرات السياسة دور Developer.

1. ابدأ بالمراقبة لا الحجب — خط أساس وكيل البرمجة الآمن

لا تؤلّف القواعد بلا رؤية. أعطِ الوكيل مفتاح sk-orca-… خاصته، ثم افتح Firewall → Posture وطبّق مستوى الاستقلالية balanced مستوى الاستقلالية. في معاملة واحدة يدقّق هذا كل استدعاء أداة، ويعلّم PII، ويرفض الـ shell المدمّر — فيكون أسوأ إجراء مسيَّجاً بالفعل بينما تتعلّم بقية سلوك الوكيل من حركة المرور الحقيقية. دعه يعمل، ثم اقرأ Firewall → Discovered tools: كل أداة رأتها مساحة العمل، مُعلَّمة covered (تنطبق قاعدة) أو gap (لا شيء ينطبق). تلك القائمة مسوّدة قائمة السماح لديك. عندما تبدو التغذية صحيحة، انتقل إلى tight (حجب-افتراضي) أو ألّف السياسة المستهدفة أدناه.
balanced هو الموقف الابتدائي الموصى به؛ permissive لا يحجب شيئاً لكنه يسجّل كل شيء؛ tight هو حجب-افتراضي بالإضافة إلى الإعدادات المسبقة للأسرار وSSRF. انظر خط الأساس لما يجسّده كل واحد بالضبط.

2. ارفض الـ shell المدمّر — الأرضية غير القابلة للتفاوض

أهم قاعدة وحيدة لوكيل برمجة هي لا shell مدمّر. يطرح مستويا الاستقلالية balanced وtight هذا بالفعل كإعداد مسبق Block destructive shell، الذي يجسّد قواعد deny حقيقية قابلة للتحرير تغطي أسماء الأدوات المباشرة لمساحة العمل (shell.*، bash، cmd.*، powershell.*، exec.*) والصيغ ذات مساحة أسماء MCP التي يكشفها خادم مسجَّل (*.shell.*، *.cmd.*، …). إن آثرت قصره أضيق من “ارفض كل shell”، ألّف قاعدة واحدة ترفض فقط الأوامر المدمّرة وتدقّق الباقي. تطابق القاعدة على نمط glob لاسم الأداة بالإضافة إلى مُسنِد وسائط اختياري (JSONPath مقابل وسائط الاستدعاء):
في Firewall → Policies، أضف قاعدة فوق افتراضيك:
  • Tool glob: shell.exec
  • Args match (عبارة JSONPath):
{
  "clauses": [
    { "path": "$.command", "op": "regex", "value": "(?i)\\brm\\s+-[a-z]*[rf]" }
  ]
}
  • Verdict: deny
مشغّلات الوسائط مجموعة مغلقة — eq، contains، regex، in، cidr_match، gt، lt. يُحجب استدعاء يطابق $.command لديه الـ regex؛ وكل شيء آخر يسقط إلى القاعدة التالية.
استدعاء مرفوض على سطح inbound يعيد HTTP 400 برمز خطأ firewall_blocked ورسالة تسمّي الأداة والسبب. استدعاء مُرسَل عبر بوابة MCP يعود كـخطأ أداة (firewall deny: …) فيستطيع النموذج التفاعل بدلاً من الانهيار. تُطلق حجوب inbound قبل استدعاء النموذج الأعلى، فلا تكلّف أي رموز نموذج.
انظر قواعد جدار الحماية للغة المطابقة الكاملة (أنماط globs للأدوات، وعبارات الوسائط، والتسلسلات، وسقوف التكلفة).

3. تحقّق من الوسائط على الأدوات التي تُبقيها

السماح بأداة ليس كالسماح بكل وسيطة لها. نفس مُسنِد JSONPath الذي يقصر deny يتيح لك تقييد شكل استدعاء مسموح — فلا يحمل db.query عبارة DROP، ولا يهرب file.write من مجلد.

احجب SQL DROP

Glob db.query، عبارة {"path":"$.sql","op":"regex","value":"(?i)\\bdrop\\b"}، حكم deny.

نقّح سرّاً في الوسائط

ينقّح حكم sanitize السلاسل الفرعية المطابقة من وسائط استدعاء الأداة قبل تمرير الاستدعاء. لا يلمس أبداً ما تعيده أداة؛ على سطح inbound (لا وسائط وقت استدعاء بعد) يتصاعد إلى حجب.
ينقّح جدار الحماية وسائط استدعاء الأداة، لا نتائج الأداة. لإيقاف سرّ من الدخول إلى طلب من الأساس، اربط حاجز الحماية Secrets Blocker بالمفتاح — فهذا يفحص نص المطالبة نفسه قبل أن يراه النموذج. يتألّف المستويان: تفحص حواجز الحماية النص، ويحكم جدار الحماية الإجراء.

4. تحكّم في egress — سيّج أين يمكن للوكيل أن يصل

وكيل برمجة يستطيع جلب روابط URL يمكن توجيهه نحو SSRF (الوصول إلى البيانات الوصفية للسحابة أو مضيف داخلي 10.x) أو استخدامه للتسريب. يطرح مستوى الاستقلالية tight إعداد SSRF مسبق يرفض أسماء الأدوات على هيئة جلب (http_fetch، web_search، fetch_url، request، وصيغها <server>.*) بالكامل. للتحكم على مستوى الوجهة، ألّف قاعدة egress. تقصر قواعد egress حسب host أو CIDR بمدخلات allow / deny، مقيَّمة على سطح egress:
{ "deny": ["169.254.169.254", "10.0.0.0/8", "*.internal"] }
تُطلق هذه على أي وجهة صادرة أبلغت عنها أداة تقع في نطاق خاص، أو على IP البيانات الوصفية للسحابة، أو على اسم مضيف داخلي — مع تمرير الوجهات العامة وتسييج الخطرة.
لا يطرح أي إعداد مسبق قواعد egress مبنية على CIDR — يطابق إعداد SSRF المسبق أسماء الأدوات على هيئة جلب. قائمة رفض host/CIDR أعلاه واحدة تؤلّفها بنفسك. انظر أوقف التسريب للنمط الكامل.

5. علّق العمليات الخطرة لإنسان (HITL)

بعض العمليات لا ينبغي السماح بها تلقائياً ولا رفضها تلقائياً — نشر، أو git push، أو هجرة مدمّرة. لتلك، استخدم حكم pending_approval. يُعلَّق الاستدعاء، ويحصل الوكيل على استجابة “مُعلَّقة” بمعرّف موافقة، ويحلّها مراجِع خارج النطاق:
  1. ألّف قاعدة (مثلاً glob deploy.*، حكم pending_approval).
  2. يعيد الاستدعاء المُعلَّق HTTP 400 firewall_approval_pending بمعرّف موافقة.
  3. يوافق عليه مراجِع من وحدة التحكم (Developer+) أو عبر استدعاء webhook مُوقَّع بـ HMAC.
  4. يستطلع الوكيل الموافقة، ثم يعيد تقديم الاستدعاء الأصلي بترويسة X-OrcaRouter-Firewall-Approval أحادية الاستخدام — وتمرّره البوابة تلك المرة الواحدة.
اطرح أي سياسة جديدة في وضع الظل أولاً. تقيّم السياسة وتسجّل تماماً كما ستفعل في الإنتاج، لكن يُخفَّض كل حكم فارض إلى audit بسبب [shadow] would … — فتثبت أنها تُطلق على ما تتوقعه قبل أن تكسر بناءً.

6. احكم المهارات وخوادم MCP التي يحمّلها

تجلب وكلاء البرمجة القدرات وقت التشغيل — مهارات مجتمعية، خوادم MCP خاصة بك. يحكم جدار الحماية كليهما في البوابة:
  • تُفحَص المهارات إلى نطاق مخاطر بوضع فرض (allow / quarantine / block). مهارة مكتشَفة تلقائياً محجوزة في الحجر — معلَّقة للموافقة — حتى يصفّيها مراجِع. انظر المهارات.
  • خوادم MCP التي تسجّلها ترسل كل tools/call عبر البوابة، التي تقيّم كل واحد على سطح mcp قبل الإرسال. تُخزَّن بيانات الاعتماد مشفَّرة؛ ويبلّغ فحص صحة عن ok / degraded / down. انظر خوادم MCP و تقوية وكيل MCP.

7. تحقّق وراقب

قبل أن تعتمد على سياسة، شغّلها تجريبياً. يقيّم تبويب Test استدعاء أداة عينة مقابل السياسة الحالية ويُظهر الحكم، والقاعدة المطابقة، والسبب — لا يُرسَل شيء، ولا يُحفظ شيء. بمجرد التشغيل، Firewall → Events / Runs هو سجل كل تقييم، قابل للتصفية حسب الحكم والسطح والأداة والتشغيل، وتعلّم تغذية الشذوذ ارتفاعات المعدل/التكلفة مقابل خط الأساس المتعلَّم لمساحة العمل، وretry_loop، ومسارات الأدوات غير المرئية من قبل.

الخلاصة

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

مستوى السياسة الكامل — الأسطح، الأحكام، الحل، الاستقلالية.

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

لغة المطابقة: globs، عبارات الوسائط، egress، التسلسلات.

استدعاءات الأدوات الخطرة

التهديد الذي تدافع عنه هذه الوصفة.

الوكالة المفرطة

لماذا الوكلاء مفرطو الصلاحيات هم الخطر الجوهري للوكلاء.

وصفة الوكيل المستقل

أحكم إغلاق حلقة وكيل مستقل بالكامل من طرف إلى طرف.

أوقف التسريب

أنماط egress والثالوث القاتل بعمق.