Android की अनुमतियां

Android की अनुमतियों से ऐसे कंट्रोल मिलते हैं जिनसे लोगों को जानकारी मिलती है. साथ ही, किसी ऐप्लिकेशन को संवेदनशील डेटा ऐक्सेस करने से रोका जा सकता है. Android 8.0 और इससे पहले के वर्शन पर अनुमतियां कॉन्फ़िगर करने में, अनुमति वाली सूची में शामिल करना शामिल है. इसके बिना, खास सुविधाओं वाले ऐप्लिकेशन बंद हो जाते हैं. भले ही, वे priv-app पाथ में हों. Android 9 और इसके बाद के वर्शन पर, अगर कोई डिवाइस ऐसे ऐप्लिकेशन इस्तेमाल करने की कोशिश करता है जिन्हें अनुमति नहीं दी गई है, तो वह बूट नहीं होगा.

Android 10 में भूमिका का कॉन्सेप्ट पेश किया गया था. यह सिस्टम में एक यूनीक नाम होता है, जो कुछ ज़रूरी शर्तों और खास अधिकारों से जुड़ा होता है. ऐप्लिकेशन को भूमिकाएं असाइन करें, ताकि उन्हें किसी खास मकसद के लिए अनुमतियां दी जा सकें. साथ ही, प्लैटफ़ॉर्म कॉन्फ़िगरेशन संसाधनों का इस्तेमाल करके, डिफ़ॉल्ट भूमिकाएं कॉन्फ़िगर करें.

नुकसान पहुंचा सकने वाले ऐप्लिकेशन (पीएचए) से ज़्यादा सुरक्षा मिलने से, इन चीज़ों में सुधार होता है:

  • नुकसान पहुंचा सकने वाले ऐप्लिकेशन के व्यवहार के बारे में पारदर्शिता.
  • ऐप्लिकेशन के व्यवहार को कंट्रोल करने की सुविधा.
  • अनुमतियों से सुरक्षित निजी डेटा का इस्तेमाल करते समय, ऐप्लिकेशन डेवलपर के विवेक पर निर्भर करता है.

पैकेज इंस्टॉल करना और अनुमति

Android 9 और इससे पहले के वर्शन में, पैकेज इंस्टॉल करने और अनुमतियों को कंट्रोल करने की सुविधाएं, PackageInstaller पैकेज (//packages/apps/PackageInstaller) में शामिल थीं. Android 10 और इसके बाद के वर्शन में, अनुमतियों को कंट्रोल करने की सुविधा एक अलग पैकेज, PermissionController (//packages/apps/PermissionController) में शामिल है. पहली इमेज में दिखाया गया है कि Android 10 में ये दोनों पैकेज कहां मौजूद हैं.

सिस्टम ऐप्लिकेशन के लिए, पैकेज इंस्टॉल करने और अनुमति कंट्रोल करने से जुड़े फ़ंक्शन अलग-अलग होते हैं. साथ ही, उपयोगकर्ता के इंस्टॉल किए गए ऐप्लिकेशन के लिए भी ये फ़ंक्शन अलग-अलग होते हैं

पहली इमेज. Android 10 में पैकेज इंस्टॉल करने और अनुमतियों को कंट्रोल करने की सुविधाएं

अनुमति वाली सूचियां और ऐक्सेस

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

Android 8.0 में, आपको /etc/permissions डायरेक्ट्री में मौजूद सिस्टम कॉन्फ़िगरेशन वाली एक्सएमएल फ़ाइलों में, खास अधिकारों वाले ऐप्लिकेशन को साफ़ तौर पर अनुमति देनी होती थी. Android 9 और इसके बाद के वर्शन में, खास अनुमतियों को अनुमति वाली सूची में शामिल करना ज़रूरी है. ऐसा न करने पर, डिवाइस बूट नहीं हो पाएगा.

इंटरनल एपीआई की विज़िबिलिटी को सीमित करने और ऐप्लिकेशन को गलती से प्लैटफ़ॉर्म लाइब्रेरी ऐक्सेस करने से रोकने के लिए, Android 7.0 में नेटिव लाइब्रेरी के लिए नेमस्पेस की सुविधा लॉन्च की गई थी. इससे सिस्टम लाइब्रेरी को ऐप्लिकेशन लाइब्रेरी से अलग किया जाता है. साथ ही, डिवाइस बनाने वाली कंपनियां अपनी नेटिव लाइब्रेरी जोड़ सकती हैं.

Android 10 से, ऐप्लिकेशन को डिवाइस की स्क्रीन का कॉन्टेंट ऐक्सेस करने के लिए, सिग्नेचर की अनुमतियां और उपयोगकर्ता की सहमति, दोनों लेनी होंगी. जिन ऐप्लिकेशन को साइलेंट कैप्चर की सुविधा की ज़रूरत होती है उन्हें MediaProjection क्लास का इस्तेमाल करना चाहिए. जैसे, स्क्रीनशॉट लेने वाले ऐप्लिकेशन.

Android 15 में, आपको उन प्लैटफ़ॉर्म सिग्नेचर अनुमतियों को साफ़ तौर पर अनुमति देनी होगी जिनका अनुरोध सिस्टम ऐप्लिकेशन के अलावा अन्य ऐप्लिकेशन ने किया है. इसके अलावा, आपको उन अनुमतियों को भी अनुमति देनी होगी जिनका अनुरोध सिस्टम ऐप्लिकेशन के अपडेट ने किया है. ये अनुमतियां, /etc/permissions डायरेक्ट्री में मौजूद सिस्टम कॉन्फ़िगरेशन एक्सएमएल फ़ाइलों में मौजूद होती हैं.

पारदर्शिता और निजता

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

Android 9 और इससे पहले के वर्शन में, उपयोगकर्ता ऐप्लिकेशन को जगह की जानकारी का ऐक्सेस देते समय, हमेशा के लिए विकल्प चुनते हैं. Android 10 से, जगह की जानकारी ऐक्सेस करने की अनुमति देने के लिए तीन विकल्प उपलब्ध कराए गए हैं. इससे लोगों को किसी ऐप्लिकेशन को डिवाइस की जगह की जानकारी ऐक्सेस करने की अनुमति देने के लिए तीन विकल्प मिलते हैं. अनुमति से जुड़ी ये ज़रूरी शर्तें, Android 10 में मौजूद ऐप्लिकेशन पर लागू होती हैं. भले ही, टारगेट एसडीके कोई भी हो.

Android 10 से शुरू होने वाले वर्शन में, पारदर्शिता और निजता से जुड़ी अन्य सुविधाओं के लिए अनुमतियां कॉन्फ़िगर करना

आसानी से मैनेज किए जा सकने वाले कॉन्फ़िगरेशन

Android 6.0 और इसके बाद के वर्शन के लिए, अनुमतियों के कॉन्फ़िगरेशन को आसान बना दिया गया है.

  • init की ओर से लॉन्च की गई सेवाओं के लिए, ऐम्बिएंट सुविधाएं, सेवा के कॉन्फ़िगरेशन के सभी पहलुओं को एक ही .rc फ़ाइल में सेव करती हैं. init से लॉन्च नहीं की गई सेवाओं के लिए सुविधाएं सेट अप करते समय, fs_config.c का इस्तेमाल करके फ़ाइल सिस्टम की सुविधाएं कॉन्फ़िगर करें.
  • Android 7.x और इससे पहले के वर्शन में, Android आईडी (एआईडी) के मेकेनिज़्म को बढ़ाया गया है. इसमें डिवाइस के हिसाब से android_filesystem_config.h फ़ाइल का इस्तेमाल किया जाता है. इससे फ़ाइल सिस्टम की क्षमताओं और/या डिवाइस बनाने वाली कंपनी के कस्टम एआईडी के बारे में जानकारी मिलती है. Android 8.0 और इसके बाद के वर्शन में, फ़ाइल सिस्टम की क्षमताओं को बढ़ाने का नया तरीका इस्तेमाल किया जाता है.
  • Android 8.0 में, यूएसबी कमांड को हैंडल करने की सुविधा को डिवाइस के हिसाब से init स्क्रिप्ट (HAL लेयर के बदले इस्तेमाल होने वाली स्क्रिप्ट) से हटाकर, नेटिव यूएसबी डेमॉन में जोड़ दिया गया है. Android 8.0 और इसके बाद के वर्शन पर लॉन्च होने वाले हर डिवाइस पर, यूएसबी एचएएल इंटरफ़ेस लागू होना चाहिए.