Sandboxed API क्या है?

ओपन-सोर्स Sandboxed API (SAPI) प्रोजेक्ट, Google के Sandbox2 ओपन-सोर्स प्रोजेक्ट पर आधारित है. इसका मकसद, C/C++ लाइब्रेरी को सैंडबॉक्स करना आसान बनाना है.

Sandboxed API के तीन मुख्य फ़ायदे हैं:

  • पूरे प्रोग्राम को सैंडबॉक्स करने या प्रोग्राम के किसी हिस्से को Sandbox2 में सैंडबॉक्स करने के लिए, सोर्स कोड को बदलने के बजाय, SAPI की मदद से अलग-अलग C/C++ लाइब्रेरी को सैंडबॉक्स किया जा सकता है. इस वजह से, SAPI के मुख्य प्रोग्राम को C/C++ लाइब्रेरी में, कोड चलाने के जोखिम की आशंकाओं से अलग रखा जाता है.

  • हमारा मकसद है: सैंडबॉक्स को सिर्फ़ कहीं भी इस्तेमाल करें. सैंडबॉक्स एपीआई की मदद से सैंडबॉक्स की गई लाइब्रेरी को आसानी से फिर से इस्तेमाल किया जा सकता है. इससे आने वाले प्रोजेक्ट पर यह बोझ नहीं पड़ता. सैंडबॉक्स एपीआई से पहले, Google पर इस्तेमाल के लिए उपलब्ध सैंडबॉक्स को सैंडबॉक्स किए जा सकने वाले प्रोजेक्ट के हर नए इंस्टेंस के साथ लागू करने के लिए ज़्यादा काम करना पड़ता था, भले ही उसी सॉफ़्टवेयर लाइब्रेरी का फिर से इस्तेमाल किया गया हो. सैंडबॉक्स की गई प्रोसेस पर लागू की गई Sandbox2 नीतियों और अन्य पाबंदियों को हर बार लागू किया जाता था. साथ ही, कोड के भरोसेमंद और गैर-भरोसेमंद हिस्सों के बीच डेटा एक्सचेंज करने के तरीके को नए सिरे से डिज़ाइन करना पड़ता था.

  • हर एसएपीआई लाइब्रेरी में सुरक्षा के लिए सख्त नीति का इस्तेमाल किया जाता है. वहीं, सामान्य सैंडबॉक्स प्रोजेक्ट के मुकाबले इस प्रोजेक्ट में सुरक्षा नीतियों में, इस्तेमाल की जा रही सभी लाइब्रेरी के सिस्टम/संसाधन फ़ुटप्रिंट की जानकारी शामिल होनी चाहिए.

SAPI प्रोजेक्ट को Google सैंडबॉक्स टीम के सदस्यों ने डिज़ाइन, डेवलप, और रखरखाव किया है. यह हमारे फ़ील्ड-टेस्ट किए गए Sandbox2 का भी इस्तेमाल करता है. फ़िलहाल, कई इंटरनल प्रोजेक्ट अपने प्रोडक्शन वर्कलोड को अलग करने के लिए, एसएपीआई का इस्तेमाल कर रहे हैं.

क्विक स्टार्ट

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 के बारे में ज़्यादा जानकारी यहां उपलब्ध है:

  • Sandboxed API के बारे में जानकारी — यह Sandboxed API (SAPI) और इसके मुख्य सिद्धांतों के बारे में बताता है.

  • शुरू करना — इससे आपको एपीआई का अपना SAPI सैंडबॉक्स वर्शन बनाने में मदद मिलती है.

  • नियम बनाना — यह बताता है कि अपनी SAPI लाइब्रेरी बनाने के लिए, sapi_library() बिल्ड नियम इस्तेमाल कैसे करें.

  • वैरिएबल — एसएपीआई टाइप के इस्तेमाल के बारे में चर्चा की गई है. पॉइंटर को आसान टाइप और मेमोरी ब्लॉक में पास करने के लिए इनकी ज़रूरत होती है.

  • ट्रांज़ैक्शन — इसमें यह बताया गया है कि फ़ंक्शन कॉल को मॉनिटर करने के लिए, SAPI ट्रांज़ैक्शन मॉड्यूल का इस्तेमाल कैसे किया जाता है.

शब्दावली

Sandbox2 Google ओपन-सोर्स प्रोजेक्ट है, जो SAPI में सैंडबॉक्सिंग लेयर उपलब्ध कराता है.
सैंडबॉक्सी Sandbox2 सैंडबॉक्स में एक्ज़ीक्यूट की गई बाइनरी, Sandbox2 के दस्तावेज़ देखें. SAPI के संदर्भ में, यह सैंडबॉक्स की गई C/C++ लाइब्रेरी है.
एसएपीआई Sandboxed API, Google का ओपन-सोर्स प्रोजेक्ट है, जो सैंडबॉक्स की गई लाइब्रेरी बनाने की सुविधा देता है.
SAPI लाइब्रेरी लाइब्रेरी, जिसे SAPI ने जनरेट किया है. इसमें सैंडबॉक्स की गई लाइब्रेरी, Sandbox2 कोड, और SAPI रनटाइम कोड शामिल है.
SAPI ऑब्जेक्ट C++ ऑब्जेक्ट, होस्ट कोड में शामिल होता है. यह ओरिजनल ऑब्जेक्ट के बजाय, SAPI टाइप का इस्तेमाल करके, सैंडबॉक्स की गई लाइब्रेरी को इंटरफ़ेस उपलब्ध कराता है.
एसएपीआई के टाइप SAPI सामान्य टाइप और मेमोरी ब्लॉक में पॉइंटर पास करने के लिए ज़रूरी खास टाइप उपलब्ध कराता है.
SAPI लेन-देन इस मॉड्यूल का इस्तेमाल, सैंडबॉक्स की गई लाइब्रेरी के सैंडबॉक्स स्टेटस को दो बार चलाने के बीच मैनेज करने के लिए किया जाता है.
आरपीसी स्टब रिमोट प्रोसेस कॉल (आरपीसी) कम्यूनिकेशन स्टब को सैंडबॉक्स2 में रैप किया जाता है. इसे एसएपीआई ऑब्जेक्ट और सैंडबॉक्स की गई लाइब्रेरी के बीच डेटा भेजने के लिए इस्तेमाल किया जाता है.
होस्ट कोड वह कोड जो सैंडबॉक्स की गई लाइब्रेरी का इस्तेमाल करता है और जिसमें SAPI ऑब्जेक्ट शामिल होता है.

Sandboxed API में योगदान दिया जा रहा है

अगर आपको योगदान देना है, तो कृपया CONTRIBUTING.md पढ़ें और हमें पुल के अनुरोध भेजें.आप बग की शिकायत या सुविधा के अनुरोध भी कर सकते हैं.

अगर आपको डेवलपर से बात करनी है या प्रॉडक्ट के बड़े अपडेट के बारे में सूचना चाहिए, तो हमारे Google Group में शामिल हों: sandboxed-api-users.