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

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

बेहतर कॉन्फ़िगरेशन

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

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