Sandboxing
تنفيذ الكود بأمان في حاويات معزولة لحماية نظامك من الأكواد الضارة.
ما هو Sandboxing؟
Sandboxing يعزل تنفيذ الكود في بيئة محدودة الصلاحيات. عندما ينفذ Agent كودًا (مثل Python أو Node.js)، يتم تشغيله داخل حاوية Docker منفصلة لا يمكنها الوصول إلى نظامك الرئيسي.
مع Sandboxing مقابل بدونه
✅ مع Sandboxing
- عزل كامل للكود
- لا يمكن الوصول لملفات النظام
- محدود الموارد (CPU، RAM)
- إعادة تعيين تلقائية
⚠️ بدون Sandboxing
- وصول كامل للنظام
- خطر أمني
- يمكن حذف ملفات
- لا توجد حماية
الإعداد
1. تثبيت Docker
# macOS (Homebrew) brew install --cask docker # أو قم بتحميل Docker Desktop # https://www.docker.com/products/docker-desktop
2. تفعيل Sandboxing في التكوين
{
gateway: {
sandboxing: {
enabled: true,
runtime: "docker",
// حدود الموارد
limits: {
cpu: "1.0", // 1 CPU core
memory: "512m", // 512 MB RAM
timeout: 300 // 5 دقائق max
}
}
}
}3. أعد تشغيل Gateway
openclaw gateway restart
كيف يعمل؟
- Agent يطلب تنفيذ كود (مثل Python script)
- Gateway ينشئ حاوية Docker مؤقتة
- الكود يُنفذ داخل الحاوية
- النتائج تُرسل للـ Agent
- الحاوية تُحذف تلقائيًا
مثال: تنفيذ Python script
# Agent يطلب:
import os
print(os.listdir('/'))
# يُنفذ في Docker container
# النتيجة: قائمة ملفات الحاوية فقط، ليس نظامك!Sandbox Images المدعومة
openclaw/sandbox-python
Python 3.11 مع مكتبات شائعة (numpy, pandas, requests)
openclaw/sandbox-node
Node.js 20 مع npm
openclaw/sandbox-bash
Shell commands أساسية (ls, grep, curl، إلخ)
خيارات متقدمة
{
gateway: {
sandboxing: {
enabled: true,
// حجم مخصص للـ image
customImages: {
python: "myorg/custom-python:latest"
},
// مجلدات مشاركة (استخدم بحذر!)
volumes: [
"/path/on/host:/path/in/container:ro" // :ro = read-only
],
// متغيرات بيئة آمنة
env: {
TZ: "UTC"
}
}
}
}💡 أفضل الممارسات
- فعّل Sandboxing دائمًا في بيئة الإنتاج
- حدد CPU و Memory limits لتجنب استهلاك الموارد
- لا تشارك مجلدات حساسة مع الحاويات
- راجع السجلات للكشف عن محاولات اختراق