ऐप्लिकेशन सैंडबॉक्स

Android प्लैटफ़ॉर्म, ऐप्लिकेशन के संसाधनों की पहचान करने और उन्हें अलग करने के लिए, उपयोगकर्ता के हिसाब से Linux की सुरक्षा का फ़ायदा लेता है. इससे ऐप्लिकेशन एक-दूसरे से अलग हो जाते हैं और ऐप्लिकेशन और सिस्टम को नुकसान पहुंचाने वाले ऐप्लिकेशन से सुरक्षित रखा जाता है. ऐसा करने के लिए, Android हर Android ऐप्लिकेशन को एक यूनीक यूज़र आईडी (यूआईडी) असाइन करता है और उसे अपनी प्रोसेस में चलाता है.

Android, कर्नेल-लेवल के ऐप्लिकेशन सैंडबॉक्स को सेट अप करने के लिए यूआईडी का इस्तेमाल करता है. कॉन्टेंट बनाने कर्नेल प्रोसेस के स्तर पर, ऐप्लिकेशन और सिस्टम के बीच सुरक्षा लागू करता है उपयोगकर्ता और समूह आईडी जैसी मानक Linux सुविधाओं के ज़रिए किस तरह इस्तेमाल करते हैं. डिफ़ॉल्ट रूप से, ऐप्लिकेशन एक-दूसरे के साथ इंटरैक्ट नहीं कर सकते. साथ ही, उनके पास ओएस का सीमित ऐक्सेस होता है. अगर ऐप्लिकेशन A कोई नुकसान पहुंचाने वाला काम करने की कोशिश करता है, जैसे कि पढ़ना ऐप्लिकेशन B का डेटा ऐक्सेस करने या फ़ोन को बिना अनुमति के डायल करने पर भी रोक लगाई जाती है ऐसा करना इसलिए ज़रूरी है, क्योंकि इसके पास उपयोगकर्ता के लिए ज़रूरी अधिकार नहीं हैं. सैंडबॉक्स आसान है और इसकी ऑडिटिंग की जा सकती है. यह कई दशकों पुराने यूनिक्स स्टाइल पर आधारित है, जिसमें प्रोसेस और फ़ाइल की अनुमतियों को उपयोगकर्ता से अलग रखा जाता है.

ऐप्लिकेशन सैंडबॉक्स, कर्नेल में है. इसलिए, यह सुरक्षा मॉडल स्थानीय कोड और ओएस ऐप्लिकेशन, दोनों के लिए लागू. सभी सॉफ़्टवेयर कर्नेल, जैसे कि OS लाइब्रेरी, ऐप्लिकेशन फ़्रेमवर्क, ऐप्लिकेशन रनटाइम, और सभी ऐप्स को ऐप्लिकेशन सैंडबॉक्स में चलाया जा सकता है. कुछ प्लैटफ़ॉर्म पर, डेवलपर को किसी खास डेवलपमेंट फ़्रेमवर्क, एपीआई के सेट या भाषा का इस्तेमाल करना पड़ता है. Android पर, ऐप्लिकेशन के इस्तेमाल पर कोई पाबंदी नहीं है लिखे गए हों, जो सुरक्षा लागू करने के लिए ज़रूरी हों; इस संबंध में, नेटिव कोड के रूप में सैंडबॉक्स किया जा सकता है.

सुरक्षा से जुड़ी सुविधाएं

आम तौर पर, सही तरीके से कॉन्फ़िगर किए गए डिवाइस में ऐप्लिकेशन सैंडबॉक्स से बाहर निकलने के लिए, Linux कर्नेल की सुरक्षा से समझौता करना होगा. हालांकि, समान की मदद से, सुरक्षा से जुड़ी अन्य सुविधाओं का इस्तेमाल किया जा सकता है. सैंडबॉक्स को नुकसान नहीं पहुंचाया जा सकता. इसलिए, उसे सुरक्षित बनाए रखने के लिए, मज़बूत सुरक्षा अलग-अलग जोखिमों की आशंका है, जिसकी वजह से ओएस या अन्य ऐप्लिकेशन को नुकसान पहुंच सकता है.

ऐप्लिकेशन सैंडबॉक्स को लागू करने के लिए, Android कई सुरक्षा उपायों का इस्तेमाल करता है. नीति उल्लंघन ठीक करने के इन तरीकों को समय-समय पर लागू किया गया है ने यूआईडी के आधार पर, विवेक से जुड़े ऐक्सेस कंट्रोल को काफ़ी मज़बूत बनाया है (DAC) सैंडबॉक्स. Android की पिछली रिलीज़ में ये सुरक्षा उपाय शामिल थे:

  • Android 5.0 में, SELinux ने ऐक्सेस कंट्रोल (MAC) के लिए अलग-अलग विकल्प दिया है का समय होता है. हालांकि, तीसरे पक्ष के सभी ऐप्लिकेशन उसी SELinux संदर्भ इसलिए इंटर-ऐप्लिकेशन आइसोलेशन को मुख्य रूप से UID DAC ने लागू किया था.
  • Android 6.0 में, पूरे ऐप्लिकेशन को अलग-अलग करने के लिए, SELinux सैंडबॉक्स का इस्तेमाल हर उपयोगकर्ता के इस्तेमाल की सीमा. इसके अलावा, Android, ऐप्लिकेशन का डेटा: targetSdkVersion >= 24 वाले ऐप्लिकेशन के लिए, डिफ़ॉल्ट सेटिंग किसी ऐप्लिकेशन के होम दिशा में DAC की अनुमतियों को 751 से बदलकर 700 किया गया. यह दिया गया निजी ऐप्लिकेशन डेटा के लिए ज़्यादा सुरक्षित डिफ़ॉल्ट (हालांकि, ऐप्लिकेशन इन सेटिंग को बदल सकते हैं) डिफ़ॉल्ट).
  • Android 8.0 में, सभी ऐप्लिकेशन को seccomp-bpf की मदद से चलने के लिए सेट किया गया था फ़िल्टर का इस्तेमाल करता है, जिससे ऐप्लिकेशन के सीमित सिस्टम का इस्तेमाल किया जा सकता है. इस तरह, ऐप्लिकेशन/कर्नेल की सीमा को मज़बूत करना.
  • Android 9 में, targetSdkVersion >= 28 वाले सभी ऐप्लिकेशन को अलग-अलग SELinux सैंडबॉक्स में चलाना ज़रूरी है. इससे हर ऐप्लिकेशन के लिए, मैक (मैनेजमेंट ऐक्सेस कंट्रोल) की सुविधा मिलती है. इस सुरक्षा से, ऐप्लिकेशन को अलग-अलग रखने में मदद मिलती है. साथ ही, यह सुरक्षित डिफ़ॉल्ट सेटिंग को बदलने से रोकता है. सबसे अहम बात यह है कि यह ऐप्लिकेशन को अपना डेटा सभी के लिए ऐक्सेस करने से रोकता है.
  • Android 10 में, ऐप्लिकेशन के पास फ़ाइल सिस्टम का सीमित रॉ व्यू होता है. साथ ही, /sdcard/DCIM जैसे पाथ का सीधा ऐक्सेस नहीं होता. हालांकि, ऐप्लिकेशन अपने पैकेज-विशिष्ट पथों की पूरी तरह से रॉ ऐक्सेस बनाए रखें, जैसा कि किसी लागू करने के तरीके, जैसे कि Context.getExternalFilesDir().

फ़ाइलें शेयर करने के दिशा-निर्देश

ऐप्लिकेशन के डेटा को 'दुनिया भर के लिए ऐक्सेस किया जा सकता है' के तौर पर सेट करना, सुरक्षा का एक खराब तरीका है. ऐक्सेस करने का अधिकार का ऐक्सेस सभी लोगों को दिया जाता है. हालांकि, हो सकता है कि ऐक्सेस को सिर्फ़ पाने वाले. इस तरीके से, जानकारी ज़ाहिर करने से जानकारी लीक होती है और भ्रम की स्थिति पैदा होती है जोखिम की आशंकाओं को कम करता है. साथ ही, यह ऐप्लिकेशन को टारगेट करने वाले मैलवेयर का पसंदीदा टारगेट है संवेदनशील जानकारी (जैसे कि ईमेल क्लाइंट) से जुड़ी समस्याओं के लिए बनाया गया है. Android 9 और उसके बाद के वर्शन में, targetSdkVersion>=28 वाले ऐप्लिकेशन के लिए, इस तरह से फ़ाइलें शेयर करने की अनुमति नहीं है.

ऐप्लिकेशन का डेटा सभी के लिए उपलब्ध कराने के बजाय, फ़ाइलें शेयर करते समय इन दिशा-निर्देशों का पालन करें:

  • अगर आपके ऐप्लिकेशन को किसी दूसरे ऐप्लिकेशन के साथ फ़ाइलें शेयर करनी हैं, तो कॉन्टेंट प्रोवाइडर का इस्तेमाल करें. कॉन्टेंट देने वाले लोग सही जानकारी के साथ डेटा शेयर करते हैं और इसमें दुनिया भर में लागू होने वाली UNIX अनुमतियों की कमियों के बिना ( विवरण के लिए, कॉन्टेंट देने वाले के बारे में बुनियादी बातें).
  • अगर आपके ऐप्लिकेशन में ऐसी फ़ाइलें हैं जिन्हें सभी लोग ऐक्सेस कर सकते हैं, जैसे कि फ़ोटो, तो वे सिर्फ़ मीडिया से जुड़ी (सिर्फ़ फ़ोटो, वीडियो, और ऑडियो फ़ाइलें) होनी चाहिए. साथ ही, उन्हें MediaStore क्लास का इस्तेमाल करके स्टोर किया जाना चाहिए. (मीडिया आइटम जोड़ने के तरीके के बारे में ज़्यादा जानकारी के लिए, शेयर किए गए स्टोरेज से मीडिया फ़ाइलें ऐक्सेस करना लेख पढ़ें.)

स्टोरेज की रनटाइम अनुमति, MediaStore के ज़रिए, स्ट्रोंग टाइप वाले कलेक्शन को ऐक्सेस करने की अनुमति को कंट्रोल करती है. PDF और MediaStore.Downloads क्लास जैसी कमज़ोर टाइप वाली फ़ाइलों को ऐक्सेस करने के लिए, ऐप्लिकेशन को इंटेंट, जैसे कि ACTION_OPEN_DOCUMENT इंटेंट.

Android 10 के व्यवहार को चालू करने के लिए, requestLegacyExternalStorage मेनिफ़ेस्ट एट्रिब्यूट का इस्तेमाल करें. साथ ही, ऐप्लिकेशन की अनुमतियों के सबसे सही तरीकों का पालन करें.

  • इसके लिए मेनिफ़ेस्ट फ़्लैग डिफ़ॉल्ट मान true है Android 9 और इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन.
  • Android 10 को टारगेट करने वाले ऐप्लिकेशन के लिए, डिफ़ॉल्ट वैल्यू 'गलत' है. फ़िल्टर की गई फ़िल्टर से कुछ समय के लिए ऑप्ट आउट करने के लिए Android 10 को टारगेट करने वाले ऐप्लिकेशन का स्टोरेज व्यू, मेनिफ़ेस्ट फ़्लैग की वैल्यू को true पर सेट करें.
  • पाबंदी वाली अनुमतियों का इस्तेमाल करके, इंस्टॉलर ने ऐप्लिकेशन को अनुमति वाली सूची में शामिल किया है सैंडबॉक्स नहीं किए गए स्टोरेज के लिए इस्तेमाल की जा सकती है. अनुमति नहीं दिए गए ऐप्लिकेशन की सूची में ये ऐप्लिकेशन शामिल हैं सैंडबॉक्स किया गया.