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 से शुरू होने वाले वर्शन में, पारदर्शिता और निजता से जुड़ी अन्य सुविधाओं के लिए अनुमतियां कॉन्फ़िगर करना

  • बैकग्राउंड ऐक्सेस लोकेशन रिमाइंडर लोगों को तब दिखता है, जब कोई ऐप्लिकेशन ACCESS_FINE_LOCATIONअनुमति का इस्तेमाल करके, बैकग्राउंड में उनके डिवाइस की लोकेशन ऐक्सेस करता है.
  • संपर्कों से अफ़िनिटी (मिलते-जुलते संपर्क) से जुड़ा डेटा, Contacts Provider कॉम्पोनेंट मैनेज करता है. इसे अलग तरीके से ऐक्सेस किया जाता है: ऐप्लिकेशन, डेटाबेस में मौजूद संपर्कों से अफ़िनिटी डेटा को न तो लिख सकते हैं और न ही पढ़ सकते हैं. इससे कॉल करने वाले से जुड़े एपीआई पर असर पड़ता है.

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

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 और इसके बाद के वर्शन पर लॉन्च किए जा रहे हर डिवाइस पर, यूएसबी एचएएल इंटरफ़ेस लागू करना ज़रूरी है.