ما هي Sandboxed API؟

يعتمد مشروع واجهة برمجة التطبيقات المفتوحة المصدر (SAPI) المفتوح المصدر على المشروع المفتوح المصدر Sandbox2 من Google ويهدف إلى تقليل العبء عن وضع الحماية لمكتبات C/C++.

توفر واجهة برمجة التطبيقات في Sandboxed ثلاث مزايا رئيسية:

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

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

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

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

البدء بسرعة

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

  1. ثبِّت التبعيات المطلوبة (بافتراض أنّك تشغّل Debian 10 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 هنا:

  • شرح واجهة برمجة التطبيقات في وضع الحماية - يصف واجهة برمجة التطبيقات (SAPI) المستندة إلى وضع الحماية ومفاهيمها الأساسية.

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

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

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

  • المعاملات — تشرح كيفية استخدام وحدة معاملة SAPI لمراقبة استدعاءات الدوال.

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

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

المساهمة في Sandboxed API

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

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