حقائق أساسية
- Fence هو أداة سطر أوامر تلف أي أمر داخل صندوقية، وتمنع وصول الشبكة افتراضياً وتقييد عمليات كتابة نظام الملفات.
- تستخدم الأداة تقنيات صندوقية أصلية للنظام، وتحديداً sandbox-exec لـ macOS و bubblewrap لـ Linux، لفرض العزل.
- يتم التعامل مع تصفية الشبكة من خلال وكيل HTTP/SOCKS محلي، مما يتطلب من التطبيقات احترام متغير البيئة HTTP_PROXY.
- تم تطويرها في الأصل لوضع الخدمات قيد الاختبار داخل صندوقية أثناء إعادة تشغيل اختبارات API، ومنع اتصالات localhost لإجبار استخدام المحاكاة.
- تقدم Fence وضع مراقبة يسمح للمطورين برؤية ما سيتم حظره دون فرض القيود فعلياً.
- يمكن للأداة استيراد مجموعات الأذونات الموجودة من أدوات أخرى، مثل Claude Code، باستخدام أمر استيراد محدد.
طبقة أمان جديدة لسطر الأوامر
يقوم المطورون غالباً بتشغيل أوامر تحمل مخاطر جوهرية، من تثبيت حزم جديدة إلى تنفيذ سكربتات من مستودعات غير معروفة. تهدف أداة سطر أوامر جديدة إلى تخفيف هذه المخاطر عن طريق تغليف أي أمر داخل بيئة صندوقية.
تُدعى Fence، تمنع الأداة وصول الشبكة افتراضياً وتقييد عمليات كتابة نظام الملفات. هذا يخلق بيئة محكمة لتنفيذ الكود، ومنع الآثار الجانبية غير المرغوب فيها أو نقل البيانات غير المصرح به.
الهدف الأساسي هو توفير شبكة أمان لتشغيل كود شبه موثوق. سواء كان سكربت بناء أو تثبيت حزمة أو أداة قد "تتصل بالمنزل"، توفر Fence طريقة لتنفيذ هذه الأوامر بسلوك محدد ومتوقع.
الوظائف الأساسية والأنماط
تعمل Fence عن طريق اعتراض استدعاءات النظام وطلبات الشبكة، مما يعزل فعلياً الأمر المستهدف من نظام المضيف. افتراضياً، تمنع كل الاتصالات الخارجية بالشبكة وتمنع عمليات الكتابة خارج دليل محدد.
تقدم الأداة عدة أنماط تشغيل لتناسب سيناريوهات مختلفة:
- الوضع الافتراضي: يمنع كل حركة المرور على الشبكة ويقيد كتابة نظام الملفات.
- وضع القوالب: يطبق قواعد مسبقة الإعداد، مثل السماح بمستودعات محددة لمديري الحزم.
- وضع المراقبة: يشغل الأمر مع تسجيل ما سيتم حظره، مما يوفر رؤية دون فرض.
على سبيل المثال، تشغيل fence curl https://example.com يؤدي إلى اتصال محظور. على العكس من ذلك، استخدام قالب مع fence -t code -- npm install يسمح بالوصول إلى مستودعات npm الضرية مع الحفاظ على القيود الأخرى.
"سرعان ما أدركت أن هذه الأداة يمكن أن تكون لأغراض عامة وستكون مفيدة أيضاً كمدير أذونات عبر وكلاء سطر الأوامر."
— مطور Fence
البنية التقنية
تستفيد الأداة من تقنيات الصندوقية الأصلية للنظام لفرض العزل. على macOS، تستخدم sandbox-exec، بينما على Linux تعتمد على bubblewrap. توفر هذه الآليات الأساسية أساساً قوياً لتحديد قدرات العمليات.
من أجل تصفية الشبكة، توظف Fence وكيل HTTP/SOCKS محلي. يعترض هذا الوكيل طلبات الشبكة ويطبق قواعد التصفية القائمة على النطاق. ومع ذلك، فإن هذا النهج له حد محدد: يتطلب من البرامج التي يتم وضعها في صندوقية احترام متغير البيئة HTTP_PROXY.
تم تصميم البنية لتكون خفيفة وغير متطفلة، باستخدام أدوات النظام القياسية بدلاً من تطلب وحدات نواة معقدة أو طبقات افتراضية.
حالات الاستخدام والتطبيقات
تم تصور الأداة في الأصل لحل مشكلة محددة في اختبار API. المطور وراء Fence يعمل على Tusk Drift، وهي نظام لتسجيل وإعادة تشغيل حركة المرور الحقيقية كاختبارات API. أثناء إعادة تشغيل الاختبارات، كان من الضروري وضع الخدمة قيد الاختبار داخل صندوقية لمنع اتصالات localhost الخارجية بقواعد بيانات مثل Postgres و Redis، مما يجبر التطبيق على استخدام المحاكاة بدلاً من الخدمات الحقيقية.
يمتد هذا الأUTILITY إلى حالات استخدام أوسع، خاصة مع وكلاء الترميز بالذكاء الاصطناعي. تشغيل وكلاء مع أقل عدد من مطالبات الأذونات التفاعلية يمكن أن يكون محفوفاً بالمخاطر. يسمح Fence للمطورين بوضع هذه الوكلاء في صندوقية، مما يقلل من خطر الإجراءات غير المقصودة.
على سبيل المثال، يمكن تشغيل وكيل باستخدام أمر مثل: fence -t code -- claude --dangerously-skip-permissions. بالإضافة إلى ذلك، يمكن لـ Fence استيراد مجموعات الأذونات الموجودة، مثل تلك الموجودة في Claude Code، باستخدام الأمر fence import --claude.
"سرعان ما أدركت أن هذه الأداة يمكن أن تكون لأغراض عامة وستكون مفيدة أيضاً كمدير أذونات عبر وكلاء سطر الأوامر."
القيود والاعتبارات
بينما توفر Fence طبقة أمان قيمة، إلا أنها ليست حلاً سحرياً. تنص الوثائق صراحة على أنها ليست حاوياً قوياً ضد البرامج الضارة. قد تجد البرامج الضارة المتطورة طرقاً لتجاوز التصفية القائمة على الوكيل أو استغلال ثغرات نظام أخرى.
يعتمد الاعتماد على التصفية القائمة على الوكيل على أن التطبيقات التي لا تحترم متغير البيئة HTTP_PROXY لن يتم تصفية حركة مرورها على الشبكة. هذا اعتبار حاسم للمطورين الذين يقيمون الأداة لتكديسهم التقني المحدد.
على الرغم من هذه القيود، تمثل Fence خطوة عملية نحو تنفيذ سطر الأوامر الأكثر أماناً. تقدم توازناً بين الأمان والقابلية للاستخدام، مما يسمح للمطورين بتشغيل الأوامر الضرورية ولكن المحتمل أن تكون محفوفة بالمخاطر بثقة أكبر.
النظر إلى الأمام
تعالج Fence نقطة ألم شائعة في سير عمل التطوير الحديث: الحاجة إلى تشغيل كود غير موثوق أو شبه موثوق دون المساس بسلامة النظام. من خلال توفير واجهة سطر أوامر بسيطة لتقنيات صندوقية قوية، تخفض من حواجز الدخول لتنفيذ الكود الآمن.
الأداة متاحة حالياً لـ macOS و Linux، وتغطي غالبية بيئات التطوير. طبيعتها مفتوحة المصدر تدعو إلى ملاحظات المجتمع والمساهمات المحتملة لتوسيع قدراتها.
مع زيادة دمج سير عمل التطوير لوكلاء الذكاء الاصطناعي والسكربتات الخارجية، من المرجح أن تصبح أدوات مثل Fence مكونات أساسية لحزمة أدوات التطوير الآمن. يبحث المطور بنشاط عن ملاحظات وحالات استخدام من المجتمع.
أسئلة متكررة
ما هو الغرض الرئيسي من أداة Fence؟
تم تصميم Fence لتشغيل الأوامر في بيئة صندوقية، ومنع وصول الشبكة افتراضياً وتقييد عمليات كتابة نظام الملفات. هذا يسمح للمطورين بتنفيذ كود شبه موثوق، مثل تثبيت الحزم أو سكربتات البناء، مع آثار جانبية محكمة.
كيف تحقق Fence صندوقيتها؟
تستفيد من تقنيات الصندوقية الأصلية للنظام: sandbox-exec لـ macOS و bubblewrap لـ Linux. من أجل تصفية الشبكة، تستخدم وكيل HTTP/SOCKS محلي لمنع أو السماح بنطاقات محددة، على الرغم من أن هذا يتطلب من التطبيق المستهدف احترام إعدادات الوكيل.
ما هي حالات الاستخدام الرئيسية لـ Fence؟
الأداة مفيدة لتشغيل وكلاء الترميز بالذكاء الاصطناعي مع خطر مخفض، وتنفيذ مستودعات غير معروفة بأمان، ومنع الأدوات التي تتصل بالمنزل. تم إنشاؤها تحديداً لوضع الخدمات قيد الاختبار أثناء إعادة تشغيل اختبارات API، ومنع الاتصالات بقواعد البيانات المحلية.
ما هي قيود Fence؟
لا تعتبر حاوياً قوياً ضد البرامج الضارة المتطورة. بالإضافة إلى ذلك، تعمل تصفيتها القائمة على الوكيل فقط إذا كان البرنامج الذي يتم وضعه في صندوقية يحترم متغير البيئة HTTP_PROXY، وهو ما ليس عالمياً.










