ما هي Sandboxed API؟

يستند مشروع Sandboxed API (SAPI) المفتوح المصدر إلى مشروع Sandbox2 المفتوح المصدر من Google، ويهدف إلى تسهيل عملية وضع مكتبات C/C++ في بيئة معزولة.

تقدّم واجهة Sandboxed API ثلاث مزايا رئيسية:

  • بدلاً من وضع البرامج بأكملها في بيئة معزولة أو الاضطرار إلى تغيير رمز المصدر لتتمكّن من وضع جزء من البرنامج في بيئة معزولة كما هو الحال مع Sandbox2، يمكنك استخدام SAPI لوضع مكتبات C/C++ الفردية في بيئة معزولة. نتيجةً لذلك، يتم عزل البرنامج الرئيسي باستخدام SAPI عن الثغرات الأمنية المتعلقة بتنفيذ الرموز في مكتبة C/C++.

  • شعارنا هو: اختبار التطبيق مرة واحدة في وضع الحماية واستخدامه في أي مكان. يمكن إعادة استخدام المكتبات المحصورة في بيئة الاختبار المعزولة باستخدام Sandboxed API بسهولة، ما يقلّل من عبء المشاريع المستقبلية. قبل توفّر Sandboxed API، كانت البيئات المعزولة المتاحة للاستخدام في Google تتطلّب تنفيذ أعمال إضافية مع كل مثيل جديد لمشروع كان من المفترض أن يكون معزولاً، حتى إذا كان يعيد استخدام مكتبة البرامج نفسها. كان يجب إعادة تنفيذ سياسات Sandbox2 والقيود الأخرى المفروضة على العملية المعزولة في كل مرة، كما كان يجب تصميم آليات تبادل البيانات بين الأجزاء الموثوقة وغير الموثوقة من الرمز من البداية.

  • تستخدم كل مكتبة من مكتبات SAPI سياسة أمان محددة بدقة، على عكس المشاريع العادية التي تستخدم وضع الحماية، حيث يجب أن تغطي سياسات الأمان إجمالي عدد طلبات النظام/الموارد التي تستخدمها جميع المكتبات.

تم تصميم مشروع SAPI وتطويره وصيانته من قِبل أعضاء فريق Google Sandbox. تستخدم هذه الأداة أيضًا Sandbox2 التي تم اختبارها ميدانيًا. في الوقت الحالي، تستخدم العديد من المشاريع الداخلية واجهة برمجة التطبيقات SAPI لعزل أحمال العمل الخاصة بالإنتاج.

البدء بسرعة

للبدء في استخدام Sandboxed API، اتّبِع الخطوات التالية:

  1. ثبِّت العناصر التابعة المطلوبة (يفترض هذا الإجراء أنّك تستخدم الإصدار 10 من Debian Buster):
    $ echo "deb http://storage.googleapis.com/bazel-apt stable jdk1.8" | 
    sudo tee /etc/apt/sources.list.d/bazel.list $ wget -qO - https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install -qy build-essential linux-libc-dev bazel python3
    python3-pip libclang-7-dev $ pip3 install clang
  2. استنسِخ الإصدار وشغِّله:
    $ git clone https://github.com/google/sandboxed-api && cd sandboxed-api
    $ bazel build 
  3. جرِّب أحد الأمثلة:
    $ bazel run //sandboxed_api/examples/stringop:main_stringop

المستندات المتاحة

يمكنك الاطّلاع على مزيد من المعلومات عن واجهة برمجة التطبيقات المحصورة في بيئة الاختبار هنا:

  • شرح Sandboxed API: يوضّح هذا المستند واجهة Sandboxed API (SAPI) والمفاهيم الأساسية المتعلّقة بها.

  • البدء: تقدّم هذه الصفحة إرشادات لمساعدتك في إنشاء نسخة من واجهة برمجة التطبيقات في بيئة الاختبار المعزولة الخاصة بخدمة SAPI.

  • قواعد الإنشاء: توضّح كيفية استخدام قاعدة الإنشاء sapi_library() لإنشاء مكتبة SAPI.

  • المتغيرات: تناقش هذه السمة استخدام أنواع SAPI اللازمة عند تمرير المؤشرات إلى الأنواع البسيطة وكتل الذاكرة.

  • المعاملات: يوضّح هذا القسم كيفية استخدام وحدة المعاملات في SAPI لمراقبة استدعاءات الدوال.

مسرد المصطلحات

Sandbox2 مشروع Google مفتوح المصدر الذي يوفّر طبقة وضع الحماية في SAPI
Sandboxee الملف الثنائي القابل للتنفيذ في بيئة وضع الحماية Sandbox2، راجِع مستندات Sandbox2. في سياق SAPI، هذه هي مكتبة C/C++ المعزولة.
SAPI ‫Sandboxed API، وهو مشروع مفتوح المصدر من Google يوفّر وظائف لإنشاء Sandboxed Libraries.
مكتبة SAPI مكتبة تم إنشاؤها بواسطة SAPI، وتحتوي على "المكتبة المحصورة في بيئة الاختبار المعزولة" ورمز Sandbox2 ورمز وقت التشغيل الخاص بـ SAPI
كائن SAPI عنصر C++ مضمّن في "رمز المضيف"، ويوفر واجهة إلى "المكتبة المحصورة في بيئة آمنة" باستخدام "أنواع SAPI" بدلاً من الأنواع الأصلية.
أنواع SAPI توفّر واجهة SAPI أنواعًا خاصة مطلوبة عند تمرير مؤشرات إلى أنواع بسيطة وكتل ذاكرة.
SAPI Transaction وحدة تُستخدَم لإدارة حالة "المكتبة المحمية" بين عمليات التشغيل.
RPC Stub برنامج تشغيل الاتصال عن بُعد (RPC) المضمّن في Sandbox2 والمستخدَم لنقل البيانات بين كائن SAPI والمكتبة المحصورة
رمز المضيف الرمز الذي يستخدم "المكتبة المحصورة" ويتضمّن عنصر SAPI

المساهمة في تطوير Sandboxed API

إذا أردت المساهمة، يُرجى قراءة CONTRIBUTING.md وإرسال طلبات سحب إلينا.يمكنك أيضًا الإبلاغ عن الأخطاء أو تقديم طلبات بشأن الميزات.

إذا أردت التحدّث مع المطوّرين أو تلقّي إشعارات بشأن التعديلات الرئيسية على المنتج، يمكنك الانضمام إلى مجموعة Google: sandboxed-api-users.