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

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

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