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 अनुमति का इस्तेमाल करके, उनके डिवाइस की जगह की जानकारी ऐक्सेस करता है.
  • संपर्क-अफ़िनिटी डेटा को, 'संपर्क उपलब्ध कराने वाला संगठन' कॉम्पोनेंट से मैनेज किया जाता है. इसे ऐक्सेस करने का तरीका अलग होता है: ऐप्लिकेशन, डेटाबेस में मौजूद संपर्क अफ़िनिटी डेटा को न तो लिख सकते हैं और न ही उससे पढ़ सकते हैं. इससे, कॉलर से जुड़े एपीआई पर असर पड़ता है.

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

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 इंटरफ़ेस लागू होना चाहिए.