एंटरप्राइज़ के लिए Android 10 में नया क्या है

इस पेज पर, Android 10 में जोड़े गए नए Enterprise API, सुविधाओं, और काम करने के तरीके में हुए बदलावों के बारे में खास जानकारी दी गई है.

कंपनी के मालिकाना हक वाले डिवाइसों के लिए, वर्क प्रोफ़ाइलें

Android 10 में, कंपनी के मालिकाना हक वाले डिवाइसों के लिए, प्रोविज़निंग और अटेस्टेशन की नई सुविधाएं जोड़ी गई हैं. इन डिवाइसों के लिए, सिर्फ़ वर्क प्रोफ़ाइल की ज़रूरत होती है.

वर्क प्रोफ़ाइलों के लिए, बेहतर प्रोविज़निंग टूल

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

अपने डीपीसी की मेनिफ़ेस्ट फ़ाइल में, किसी गतिविधि के लिए GET_PROVISIONING_MODE के लिए एक नया इंटेंट फ़िल्टर तय करें. साथ ही, BIND_DEVICE_ADMIN अनुमति जोड़ें, ताकि कोई भी ऐप्लिकेशन इस गतिविधि को शुरू न कर पाए. उदाहरण के लिए:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

प्रोविज़निंग के दौरान, सिस्टम इंटेंट फ़िल्टर से जुड़ी गतिविधि लॉन्च करता है. इस गतिविधि का मकसद, मैनेजमेंट मोड (वर्क प्रोफ़ाइल या पूरी तरह से मैनेज किया जा रहा डिवाइस) तय करना है.

डिवाइस के लिए सही मैनेजमेंट मोड तय करने से पहले, प्रोविज़निंग एक्स्ट्रा को वापस पाना काम का हो सकता है. गतिविधि, इन्हें वापस पाने के लिए getIntent() को कॉल कर सकती है:

डीपीसी, नतीजों के लिए एक नया इंटेंट भी बना सकते हैं. साथ ही, इसमें ये एक्स्ट्रा जोड़ सकते हैं:

  • EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE: मौजूदा बंडल में जोड़ें या नया बंडल बनाएं. जब आपका डीपीसी, नीति के मुताबिक काम करने की पुष्टि करने वाली स्क्रीन लॉन्च करता है, तो यह बंडल इंटेंट एक्स्ट्रा के तौर पर भेजा जाता है.
  • EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE: माइग्रेट करने के लिए सिर्फ़ वह खाता तय करें जिसे वर्क प्रोफ़ाइल के प्रोविज़निंग के हिस्से के तौर पर, वर्क खाता के तौर पर जोड़ा जा रहा है.
  • EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS

डिवाइस पर मैनेजमेंट मोड सेट करने के लिए, putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), को कॉल करें. इसमें, desiredProvisioningMode यह है:

  • वर्क प्रोफ़ाइल: PROVISIONING_MODE_MANAGED_PROFILE
  • पूरी तरह से मैनेज किया जा रहा डिवाइस: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

वर्क प्रोफ़ाइल या पूरी तरह से मैनेज किए जा रहे डिवाइस का प्रोविज़निंग पूरा करने के लिए, प्रोविज़निंग की जानकारी को setResult(RESULT_OK, Intent) के ज़रिए सेटअप पर वापस भेजें. साथ ही, finish()की मदद से, चालू सभी स्क्रीन बंद करें.

प्रोविज़निंग पूरा होने के बाद, डीपीसी के लिए एक नया इंटेंट उपलब्ध होता है. इसकी मदद से, वे नीति के मुताबिक काम करने की पुष्टि करने वाली स्क्रीन लॉन्च कर सकते हैं और शुरुआती नीति सेटिंग लागू कर सकते हैं. वर्क प्रोफ़ाइल वाले डिवाइसों पर, नीति के मुताबिक काम करने की पुष्टि करने वाली स्क्रीन, वर्क प्रोफ़ाइल में दिखती हैं. आपके डीपीसी को यह पक्का करना होगा कि नीति के मुताबिक काम करने की पुष्टि करने वाली स्क्रीन, उपयोगकर्ताओं को दिखें. भले ही, कोई उपयोगकर्ता सेटअप फ़्लो से बाहर निकल जाए.

अपने डीपीसी की मेनिफ़ेस्ट फ़ाइल में, किसी गतिविधि के लिए ADMIN_POLICY_COMPLIANCE के लिए एक नया इंटेंट फ़िल्टर तय करें. साथ ही, BIND_DEVICE_ADMIN अनुमति जोड़ें, ताकि कोई भी ऐप्लिकेशन इस गतिविधि को शुरू न कर पाए. उदाहरण के लिए:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

आपके डीपीसी को इस नए इंटेंट का इस्तेमाल करना होगा, बजाय इसके कि वह ACTION_PROFILE_PROVISIONING_COMPLETE ब्रॉडकास्ट को सुने.

इंटेंट फ़िल्टर से जुड़ी गतिविधि, getIntent() को वापस पाने के लिए, the EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE को कॉल कर सकती है. नीति के मुताबिक काम करने की पुष्टि करने के बाद, ADMIN_POLICY_COMPLIANCE को setResult(RESULT_OK, Intent) वापस करना होगा. साथ ही, finish() की मदद से, चालू सभी स्क्रीन बंद करनी होंगी.

पूरी तरह से मैनेज किए जा रहे डिवाइस, उपयोगकर्ताओं को होम स्क्रीन पर वापस ले जाते हैं. वर्क प्रोफ़ाइल वाले डिवाइस, उपयोगकर्ताओं को होम स्क्रीन पर वापस ले जाने से पहले, उनसे अपना निजी खाता जोड़ने के लिए कहते हैं.

वर्क प्रोफ़ाइल वाले डिवाइस की आईडी का अटेस्टेशन

ज़ीरो-टच एनरोलमेंट का इस्तेमाल करके सेट अप की गई वर्क प्रोफ़ाइल के एडमिन के तौर पर सेट किए गए डीपीसी, सुरक्षित हार्डवेयर से अटेस्ट किए गए डिवाइस आईडी पा सकते हैं. जैसे, आईएमईआई या मैन्युफ़ैक्चरर का सीरियल नंबर. डिवाइस में सुरक्षित हार्डवेयर (जैसे, ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (टीईई) या सिक्योर एलिमेंट (एसई)) शामिल होना चाहिए. साथ ही, डिवाइस-आईडी अटेस्टेशन और ज़ीरो-टच एनरोलमेंट की सुविधा काम करनी चाहिए.

वर्क प्रोफ़ाइल का एडमिन कॉम्पोनेंट, DevicePolicyManager.generateKeyPair() को कॉल कर सकता है. इसके लिए, idAttestationFlags आर्ग्युमेंट के लिए, ID_TYPE_SERIAL, ID_TYPE_IMEI या ID_TYPE_MEID में से एक या उससे ज़्यादा आर्ग्युमेंट पास किए जा सकते हैं.

डिवाइस आईडी निकालने और उनकी पुष्टि करने के बारे में ज़्यादा जानने के लिए, Key Attestation की मदद से हार्डवेयर से सुरक्षित की-पेयर की पुष्टि करना लेख पढ़ें.

वर्क प्रोफ़ाइल में किए गए सुधार

प्रोफ़ाइल के बीच कैलेंडर की जानकारी दिखने की सुविधा और डिवाइस पर, अज्ञात सोर्स से ऐप्लिकेशन इंस्टॉल करने की सुविधा को ब्लॉक करने के लिए, नए एपीआई उपलब्ध हैं.

वर्क प्रोफ़ाइल, डिवाइस पर अज्ञात सोर्स से ऐप्लिकेशन इंस्टॉल करने की सुविधा

Google Play (या अन्य भरोसेमंद ऐप्लिकेशन स्टोर) के अलावा, अन्य सोर्स से डाउनलोड किए गए ऐप्लिकेशन को अज्ञात सोर्स से डाउनलोड किए गए ऐप्लिकेशन कहा जाता है. Android 10 में, वर्क प्रोफ़ाइल के एडमिन, नई उपयोगकर्ता पाबंदी DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY जोड़कर, किसी भी उपयोगकर्ता या प्रोफ़ाइल को डिवाइस पर कहीं भी, अज्ञात सोर्स से ऐप्लिकेशन इंस्टॉल करने से रोक सकते हैं. हालांकि, यह पाबंदी जोड़ने के बाद भी, डिवाइस का इस्तेमाल करने वाला व्यक्ति, adb का इस्तेमाल करके ऐप्लिकेशन इंस्टॉल कर सकता है.

हमारा सुझाव है कि उपयोगकर्ताओं को गलती से अज्ञात सोर्स से ऐप्लिकेशन इंस्टॉल करने से रोकने के लिए, यह उपयोगकर्ता पाबंदी जोड़ें. ऐसा इसलिए, क्योंकि इसके लिए Google Play services इंस्टॉल करने की ज़रूरत नहीं होती. अगर आपको Android के पुराने वर्शन के साथ काम करने की सुविधा देनी है, तो आप Google Play के लिए मैनेज किया गया कॉन्फ़िगरेशन वैल्यू सेट कर सकते हैं.

वर्क प्रोफ़ाइलों के लिए, अनुमति वाले इनपुट डिवाइसों की संख्या सीमित करना

जब वर्क प्रोफ़ाइलों के एडमिन, DevicePolicyManager.setPermittedInputMethods() को कॉल करते हैं, तो उपयोगकर्ताओं को पूरे डिवाइस के बजाय, सिर्फ़ अपनी वर्क प्रोफ़ाइल में अनुमति वाले इनपुट मेथड इस्तेमाल करने की पाबंदी होती है. इससे उपयोगकर्ताओं को अपने डिवाइस के निजी हिस्से पर, इनपुट मेथड पर पूरा कंट्रोल मिलता है.

वर्क प्रोफ़ाइलों को चुपचाप वाइप करना

DevicePolicyManager.wipeData() में, WIPE_SILENTLY फ़्लैग जोड़ा गया है. अगर यह फ़्लैग सेट है, तो वर्क प्रोफ़ाइल वाइप करने के बाद, उपयोगकर्ताओं को इसकी सूचना नहीं दी जाएगी wipeData()का इस्तेमाल करके.

पूरी तरह से मैनेज किए जा रहे डिवाइसों के लिए नई सुविधाएं

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

सिस्टम अपडेट को मैन्युअल तरीके से इंस्टॉल करना

Android 10 में, पूरी तरह से मैनेज किए जा रहे डिवाइसों के एडमिन, सिस्टम अपडेट फ़ाइल की मदद से सिस्टम अपडेट इंस्टॉल कर सकते हैं. सिस्टम अपडेट को मैन्युअल तरीके से इंस्टॉल करने की सुविधा से, आईटी एडमिन ये काम कर सकते हैं:

  • अपडेट को बड़े पैमाने पर इंस्टॉल करने से पहले, कुछ डिवाइसों पर उसकी जांच करना.
  • बैंडविथ की सीमा वाले नेटवर्क पर, डुप्लीकेट डाउनलोड से बचना.
  • अपडेट को अलग-अलग समय पर इंस्टॉल करना या डिवाइसों को सिर्फ़ तब अपडेट करना, जब उनका इस्तेमाल न किया जा रहा हो.

सबसे पहले, आईटी एडमिन, सिस्टम अपडेट को बाद में इंस्टॉल करने की नीति सेट करता है, ताकि ज़रूरत पड़ने पर, अपने-आप इंस्टॉल होने की सुविधा को रोका जा सके. इसके बाद, डिवाइस का डीपीसी, डिवाइस बनाने वाली कंपनी की सिस्टम अपडेट फ़ाइल के पाथ के साथ, installSystemUpdate() को कॉल करता है. InstallSystemUpdateCallback ऑब्जेक्ट पास करें, जिसका इस्तेमाल सिस्टम, डिवाइस के रीस्टार्ट होने से पहले होने वाली गड़बड़ियों की रिपोर्ट करने के लिए कर सकता है. अगर कोई गड़बड़ी होती है, तो सिस्टम, गड़बड़ी कोड के साथ onInstallUpdateError() को कॉल करता है.

डिवाइस के रीस्टार्ट होने के बाद, आपके डीपीसी को वर्शन एपीआई (जैसे, Build.FINGERPRINT) का इस्तेमाल करके, अपडेट के सफलतापूर्वक इंस्टॉल होने की पुष्टि करनी होगी. अगर अपडेट नहीं होता है, तो आईटी एडमिन को इसकी सूचना दें.

ईएपी वाई-फ़ाई प्रोविज़निंग

Android 10 में, डिवाइस प्रोविज़निंग के लिए इस्तेमाल किए जाने वाले क्यूआर कोड और एनएफ़सी डेटा में, ईएपी कॉन्फ़िगरेशन और क्रेडेंशियल शामिल हो सकते हैं. इनमें सर्टिफ़िकेट भी शामिल हैं. जब कोई व्यक्ति क्यूआर कोड स्कैन करता है या एनएफ़सी टैग पर टैप करता है, तो डिवाइस ईएपी का इस्तेमाल करके, स्थानीय वाई-फ़ाई नेटवर्क से अपने-आप पुष्टि करता है. साथ ही, मैन्युअल तरीके से कोई और इनपुट दिए बिना, प्रोविज़निंग की प्रोसेस शुरू कर देता है.

ईएपी का इस्तेमाल करके वाई-फ़ाई की पुष्टि करने के लिए, एक EXTRA_PROVISIONING_WIFI_SECURITY_TYPE एक्स्ट्रा जोड़ें जिसकी वैल्यू "EAP" हो. ईएपी की पुष्टि तय करने के लिए, अपने इंटेंट में ये प्रोविज़निंग एक्स्ट्रा जोड़े जा सकते हैं:

निजी डीएनएस की सुविधा

संगठन, टीएलएस पर डीएनएस (जिसे Android डिवाइसों पर निजी डीएनएस कहा जाता है) का इस्तेमाल करके, डीएनएस क्वेरी लीक होने से बचा सकते हैं. इनमें इंटरनल होस्टनेम की क्वेरी भी शामिल हैं. पूरी तरह से मैनेज किए जा रहे डिवाइसों के एडमिन कॉम्पोनेंट, डिवाइस की निजी डीएनएस सेटिंग को कंट्रोल कर सकते हैं. निजी डीएनएस मोड सेट करने के लिए, इन्हें कॉल करें:

  • setGlobalPrivateDnsModeOpportunistic() डिवाइस के लिए, ताकि सिस्टम, काम करने वाले नेम सर्वर का पता लगने पर, निजी डीएनएस का इस्तेमाल कर सके या
  • setGlobalPrivateDnsModeSpecifiedHost() आर्ग्युमेंट में, RFC7858 के साथ काम करने वाले नेम सर्वर का होस्टनेम तय करने के लिए, privateDnsHost.

जब आपका डीपीसी इनमें से किसी भी तरीके को कॉल करता है, तो कॉल के सफल होने पर, सिस्टम PRIVATE_DNS_SET_NO_ERROR दिखाता है. वरना, यह गड़बड़ी दिखाता है.

किसी डिवाइस पर सेट किए गए निजी डीएनएस मोड और होस्ट को वापस पाने के लिए, getGlobalPrivateDnsMode() और getGlobalPrivateDnsHost() को कॉल करें. उपयोगकर्ता पाबंदी जोड़कर, उपयोगकर्ताओं को निजी डीएनएस सेटिंग बदलने से रोका जा सकता है.DISALLOW_CONFIG_PRIVATE_DNS

वीपीएन लॉकडाउन मोड से छूट

वीपीएन लॉकडाउन मोड की मदद से, डीपीसी ऐसे किसी भी नेटवर्क ट्रैफ़िक को ब्लॉक कर सकता है जो वीपीएन का इस्तेमाल नहीं करता. पूरी तरह से मैनेज किए जा रहे डिवाइसों और वर्क प्रोफ़ाइलों के एडमिन, ऐप्लिकेशन को लॉकडाउन मोड से छूट दे सकते हैं. छूट वाले ऐप्लिकेशन, डिफ़ॉल्ट रूप से वीपीएन का इस्तेमाल करते हैं. हालांकि, वीपीएन उपलब्ध न होने पर, वे अपने-आप दूसरे नेटवर्क से कनेक्ट हो जाते हैं. छूट वाले ऐसे ऐप्लिकेशन जो साफ़ तौर पर वीपीएन का ऐक्सेस पाने से रोके गए हैं, सिर्फ़ दूसरे नेटवर्क का इस्तेमाल करेंगे.

किसी ऐप्लिकेशन को लॉकडाउन मोड से छूट देने के लिए, नए DevicePolicyManager तरीके setAlwaysOnVpnPackage() को कॉल करें. यह छूट वाले ऐप्लिकेशन के पैकेज की सूची स्वीकार करता है. डीपीसी जिन ऐप्लिकेशन पैकेज को जोड़ता है उन्हें, इस तरीके को कॉल किए जाने पर डिवाइस पर इंस्टॉल किया जाना चाहिए. किसी ऐप्लिकेशन को अनइंस्टॉल करके फिर से इंस्टॉल करने पर, उसे फिर से छूट देनी होगी. लॉकडाउन मोड से पहले छूट वाले ऐप्लिकेशन पाने के लिए, getAlwaysOnVpnLockdownWhitelist() को कॉल करें.

पूरी तरह से मैनेज किए जा रहे डिवाइसों और वर्क प्रोफ़ाइलों के एडमिन को लॉकडाउन मोड की स्थिति पाने में मदद करने के लिए, Android 10 में तरीका जोड़ा गया है.isAlwaysOnVpnLockdownEnabled()

डेलिगेशन के नए स्कोप

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

  • DELEGATION_NETWORK_LOGGING नेटवर्क पर की जाने वाली गतिविधि को लॉग करने की सुविधा डेलिगेट करने के लिए,
  • DELEGATION_CERT_SELECTION सर्टिफ़िकेट चुनने की सुविधा डेलिगेट करने के लिए,

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

  1. डेलिगेट किए गए ऐप्लिकेशन में, DelegatedAdminReceiver की सबक्लास जोड़ें.
  2. ऐप्लिकेशन मेनिफ़ेस्ट में <receiver> तय करें. साथ ही, हर कॉलबैक के लिए, इंटेंट-फ़िल्टर ऐक्शन जोड़ें. उदाहरण के लिए, ACTION_NETWORK_LOGS_AVAILABLE या ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. BIND_DEVICE_ADMIN अनुमति की मदद से, ब्रॉडकास्ट रिसीवर को सुरक्षित करें.

यहां दिए गए स्निपेट में, एक ऐसे डेलिगेट किए गए ऐप्लिकेशन का ऐप्लिकेशन मेनिफ़ेस्ट दिखाया गया है जो नेटवर्क लॉगिंग और सर्टिफ़िकेट चुनने, दोनों को हैंडल करता है:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

नेटवर्क पर की जाने वाली गतिविधि को लॉग करना

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

सिस्टम के बैच उपलब्ध कराने के बाद, नेटवर्क लॉग वापस पाने के लिए, डेलिगेट किए गए ऐप्लिकेशन को सबसे पहले DelegatedAdminReceiver की सबक्लास बनानी चाहिए. इसके बारे में पहले बताया जा चुका है. अपनी सबक्लास में, लॉग वापस पाना में दिए गए निर्देशों का पालन करके, onNetworkLogsAvailable() कॉलबैक लागू करें.

डेलिगेट किए गए ऐप्लिकेशन, इन DevicePolicyManager तरीकों को कॉल कर सकते हैं. इसके लिए, null आर्ग्युमेंट के लिए admin पास करें:

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

डेलिगेट किए गए ऐप्लिकेशन से, नेटवर्क पर की जाने वाली गतिविधि को लॉग करने की सुविधा की रिपोर्ट करने का तरीका जानने के लिए, डेवलपर की गाइड नेटवर्क पर की जाने वाली गतिविधि को लॉग करना पढ़ें.

सर्टिफ़िकेट चुनना

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

सर्टिफ़िकेट एलियास चुनने के लिए, डेलिगेट किए गए ऐप्लिकेशन को सबसे पहले DelegatedAdminReceiver की सबक्लास बनानी चाहिए. इसके बारे में पहले बताया जा चुका है. अपनी सबक्लास में, onChoosePrivateKeyAlias() कॉलबैक लागू करें. साथ ही, पसंदीदा सर्टिफ़िकेट के लिए एलियास वापस करें. इसके अलावा, उपयोगकर्ता को सर्टिफ़िकेट चुनने के लिए कहने के लिए, null वापस करें.

डिवाइस एडमिन की नीतियों का समर्थन नहीं होना या रुकना

Android 10, ऐप्लिकेशन और डीपीसी को डिवाइस एडमिन की पुरानी डिवाइस एडमिन नीतियां लागू करने से रोकता है. हमारा सुझाव है कि ग्राहक और पार्टनर, पूरी तरह से मैनेज किए जा रहे डिवाइसों या वर्क प्रोफ़ाइलों पर माइग्रेट करें. Android 10 को टारगेट करने वाले डिवाइस एडमिन की ओर से लागू किए जाने पर, इन नीतियों से SecurityException जनरेट होता है:

कुछ ऐप्लिकेशन, उपभोक्ता डिवाइस के एडमिन के तौर पर डिवाइस एडमिन की सुविधा का इस्तेमाल करते हैं. उदाहरण के लिए, खोए हुए डिवाइस को लॉक करना और उसका डेटा वाइप करना. इसके लिए, ये नीतियां अब भी उपलब्ध हैं:

इन बदलावों के बारे में ज़्यादा जानने के लिए, डिवाइस एडमिन की सुविधा का समर्थन नहीं होना या रुकना लेख पढ़ें.

ऐप्लिकेशन के लिए नई सुविधाएं

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

स्क्रीन लॉक की क्वालिटी की जांच

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

स्क्रीन लॉक की क्वालिटी की जांच करने के लिए:

सिस्टम की स्क्रीन लॉक सेटिंग लॉन्च करने के लिए, ACTION_SET_NEW_PASSWORD का इस्तेमाल करें. इसके साथ, EXTRA_PASSWORD_COMPLEXITY एक्स्ट्रा भी इस्तेमाल करें. इंटेंट एक्स्ट्रा में तय की गई जटिलता के मुताबिक न होने वाले विकल्प धुंधले दिखते हैं. उपयोगकर्ता, स्क्रीन लॉक के उपलब्ध विकल्पों में से चुन सकते हैं या स्क्रीन से बाहर निकल सकते हैं.

सबसे सही तरीका: सिस्टम की स्क्रीन लॉक सेटिंग वाला पेज लॉन्च करने से पहले, अपने ऐप्लिकेशन में एक मैसेज दिखाएं. जब आपका ऐप्लिकेशन फिर से शुरू हो, तो DevicePolicyManager.getPasswordComplexity() को फिर से कॉल करें. अगर अब भी ज़्यादा सुरक्षित स्क्रीन लॉक की ज़रूरत है, तो उपयोगकर्ताओं को बार-बार सुरक्षा सेटिंग अपडेट करने के लिए कहने के बजाय, ऐक्सेस को सीमित करें.

वीपीएन ऐप्लिकेशन में एचटीटीपी प्रॉक्सी की सुविधा

Android 10 में, वीपीएन ऐप्लिकेशन, अपने वीपीएन कनेक्शन के लिए एचटीटीपी प्रॉक्सी सेट कर सकते हैं. एचटीटीपी प्रॉक्सी जोड़ने के लिए, वीपीएन ऐप्लिकेशन को ProxyInfo इंस्टेंस को होस्ट और पोर्ट के साथ कॉन्फ़िगर करना होगा, इससे पहले कि वह VpnService.Builder.setHttpProxy() को कॉल करे. सिस्टम और कई नेटवर्किंग लाइब्रेरी, इस प्रॉक्सी सेटिंग का इस्तेमाल करती हैं. हालांकि, सिस्टम, ऐप्लिकेशन को एचटीटीपी अनुरोधों को प्रॉक्सी करने के लिए मजबूर नहीं करता.

एचटीटीपी प्रॉक्सी सेट करने का तरीका दिखाने वाला सैंपल कोड देखने के लिए, ToyVPN सैंपल ऐप्लिकेशन देखें.

वीपीएन सेवा के मोड

वीपीएन ऐप्लिकेशन यह पता लगा सकते हैं कि सेवा, हमेशा चालू रहने वाले वीपीएन की वजह से चल रही है या नहीं. साथ ही, यह भी पता लगा सकते हैं कि लॉकडाउन मोड चालू है या नहीं. Android 10 में जोड़े गए नए तरीकों से, अपने यूज़र इंटरफ़ेस (यूआई) को अडजस्ट करने में मदद मिल सकती है. उदाहरण के लिए, जब हमेशा चालू रहने वाला वीपीएन, आपकी सेवा के लाइफ़साइकल को कंट्रोल करता है, तो हो सकता है कि आपको डिसकनेक्ट बटन को बंद करना पड़े.

वीपीएन ऐप्लिकेशन, सेवा से कनेक्ट होने और स्थानीय इंटरफ़ेस सेट अप करने के बाद, VpnService के इन तरीकों को कॉल कर सकते हैं:

  • isAlwaysOn() यह पता लगाने के लिए कि सिस्टम ने हमेशा चालू रहने वाले वीपीएन की वजह से सेवा शुरू की है या नहीं,
  • यह पता लगाने के लिए कि सिस्टम, वीपीएन का इस्तेमाल न करने वाले कनेक्शन को ब्लॉक कर रहा है या नहीं, isLockdownEnabled()

आपकी सेवा के चालू रहने के दौरान, हमेशा चालू रहने की स्थिति में कोई बदलाव नहीं होता. हालांकि, लॉकडाउन मोड की स्थिति बदल सकती है.

कीचेन में किए गए सुधार

Android 10 में, KeyChain एपीआई से जुड़े कई सुधार किए गए हैं.

जब कोई ऐप्लिकेशन, KeyChain.choosePrivateKeyAlias() को कॉल करता है, तो Android 10 और उसके बाद वाले वर्शन वाले डिवाइस, उन सर्टिफ़िकेट की सूची को फ़िल्टर करते हैं जिन्हें उपयोगकर्ता चुन सकता है. यह फ़िल्टरिंग, कॉल में तय किए गए जारी करने वाली संस्थाओं और की एल्गोरिदम के आधार पर की जाती है.

उदाहरण के लिए, जब कोई टीएलएस सर्वर, टीएलएस हैंडशेक के हिस्से के तौर पर, सर्टिफ़िकेट अनुरोध मैसेज भेजता है और ब्राउज़र KeyChain.choosePrivateKeyAlias() को कॉल करता है, तो सर्टिफ़िकेट चुनने के लिए दिखने वाले प्रॉम्प्ट में सिर्फ़ वे विकल्प शामिल होते हैं जो जारी करने वाली संस्थाओं के पैरामीटर से मेल खाते हैं. अगर मेल खाने वाले कोई विकल्प उपलब्ध नहीं हैं या डिवाइस पर कोई सर्टिफ़िकेट इंस्टॉल नहीं है, तो उपयोगकर्ता को चुनने के लिए दिखने वाला प्रॉम्प्ट नहीं दिखेगा.

इसके अलावा, KeyChain को अब की या सीए सर्टिफ़िकेट इंपोर्ट करने से पहले, डिवाइस पर स्क्रीन लॉक की ज़रूरत नहीं होती.