इस गाइड में दी गई सुविधाओं से, सिक्योरिटी मैनेजमेंट से जुड़ी सुविधाओं के बारे में पता चलता है डिवाइस नीति कंट्रोलर (DPC) ऐप्लिकेशन में लागू करना होगा. यह दस्तावेज़ इसमें कोड के सैंपल होते हैं और Test DPC ऐप्लिकेशन का इस्तेमाल इस तरह भी किया जा सकता है यह Android की एंटरप्राइज़ सुविधाओं के लिए सैंपल कोड का सोर्स होता है.
DPC ऐप्लिकेशन, निजी डिवाइसों या डिवाइस के मालिक वाले मोड में प्रोफ़ाइल मालिक मोड में चल सकता है मोड चालू है. इस टेबल से पता चलता है कि कौनसी सुविधाएं उपलब्ध हैं जब DPC प्रोफ़ाइल मालिक मोड या डिवाइस मालिक मोड में चलता है:
ऐप्लिकेशन का ऐक्सेस बंद करना
उन संगठनों के लिए जो कर्मचारियों को गेम खेलने या देखने से रोकना चाहते हैं दिन के किसी खास समय के दौरान, Android डिवाइस पर YouTube इस्तेमाल करने पर या DPC कुछ समय के लिए ऐप्लिकेशन का ऐक्सेस बंद कर सकता है.
ऐप्लिकेशन का ऐक्सेस बंद करने के लिए, डिवाइस के मालिक या प्रोफ़ाइल के मालिक वाले मोड में चल रहा DPC
setPackagesSuspended()
को कॉन्फ़िगर करता है और फिर चुना गया ऐप्लिकेशन इस तरह काम करता है
यह बंद है (Google लॉन्चर ऐप्लिकेशन को धूसर कर देता है). जब कोई उपयोगकर्ता ऐप्लिकेशन पर टैप करता है,
तो उन्हें सिस्टम का एक डायलॉग दिखेगा, जिसमें बताया जाएगा कि ऐप्लिकेशन को निलंबित कर दिया गया है.
जब कोई ऐप्लिकेशन निलंबित होता है, तब वह पैकेज को दबा दिया गया है. निलंबित पैकेज खास जानकारी वाले पेज पर नहीं दिखते हैं वे डायलॉग नहीं दिखा सकते (इनमें टोस्ट और स्नैकबार शामिल हैं) और ऑडियो नहीं चला सकते या डिवाइस को वाइब्रेशन नहीं कर सकते.
लॉन्चर इस बात का पता लगा सकते हैं कि किसी ऐप्लिकेशन को निलंबित किया गया है या नहीं. इसके लिए,
isPackageSuspended()
तरीका. ऐप्लिकेशन को कॉन्फ़िगर करने का तरीका
निलंबन की स्थिति में, setPackagesSuspended
देखें.
अज्ञात सोर्स से ऐप्लिकेशन ब्लॉक करना
ऐसे ऐप्लिकेशन जिन्हें Google Play (या दूसरे भरोसेमंद ऐप स्टोर) से इंस्टॉल नहीं किया गया है जिसे अनजान सोर्स के ऐप्लिकेशन कहते हैं. डिवाइस और डेटा की सुरक्षा बढ़ सकती है जब लोग इन ऐप्लिकेशन को इंस्टॉल करते हैं.
किसी व्यक्ति को अज्ञात सोर्स से ऐप्लिकेशन इंस्टॉल करने से रोकने के लिए, इसके एडमिन कॉम्पोनेंट
पूरी तरह से प्रबंधित डिवाइस और वर्क प्रोफ़ाइल
DISALLOW_INSTALL_UNKNOWN_SOURCES
उपयोगकर्ता पर लगी पाबंदी.
वर्क-प्रोफ़ाइल डिवाइस-व्यापी प्रतिबंध
जब वर्क प्रोफ़ाइल का एडमिन DISALLOW_INSTALL_UNKNOWN_SOURCES
जोड़ता है,
यह पाबंदी सिर्फ़ वर्क प्रोफ़ाइल पर लागू होती है. हालांकि, किसी काम के एडमिन को
प्रोफ़ाइल पर पूरे डिवाइस के लिए पाबंदी लगाई जा सकती है. इसके लिए
Google Play के लिए, मैनेज किया जा रहा कॉन्फ़िगरेशन हो. पूरे डिवाइस पर यह पाबंदी है
Android 8.0 या इसके बाद वाले वर्शन में उपलब्ध हो, जब इंस्टॉल किया गया Google Play ऐप्लिकेशन
80812500 या इसके बाद वाला वर्शन होना चाहिए.
Google Play से ऐप्लिकेशन इंस्टॉल करने पर पाबंदी लगाने के लिए, यह तरीका अपनाएं:
- Google Play पैकेज के लिए, मैनेज किया जा रहा कॉन्फ़िगरेशन बंडल सेट करें
com.android.vending
. - बंडल में,
verify_apps:device_wide_unknown_source_block
कुंजी. ENSURE_VERIFY_APPS
उपयोगकर्ता प्रतिबंध जोड़ें.
यहां दिए गए उदाहरण में, यह पता लगाने का तरीका बताया गया है कि Google Play पर यह सुविधा काम करती है या नहीं
सेटिंग और वैल्यू को true
पर सेट करें:
Kotlin
internal val DEVICE_WIDE_UNKNOWN_SOURCES = "verify_apps:device_wide_unknown_source_block" internal val GOOGLE_PLAY_APK = "com.android.vending" // ... // Add the setting to Google Play's existing managed config. Supported in // Google Play version 80812500 or higher--older versions ignore unsupported // settings. val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager var existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK) val newConfig = Bundle(existingConfig) newConfig.putBoolean(DEVICE_WIDE_UNKNOWN_SOURCES, true) dpm.setApplicationRestrictions(adminName, GOOGLE_PLAY_APK, newConfig) // Make sure that Google Play Protect verifies apps. dpm.addUserRestriction(adminName, UserManager.ENSURE_VERIFY_APPS) dpm.addUserRestriction(adminName, UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)
Java
static final String DEVICE_WIDE_UNKNOWN_SOURCES = "verify_apps:device_wide_unknown_source_block"; static final String GOOGLE_PLAY_APK = "com.android.vending"; // ... // Add the setting to Google Play's existing managed config. Supported in // Google Play version 80812500 or higher--older versions ignore unsupported // settings. DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); Bundle existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK); Bundle newConfig = new Bundle(existingConfig); newConfig.putBoolean(DEVICE_WIDE_UNKNOWN_SOURCES, true); dpm.setApplicationRestrictions(adminName, GOOGLE_PLAY_APK, newConfig); // Make sure that Google Play Protect verifies apps. dpm.addUserRestriction(adminName, UserManager.ENSURE_VERIFY_APPS); dpm.addUserRestriction(adminName, UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES);
सिस्टम की सेटिंग में यूज़र इंटरफ़ेस ऐक्टिव रहता है, लेकिन सिस्टम ब्लॉक हो जाता है ऐप इंस्टॉलेशन. इससे आने वाले समय में इंस्टॉल किए जाने वाले विज्ञापनों पर असर पड़ेगा—पहले इंस्टॉल किए गए ऐप्लिकेशन डिवाइस पर मौजूद रहते हैं. डिवाइस का इस्तेमाल करने वाले लोग, ऐप्लिकेशन इंस्टॉल करना जारी रख सकते हैं निजी प्रोफ़ाइल में जोड़ने के लिए, Android डीबग ब्रिज (adb) का इस्तेमाल करें.
अज्ञात सोर्स के बारे में ज़्यादा जानने के लिए, वैकल्पिक डिस्ट्रिब्यूशन को पढ़ें विकल्प.
Google Play में खातों पर पाबंदी लगाना
कभी-कभी हो सकता है कि कोई संगठन, लोगों को निजी Google खाते (उदाहरण के लिए, Gmail में मेल पढ़ने के लिए) लेकिन व्यक्तिगत खाते का उपयोग करके ऐप्लिकेशन इंस्टॉल किए जा सकते हैं. आपका DPC उन खातों की सूची सेट कर सकता है जिनमें लोग इस्तेमाल कर सकते हैं Google Play से डाउनलोड करें.
पूरी तरह से मैनेज किए जा रहे डिवाइसों या वर्क प्रोफ़ाइल के एडमिन कॉम्पोनेंट, खाते के तौर पर, Google Play के लिए मैनेज किए जा रहे कॉन्फ़िगरेशन को सेट करें. खाता पाबंदी तब उपलब्ध होगी, जब इंस्टॉल किए गए Google Play ऐप्लिकेशन का वर्शन 80970100 हो या उससे ज़्यादा.
Google Play में खातों को सीमित करने के लिए, यह तरीका अपनाएं:
- Google Play पैकेज के लिए, मैनेज किया जा रहा कॉन्फ़िगरेशन बंडल सेट करें
com.android.vending
. - बंडल में, कॉमा लगाकर अलग किए गए ईमेल पतों को
allowed_accounts
कुंजी.
नीचे दिए गए उदाहरण में, खातों को सीमित करने का तरीका बताया गया है:
Kotlin
internal val ALLOWED_ACCOUNTS = "allowed_accounts" internal val GOOGLE_PLAY_APK = "com.android.vending" // ... // Limit Google Play to one work and one personal account. Use // a comma-separated list of account email addresses (usernames). val googleAccounts = "ali@gmail.com,ali.connors@example.com" // Supported in Google Play version 80970100 or higher. val existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK) val newConfig = Bundle(existingConfig) newConfig.putString(ALLOWED_ACCOUNTS, googleAccounts) dpm.setApplicationRestrictions(adminName, GOOGLE_PLAY_APK, newConfig)
Java
static final String ALLOWED_ACCOUNTS = "allowed_accounts"; static final String GOOGLE_PLAY_APK = "com.android.vending"; // ... // Limit Google Play to one work and one personal account. Use // a comma-separated list of account email addresses (usernames). String googleAccounts = "ali@gmail.com,ali.connors@example.com"; // Supported in Google Play version 80970100 or higher. Bundle existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK); Bundle newConfig = new Bundle(existingConfig); newConfig.putString(ALLOWED_ACCOUNTS, googleAccounts); dpm.setApplicationRestrictions(adminName, GOOGLE_PLAY_APK, newConfig);
Google Play को सिर्फ़ काम से जुड़े खाते तक सीमित करने के लिए, allowed_accounts
को
एक बार मैनेज किया जा सकता है. अगर आप
खाली स्ट्रिंग, लोगों को Google Play में किसी भी खाते का इस्तेमाल करने से रोकती है.
एंटरप्राइज़ फ़ैक्ट्री रीसेट करने से जुड़ी सुरक्षा चालू करें
एंटरप्राइज़ फ़ैक्ट्री रीसेट करने से जुड़ी सुरक्षा का इस्तेमाल करके, संगठन यह तय कर सकते हैं कि Google खाते, ऐसे डिवाइस का प्रावधान कर सकते हैं जिसे फ़ैक्ट्री रीसेट किया गया हो.
उपभोक्ता को फ़ैक्ट्री रीसेट करने से मिलने वाली सुरक्षा सुविधा को, डिवाइस को चोरी होने से बचाने के लिए बनाया गया है. इस तारीख से पहले बिना अनुमति के फ़ैक्ट्री रीसेट करने के बाद, किसी को भी डिवाइस का प्रावधान करने की अनुमति देना (जैसे इस्तेमाल करने के लिए करते हैं, तो सेटअप विज़र्ड में उपयोगकर्ता को किसी ऐसे Google खाते जो पहले डिवाइस की निजी प्रोफ़ाइल से जुड़े थे.
एंटरप्राइज़ एनवायरमेंट में, फ़ैक्ट्री रीसेट करना डिवाइस को मैनेज करने के लिए एक अहम टूल होता है किसी कर्मचारी के संगठन छोड़ने पर, कर्मचारी के डिवाइस. हालांकि, अगर संगठन को किसी कर्मचारी के खाते के क्रेडेंशियल की जानकारी नहीं है. इसलिए, इसे फ़ैक्ट्री रीसेट कर दिया गया है सुरक्षा देने वाली कंपनी, एक डिवाइस को दूसरे डिवाइस से कनेक्ट करने में संगठन की क्षमता को रोक सकती है कर्मचारी.
फ़ैक्ट्री रीसेट करने के बाद, प्रॉविज़निंग को कंट्रोल करना
डिवाइस के मालिक वाले मोड में चलते समय, DPC इनका इस्तेमाल कर सकता है
setFactoryResetProtectionPolicy()
का इस्तेमाल करके यह कंट्रोल किया जा सकता है कि कौनसे खाते
फ़ैक् टरी रीसेट के बाद डिवाइस का प्रावधान करने के लिए अधिकृत किया गया है. अगर यह कॉन्फ़िगरेशन
null
पर सेट है या ऐसी खाली सूची पर सेट है, जिसके पास प्रावधान करने की अनुमति है
फ़ैक्ट्री रीसेट करने के बाद मौजूद डिवाइस, वे खाते होते हैं जो उस डिवाइस की निजी प्रोफ़ाइल पर मौजूद होते हैं
डिवाइस.
DPC इन खातों को हमेशा के लिए पूरी तरह से प्रबंधित करके कॉन्फ़िगर कर सकता है डिवाइस.
- आईटी एडमिन, People API के
people.get
तरीके का इस्तेमाल कर सकता है खास मानme
के साथ. यह इसके लिएuserId
को वापस लाता है: खाते से लॉग इन किया है.userID
कोresourceName
कुंजी में वापस किया जाता है पूर्णांक स्ट्रिंग के रूप में फ़ॉर्मpeople/[userId]
. नए बनाए गए खाते यह कर सकते थे 72 घंटों तक फ़ैक्ट्री रीसेट करने के लिए उपलब्ध न हो. - एक या एक से ज़्यादा आईटी एडमिन को इस डिवाइस को अनलॉक करने की अनुमति बाद में भी दी जा सकती है
फ़ैक्ट्री रीसेट किया जाता है. इनमें से हर आईटी एडमिन को अपने Google खाते में लॉग इन करने के लिए कहें और
साथ ही, पहले चरण का पालन करें और उनके
userId
को आपके साथ शेयर करें, ताकि आप इन्हें जोड़ सकेंuserIds
को अगले चरण में सूची में जोड़ें. - DPC इनका इस्तेमाल करके, ऐप्लिकेशन पर पाबंदी लगाता है
userId
की सूची सेट करने के लिएsetFactoryResetProtectionPolicy()
करें, जो फ़ैक्ट्री रीसेट करने के लिए डिवाइस का प्रावधान किया जा सके. - DPC उन खातों को सक्षम करता है जो किसी फैक्ट्री के बाद डिवाइस का प्रावधान कर सकते हैं
ब्रॉडकास्ट भेजकर रीसेट किया जा सकता है
com.google.android.gms.auth.FRP_CONFIG_CHANGED
का मकसद को बैकग्राउंड में चलने की पाबंदियों की वजह से हटाए जाने से रोका जा सकता है.
Kotlin
const val ACTION_FRP_CONFIG_CHANGED = "com.google.android.gms.auth.FRP_CONFIG_CHANGED" const val GMSCORE_PACKAGE = "com.google.android.gms" // ... // List of userId that can provision a factory reset device. // You can use the value returned calling people/me endpoint. val accountIds = listOf("000000000000000000000") dpm.setFactoryResetProtectionPolicy( adminName, FactoryResetProtectionPolicy.Builder() .setFactoryResetProtectionAccounts(accountIds) .setFactoryResetProtectionEnabled(true) .build() ) val frpChangedIntent = Intent(ACTION_FRP_CONFIG_CHANGED) frpChangedIntent.setPackage(GMSCORE_PACKAGE) context.sendBroadcast(frpChangedIntent)
Java
static final String ACTION_FRP_CONFIG_CHANGED = "com.google.android.gms.auth.FRP_CONFIG_CHANGED"; static final String GMSCORE_PACKAGE = "com.google.android.gms"; // ... // List of userId that can provision a factory reset device. // You can use the value returned calling people/me endpoint. List<String> accountIds = new ArrayList<String>(); accountIds.add("000000000000000000000"); dpm.setFactoryResetProtectionPolicy( adminName, new FactoryResetProtectionPolicy.Builder() .setFactoryResetProtectionAccounts(accountIds) .setFactoryResetProtectionEnabled(true) .build()); Intent frpChangedIntent = new Intent(ACTION_FRP_CONFIG_CHANGED); frpChangedIntent.setPackage(GMSCORE_PACKAGE); context.sendBroadcast(frpChangedIntent);
लेगसी
उन डिवाइसों के लिए जो setFactoryResetProtectionPolicy()
का इस्तेमाल नहीं कर सकते, इनके साथ पेश किए गए
एपीआई लेवल 30 है, तो आपका DPC इन चीज़ों को जोड़ने के लिए setApplicationRestrictions
का इस्तेमाल कर सकता है
चुने गए खातों को मैनेज किए जा रहे factoryResetProtectionAdmin
कॉन्फ़िगरेशन में इस्तेमाल किया गया
com.google.android.gms
पैकेज के लिए.
Kotlin
const val GOOGLE_PLAY_APK = "com.android.vending" const val FACTORY_RESET_PROTECTION_ADMIN = "factoryResetProtectionAdmin" const val DISABLE_FACTORY_RESET_PROTECTION_ADMIN = "disableFactoryResetProtectionAdmin" const val GMSCORE_PACKAGE = "com.google.android.gms" // ... val existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK) val newConfig = Bundle(existingConfig) newConfig.putBoolean(DISABLE_FACTORY_RESET_PROTECTION_ADMIN, false) newConfig.putString(FACTORY_RESET_PROTECTION_ADMIN, googleAccounts) dpm.setApplicationRestrictions(adminName, GOOGLE_PLAY_APK, newConfig) val frpChangedIntent = Intent(ACTION_FRP_CONFIG_CHANGED) frpChangedIntent.setPackage(GMSCORE_PACKAGE) context.sendBroadcast(frpChangedIntent)
Java
static final String GOOGLE_PLAY_APK = "com.android.vending"; static final String FACTORY_RESET_PROTECTION_ADMIN = "factoryResetProtectionAdmin"; static final String DISABLE_FACTORY_RESET_PROTECTION_ADMIN = "disableFactoryResetProtectionAdmin"; static final String GMSCORE_PACKAGE = "com.google.android.gms"; // ... Bundle existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK); Bundle newConfig = new Bundle(existingConfig); newConfig.putBoolean(DISABLE_FACTORY_RESET_PROTECTION_ADMIN, false); newConfig.putStringArray(FACTORY_RESET_PROTECTION_ADMIN, accountIds.toArray(new String[accountIds.size()])); dpm.setApplicationRestrictions(adminName, GOOGLE_PLAY_APK, newConfig); Intent frpChangedIntent = new Intent(ACTION_FRP_CONFIG_CHANGED); frpChangedIntent.setPackage(GMSCORE_PACKAGE); context.sendBroadcast(frpChangedIntent);
एंटरप्राइज़ फ़ैक्ट्री रीसेट करने से जुड़ी सुरक्षा बंद करें
फ़ैक्ट्री रीसेट करने से जुड़ी सुरक्षा बंद करने के लिए, DPC इन चीज़ों का इस्तेमाल कर सकता है
setFactoryResetProtectionPolicy()
मान null
को पास किया जा रहा है.
Kotlin
const val ACTION_FRP_CONFIG_CHANGED = "com.google.android.gms.auth.FRP_CONFIG_CHANGED" const val GMSCORE_PACKAGE = "com.google.android.gms" // ... dpm.setFactoryResetProtectionPolicy(adminName, null) val frpChangedIntent = Intent(ACTION_FRP_CONFIG_CHANGED) frpChangedIntent.setPackage(GMSCORE_PACKAGE) context.sendBroadcast(frpChangedIntent)
Java
static final String ACTION_FRP_CONFIG_CHANGED = "com.google.android.gms.auth.FRP_CONFIG_CHANGED"; static final String GMSCORE_PACKAGE = "com.google.android.gms"; // ... dpm.setFactoryResetProtectionPolicy(adminName, null); Intent frpChangedIntent = new Intent(ACTION_FRP_CONFIG_CHANGED); frpChangedIntent.setPackage(GMSCORE_PACKAGE); context.sendBroadcast(frpChangedIntent);
लेगसी
उन डिवाइसों के लिए जो setFactoryResetProtectionPolicy()
का इस्तेमाल नहीं कर सकते, इनके साथ पेश किए गए
एपीआई लेवल 30, कुंजी सेट करने के लिए आपका DPC setApplicationRestrictions
का इस्तेमाल कर सकता है
मैनेज किए जा रहे disableFactoryResetProtectionAdmin
में true
की वैल्यू
com.google.android.gms
पैकेज के लिए कॉन्फ़िगरेशन.
Kotlin
const val GOOGLE_PLAY_APK = "com.android.vending" const val FACTORY_RESET_PROTECTION_ADMIN = "factoryResetProtectionAdmin" const val DISABLE_FACTORY_RESET_PROTECTION_ADMIN = "disableFactoryResetProtectionAdmin" const val GMSCORE_PACKAGE = "com.google.android.gms" // ... val existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK) val newConfig = Bundle(existingConfig) newConfig.putBoolean(DISABLE_FACTORY_RESET_PROTECTION_ADMIN, true) dpm.setApplicationRestrictions( adminName, GOOGLE_PLAY_SERVICES_PACKAGE, restrictions ) val frpChangedIntent = Intent(ACTION_FRP_CONFIG_CHANGED) frpChangedIntent.setPackage(GMSCORE_PACKAGE) context.sendBroadcast(frpChangedIntent)
Java
static final String GOOGLE_PLAY_APK = "com.android.vending"; static final String FACTORY_RESET_PROTECTION_ADMIN = "factoryResetProtectionAdmin"; static final String DISABLE_FACTORY_RESET_PROTECTION_ADMIN = "disableFactoryResetProtectionAdmin"; static final String GMSCORE_PACKAGE = "com.google.android.gms"; // ... Bundle existingConfig = dpm.getApplicationRestrictions(adminName, GOOGLE_PLAY_APK); Bundle newConfig = new Bundle(existingConfig); newConfig.putBoolean(DISABLE_FACTORY_RESET_PROTECTION_ADMIN, true); dpm.setApplicationRestrictions( adminName, GOOGLE_PLAY_SERVICES_PACKAGE, restrictions); Intent frpChangedIntent = new Intent(ACTION_FRP_CONFIG_CHANGED); frpChangedIntent.setPackage(GMSCORE_PACKAGE); context.sendBroadcast(frpChangedIntent);
एंटरप्राइज़ प्रोसेस लॉग और रिमोट गड़बड़ी की रिपोर्ट मॉनिटर करें
आपके ईएमएम कंसोल में, एडमिन एंटरप्राइज़ का इस्तेमाल करके पूरी तरह से मैनेज किए जा रहे डिवाइसों की निगरानी कर सकता है और रिमोट गड़बड़ी की रिपोर्ट भी देखी जा सकती हैं.
एंटरप्राइज़ डिवाइस की गतिविधि लॉग करें
डिवाइस के मालिक वाले मोड में चल रहा DPC दूर से ही संदिग्ध गतिविधि की पहचान कर सकता है ऐप्लिकेशन लॉन्च, Android डीबग ब्रिज (adb) सहित डिवाइस की गतिविधि ट्रैक करना गतिविधि, और स्क्रीन अनलॉक. प्रोसेस लॉग के लिए, उपयोगकर्ता की सहमति की ज़रूरत नहीं होती.
लॉगिंग को चालू या बंद करने के लिए, DPC setSecurityLoggingEnabled()
को कॉल करता है.
लॉग का नया बैच उपलब्ध होने पर, DeviceAdminReceiver
को
onSecurityLogsAvailable()
कॉलबैक. लॉग पुनर्प्राप्त करने के लिए (इसके बाद
कॉलबैक), DPC से retrieveSecurityLogs()
कॉल करता है.
सुरक्षा की जानकारी पाने के लिए, डीपीसी retrievePreRebootSecurityLogs()
पर भी कॉल कर सकते हैं
लॉग को पिछले रीबूट साइकल में जनरेट किया गया था. यह दो URL के बीच का
डिवाइस को फिर से चालू किया जाएगा और उसके बाद डिवाइस को फिर से चालू किया जाएगा. काम नहीं करने वाले डिवाइस
retrieveSecurityLogs()
, null
दिखाता है. अगर आपका ऐप्लिकेशन दोनों का इस्तेमाल करके लॉग फिर से हासिल करता है
retrievePreRebootSecurityLogs()
और retrieveSecurityLogs()
के लिए, आपको ये काम करने होंगे
डुप्लीकेट एंट्री की जांच करें.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
ध्यान दें: यह सुविधा एक साथ पूरी तरह से मैनेज किए जा रहे डिवाइसों पर ही गतिविधि लॉग करती है
उपयोगकर्ता या सहयोगी उपयोगकर्ताओं की सूची में शामिल हैं. यह सुविधा इस पर काम नहीं करती है
क्योंकि यह पूरे डिवाइस पर की गई गतिविधियों को लॉग करता है.
यह सेटिंग, सुरक्षा से जुड़े इवेंट के बाद ऑडिटिंग में काम की हो सकती है, क्योंकि यह इस तरह की कार्रवाइयां की जा सकती हैं:
- हर बार ऐप्लिकेशन को नए सिरे से शुरू करने पर. इससे यह पता लगाने में मदद मिलती है कि ऐसा मैलवेयर जो मैलवेयर के हमले का शिकार हो चुके किसी ऐप्लिकेशन से शुरू होता है.
- डिवाइस को अनलॉक करने की असफल कोशिशें. इससे यह पता लगाया जा सकता है कि कम समय में अनलॉक करने की कई असफल कोशिशें की गईं.
- उपयोगकर्ता के कनेक्ट होने पर, नुकसान पहुंचा सकने वाले adb निर्देश डिवाइस को यूएसबी केबल का इस्तेमाल करके कंप्यूटर से कनेक्ट करें.
लॉग पढ़ने का तरीका जानने के लिए, SecurityLog
देखें.
जब आप विकास और परीक्षण कर रहे होते हैं, तो आप सिस्टम को आपके DPC के लिए उपलब्ध मौजूदा सुरक्षा लॉग—आपको पूरे डेटा के लिए इंतज़ार करने की ज़रूरत नहीं है बैच. Android 9.0 (एपीआई लेवल 28) या उसके बाद के वर्शन में, ये काम करें अपने टर्मिनल में Android डीबग ब्रिज (adb) निर्देश:
adb shell dpm force-security-logs
सिस्टम यह तय करता है कि टूल का इस्तेमाल कितनी बार किया जा सकता है और
टर्मिनल आउटपुट में जान-बूझकर धीमा पड़ रहा है. अगर लॉग उपलब्ध हैं, तो आपका
DPC को onSecurityLogsAvailable()
कॉलबैक मिलता है.
दूर से ही गड़बड़ी की रिपोर्ट का अनुरोध करें
डिवाइस के मालिक वाले मोड में चल रहा डीपीसी, किसी दूसरी जगह से उपयोगकर्ता के लिए गड़बड़ी की रिपोर्ट का अनुरोध कर सकता है सिर्फ़ एक उपयोगकर्ता या अफ़िलिएट उपयोगकर्ता वाले डिवाइसों पर. गड़बड़ी की रिपोर्ट कैप्चर की गई गड़बड़ी की रिपोर्ट का अनुरोध किए जाने के ठीक समय पर डिवाइस पर की गई गतिविधि. हालांकि, यह भी हो सकता है कि इसमें पिछले कुछ घंटों की गतिविधि शामिल होती है. यह इस बात पर निर्भर करता है कि लॉगकैट कितनी बार बफ़र रीफ़्रेश होता है.
किसी दूसरी जगह से गड़बड़ी की रिपोर्ट का अनुरोध करने के लिए, DPC requestBugreport()
को कॉल करता है:
- अगर कोई उपयोगकर्ता गड़बड़ी की रिपोर्ट शेयर करना स्वीकार करता है, तो डीपीसी को गड़बड़ी की सूचना मिलती है
इसका इस्तेमाल करके रिपोर्ट करें
onBugreportShared()
. - अगर कोई उपयोगकर्ता गड़बड़ी की रिपोर्ट शेयर करने से इनकार करता है, तो डीपीसी को
इसका इस्तेमाल करके अनुरोध अस्वीकार किया गया
onBugreportSharingDeclined()
. - अगर गड़बड़ी की रिपोर्ट काम नहीं करती, तो DPC को
onBugreportFailed()
के साथBUGREPORT_FAILURE_FAILED_COMPLETING
याBUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE
.
क्लाइंट प्रमाणपत्र का ऐक्सेस दें और ऐक्सेस हटाएं
अगर प्रोफ़ाइल के मालिक या डिवाइस के मालिक मोड में चल रहा DPC किसी तीसरे पक्ष के ऐप्लिकेशन को अनुमति देता है
सर्टिफ़िकेट मैनेज करने की अनुमति नहीं है, तो ऐप्लिकेशन खुद को
के पास ऐसे सर्टिफ़िकेट होते हैं जिन्हें उपयोगकर्ता की अनुमति के बिना इंस्टॉल किया जाता है. इंस्टॉल करने के लिए
इसके लिए, installKeyPair()
का इस्तेमाल करें.
कौनसे पैरामीटर कॉन्फ़िगर करने हैं, यह जानने के लिए installKeyPair()
देखें. यह सुविधा
सर्टिफ़िकेट मैनेज करने के लिए, मौजूदा एपीआई के साथ काम करता है.
डिप्लॉयमेंट की स्थिति
installKeyPair()
तरीके के बिना:
- उपयोगकर्ताओं को हर बार सर्टिफ़िकेट के नाम पर और अनुमति दें पर टैप करना होगा तो वे किसी सर्टिफ़िकेट का ऐक्सेस देना चाहते हैं.
- कोई सर्टिफ़िकेट इंस्टॉल करते समय, उपयोगकर्ताओं को एक प्रॉम्प्ट दिखता है. इसलिए, उन्हें प्रमाणपत्र.
installKeyPair()
तरीके का इस्तेमाल करके:
- उपयोगकर्ताओं को हर बार अनुमति दें पर टैप करने की ज़रूरत नहीं है प्रमाणपत्र.
- उपयोगकर्ता, सर्टिफ़िकेट का नाम नहीं बदल सकते.
- एडमिन के पास इस बात का ज़्यादा कंट्रोल होता है कि वे वे ऐप्लिकेशन जिनके पास किसी खास सर्टिफ़िकेट का ऐक्सेस नहीं होना चाहिए.
कोई क्लाइंट प्रमाणपत्र निकालें
क्लाइंट सर्टिफ़िकेट का ऐक्सेस देने के बाद, क्लाइंट को रिमोट तरीके से हटाने के लिए
installKeyPair()
के ज़रिए इंस्टॉल किए गए सर्टिफ़िकेट, कॉल करें
removeKeyPair()
.
डिवाइस मालिक मोड या प्रोफ़ाइल मालिक मोड में चलने वाला या ऐक्सेस दिया गया DPC
सर्टिफ़िकेट इंस्टॉल करने वाला व्यक्ति, removeKeyPair()
को कॉल कर सकता है. इससे
प्रमाणपत्र और निजी कुंजी का जोड़ा, दिए गए निजी कुंजी उपनाम के अंतर्गत इंस्टॉल किया गया है.
डिप्लॉयमेंट की स्थिति
अगर कोई संगठन क्लाइंट के ज़्यादा सुरक्षित रूप में माइग्रेट कर रहा है, तो इस सुविधा का इस्तेमाल करें प्रमाणपत्र. अगर कोई एडमिन नया सर्टिफ़िकेट और उसका डिस्ट्रिब्यूशन रोल आउट करता है इसमें बहुत समय लगता है, तो एडमिन सर्टिफ़िकेट, माइग्रेशन पूरा होने के बाद.
सुरक्षित पासकोड रीसेट किया गया
आपका DPC किसी उपयोगकर्ता का पासवर्ड रीसेट कर सकता है, इसके लिए वह
पहले से रजिस्टर किया गया सुरक्षित टोकन. डिवाइस के मालिक और प्रोफ़ाइल के मालिक, सुरक्षित तरीके से कॉल कर सकते हैं
डिवाइस और वर्क प्रोफ़ाइल का पासवर्ड बदलने के लिए पासकोड रीसेट करने वाला एपीआई
क्रम से. सुरक्षित पासकोड रीसेट resetPassword()
को
नीचे दिए गए सुधार लागू होंगे:
- उपयोगकर्ता के डिवाइस या प्रोफ़ाइल को अनलॉक करने से पहले, आपका DPC पासवर्ड रीसेट कर सकता है फिर से चालू करने के बाद, फ़ाइल पर आधारित एन्क्रिप्शन हो.
- Android कीस्टोर में उपयोगकर्ता की पुष्टि करने वाली कुंजियां बनी रहती हैं पासवर्ड रीसेट करने के बाद.
अगर आपका डीपीसी बिल्ड Android 8.0 (एपीआई) को टारगेट करता है, तो आपको सुरक्षित पासवर्ड रीसेट करने की सुविधा का इस्तेमाल करना चाहिए
लेवल 26) या उससे ज़्यादा है. resetPassword()
को कॉल करने पर
Android 8.0 या उसके बाद के वर्शन को टारगेट करने वाले DPC में SecurityException
है, इसलिए आपको
आपको अपना DPC अपडेट करना होगा.
टोकन सेट और चालू करें
पासवर्ड रीसेट करने से पहले, आपके DPC को एक टोकन सेट और चालू करना होगा. क्योंकि ऐसा हो सकता है कि आपका DPC सीधे टोकन का इस्तेमाल न कर पाए, तो आईटी एडमिन को उसका इस्तेमाल करने की ज़रूरत पड़ सकती है.
पासवर्ड रीसेट टोकन, क्रिप्टोग्राफ़िक तौर पर मज़बूत रैंडम वैल्यू है और इसे कम से कम 32 बाइट होना चाहिए. हर डिवाइस और प्रोफ़ाइल के लिए एक टोकन बनाएं—ऐसा न करें जनरेट किए गए टोकन का दोबारा इस्तेमाल या शेयर नहीं किया जा सकता.
हमारा सुझाव है कि आप टोकन या एन्क्रिप्ट (सुरक्षित) किए गए टोकन को डिक्रिप्ट करने के तरीके को सर्वर. अगर टोकन को एन्क्रिप्ट किए गए स्टोरेज में स्थानीय तौर पर सेव किया जाता है, तो आपके DPC पासवर्ड को तब तक रीसेट नहीं कर सकता, जब तक उपयोगकर्ता डिवाइस या प्रोफ़ाइल को अनलॉक नहीं करता. अगर आपको टोकन को डिवाइस की एन्क्रिप्ट की गई मेमोरी में स्थानीय तौर पर सेव किया जाता है. हालांकि, इसके बाद यह स्टोरेज हैक हो जाता है. कोई हमलावर किसी वर्क प्रोफ़ाइल या उपयोगकर्ता.
आपके पास डीपीसी में नया टोकन जनरेट करने या किसी सर्वर से टोकन फ़ेच करने का विकल्प होता है. कॉन्टेंट बनाने नीचे दिया गया उदाहरण दिखाता है कि DPC खुद टोकन जनरेट करता है और उसे सर्वर:
Kotlin
val token = ByteArray(32) // Generate a new token val random = SecureRandom() random.nextBytes(token) // Set the token to use at a later date val success: Boolean success = dpm.setResetPasswordToken(DeviceAdminReceiver.getComponentName(context), token) // Activate the token and update success variable... // Store the token on a server if (success) { sendTokenToServer(token) }
Java
byte token[] = new byte[32]; // Minimum size token accepted // Generate a new token SecureRandom random = new SecureRandom(); random.nextBytes(token); // Set the token to use at a later date boolean success; success = dpm.setResetPasswordToken(DeviceAdminReceiver.getComponentName(getContext()), token); // Activate the token and update success variable ... // Store the token on a server if (success) { sendTokenToServer(token); }
ज़्यादातर मामलों में, आपके DPC को किसी टोकन को सेट करने के बाद ही उसे चालू करना पड़ता है. हालांकि, जब
अगर किसी उपयोगकर्ता के पास लॉक स्क्रीन पासवर्ड नहीं है, तो सिस्टम किसी टोकन को चालू करता है
सीधे. किसी टोकन को चालू करने के लिए, उपयोगकर्ता से उनके क्रेडेंशियल की पुष्टि करने के लिए कहें.
आपका DPC KeyguardManager
तरीके को कॉल कर सकता है
createConfirmDeviceCredentialIntent()
, ताकि Intent
को शुरू किया जा सके
पुष्टि करने के लिए. यूज़र इंटरफ़ेस में डिवाइस इस्तेमाल करने वाले को बताएं कि
उनसे पहचान की पुष्टि करने के लिए कह रहा है. नीचे दिया गया स्निपेट दिखाता है कि आप
टोकन अपलोड करें:
Kotlin
// In your DPC, you'll need to localize the user prompt val ACTIVATE_TOKEN_PROMPT = "Use your credentials to enable remote password reset" val ACTIVATE_TOKEN_REQUEST = 1 // Create or fetch a token and set it in setResetPasswordToken() ... val keyguardManager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager val confirmIntent = keyguardManager.createConfirmDeviceCredentialIntent(null, ACTIVATE_TOKEN_PROMPT) if (confirmIntent != null) { startActivityForResult(confirmIntent, ACTIVATE_TOKEN_REQUEST) // Check your onActivityResult() callback for RESULT_OK } else { // Null means the user doesn't have a lock screen so the token is already active. // Call isResetPasswordTokenActive() if you need to confirm }
Java
// In your DPC, you'll need to localize the user prompt static final String ACTIVATE_TOKEN_PROMPT = "Use your credentials to enable remote password reset"; static final int ACTIVATE_TOKEN_REQUEST = 1; // Create or fetch a token and set it in setResetPasswordToken() ... KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); Intent confirmIntent = keyguardManager.createConfirmDeviceCredentialIntent( null, ACTIVATE_TOKEN_PROMPT); if (confirmIntent != null) { startActivityForResult(confirmIntent, ACTIVATE_TOKEN_REQUEST); // Check your onActivityResult() callback for RESULT_OK } else { // Null means the user doesn't have a lock screen so the token is already active. // Call isResetPasswordTokenActive() if you need to confirm }
डिवाइस फिर से चालू होने से पहले, आपको अपने DPC सेट वाले टोकन को चालू करना होगा. Android पर मेमोरी में एक चालू टोकन सेव नहीं करता है और टोकन को डिवाइस को फिर से चालू करें. अगर उपयोगकर्ता, टोकन को चालू करने से पहले डिवाइस को फिर से चालू करता है, तो आपका डीपीसी उस टोकन को फिर से सेट करें या नया टोकन जनरेट करें.
आपका डीपीसी कॉल करके यह पुष्टि कर सकता है कि टोकन चालू है या नहीं
isResetPasswordTokenActive()
है और नतीजे की जांच की जा रही है true
.
आपका DPC टोकन सेट करने और उसे चालू करने के बाद, DPC तब तक मान्य रहता है, जब तक कि आपका DPC किसी टोकन को नहीं नहीं मिटाता या टोकन को बदल देता है (या डिवाइस को फ़ैक्ट्री रीसेट किया गया है). टोकन इनसे अलग है दिया जाता है और उपयोगकर्ता द्वारा पासवर्ड बदलने या साफ़ करने के कारण प्रभावित नहीं होता है.
टोकन मिटाना
आपके पास clearResetPasswordToken()
को कॉल करके, उस टोकन को मिटाने का विकल्प है जो आपके डीपीसी
पहले सेट किया जा सकता है. हैक या चोरी हुए टोकन को रद्द करना पड़ सकता है या
पासवर्ड रीसेट करने की क्षमता हटा देता है. नीचे दिए गए उदाहरण में बताया गया है कि यह कैसे किया जा सकता है
अपने DPC में इसे अपडेट करें:
Kotlin
val dpm = getDpm() val admin = DeviceAdminReceiver.getComponentName(requireActivity()) // Clear the token if (!dpm.clearResetPasswordToken(admin)) { // Report the failure and possibly try later ... }
Java
DevicePolicyManager dpm = getDpm(); ComponentName admin = DeviceAdminReceiver.getComponentName(getActivity()); // Clear the token if (!dpm.clearResetPasswordToken(admin)) { // Report the failure and possibly try later ... }
पासवर्ड रीसेट करना
जब आईटी एडमिन को पासवर्ड रीसेट करना हो, तो
resetPasswordWithToken()
और अपने DPC सेट और चालू किए गए टोकन को पास करें
पहले से:
Kotlin
val token: ByteArray = getTokenFromServer() val newPassword = "password" try { val result: Boolean = dpm.resetPasswordWithToken( DeviceAdminReceiver.getComponentName(requireContext()), newPassword, token, 0 ) if (result) { // The password is now 'password' } else { // Using 'password' doesn't meet password restrictions } } catch (e: IllegalStateException) { // The token doesn't match the one set earlier. }
Java
byte token[] = getTokenFromServer(); String newPassword = "password"; try { boolean result = dpm.resetPasswordWithToken( DeviceAdminReceiver.getComponentName(getContext()), newPassword, token, 0); if (result) { // The password is now 'password' } else { // Using `password` doesn't meet password restrictions } } catch (IllegalStateException e) { // The token doesn't match the one set earlier. }
resetPasswordWithToken()
को कॉल करने पर false
का मैसेज दिखता है, लेकिन पासवर्ड का जवाब नहीं मिलता
बदलें, जब नया पासवर्ड इन शर्तों को पूरा न करता हो:
- वर्णों की संख्या, पासवर्ड की कम से कम लंबाई की सीमा को पूरा करती है. कॉल करें
getPasswordMinimumLength()
को पता चलेगा कि आईटी एडमिन ने लंबाई की सीमा सेट की है. - पासवर्ड में वर्णों की सीमा और जटिलता, कंपोज़िशन के साथ मेल खाती है
कंस्ट्रेंट.
getPasswordQuality()
को कॉल करके पता करें कि आईटी एडमिन ने कंपोज़िशन कंस्ट्रेंट सेट किया है.
अगर पासवर्ड की क्वालिटी के लिए पासवर्ड सेट करने की ज़रूरत नहीं है, तो
को निकालने के लिए null
या एक खाली स्ट्रिंग को resetPasswordWithToken()
पर पास करें
पासवर्ड डालें.
वर्क प्रोफ़ाइल के लिए सुरक्षा से जुड़ा चैलेंज
प्रोफ़ाइल मालिक मोड में चल रहे DPC के लिए, उपयोगकर्ताओं को सुरक्षा से जुड़ी शर्तें तय करनी पड़ सकती हैं वर्क प्रोफ़ाइल में चल रहे ऐप्लिकेशन के लिए चुनौती का सामना करना पड़ सकता है. सिस्टम, सुरक्षा से जुड़ी जानकारी उपयोगकर्ता को किसी वर्क ऐप्लिकेशन को खोलने की कोशिश करनी चाहिए. अगर उपयोगकर्ता को सुरक्षा की चुनौती को पूरा करता है, तो सिस्टम वर्क प्रोफ़ाइल को अनलॉक कर देता है और ज़रूरत पड़ने पर, वह इसे डिक्रिप्ट कर सकता है.
वर्क प्रोफ़ाइल का सुरक्षा चैलेंज कैसे काम करता है
- अगर DPC कोई
ACTION_SET_NEW_PASSWORD
इंटेंट भेजता है, तो सिस्टम अनुरोध करता है उपयोगकर्ता को सुरक्षा से जुड़ी चुनौती सेट अप करनी होगी. - DPC यह भी
ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
भेज सकता है ताकि उपयोगकर्ता को डिवाइस लॉक सेट करने का प्रॉम्प्ट भेजा जा सके.
डीपीसी, वर्क चैलेंज के लिए पासवर्ड नीतियां सेट करने का काम,
अन्य डिवाइस पासवर्ड के लिए नीतियां. उदाहरण के लिए,
डिवाइस चैलेंज रिस्पॉन्स, अन्य फ़ोन कॉल के लिए ज़रूरी लंबाई से अलग हो सकता है
पासवर्ड. DPC सामान्य नियमों का इस्तेमाल करके चैलेंज की नीतियां तय करता है
DevicePolicyManager
तरीके, जैसे कि setPasswordQuality()
और
setPasswordMinimumLength()
.
ज़रूरी बातें
- DPC, वर्क प्रोफ़ाइल का पासवर्ड रीसेट कर सकता है, लेकिन
डिवाइस (निजी) पासवर्ड. अगर कोई उपयोगकर्ता ऑफ़िस के पासवर्ड और निजी पासवर्ड सेट करने का विकल्प चुनता है, तो
अलग रहे हैं, तो वर्क प्रोफ़ाइल पर मौजूद
resetPassword()
की वजह से पासवर्ड सिर्फ़ वर्क प्रोफ़ाइल पर रीसेट किया जाएगा और पासवर्ड एक ही नहीं होगा डिवाइस की लॉक स्क्रीन पर सेट करने के लिए. - डीपीसी, क्रेडेंशियल स्क्रीन को वर्क चैलेंज के लिए पसंद के मुताबिक बना सकता है. इसके लिए, वह इनका इस्तेमाल कर सकता है
setOrganizationColor()
औरsetOrganizationName()
. - डिवाइस के एडमिन, पासवर्ड मिटाने या इन्हें बदलने के लिए,
resetPassword()
का इस्तेमाल नहीं कर सकते जो पहले से सेट हैं. डिवाइस के एडमिन अब भी पासवर्ड सेट कर सकते हैं, लेकिन सिर्फ़ जब डिवाइस में कोई पासवर्ड, पिन या पैटर्न नहीं होगा.
ज़्यादा जानकारी के लिए, getParentProfileInstance()
और रेफ़रंस देखें
DevicePolicyManager
के तहत दस्तावेज़ दिए गए हैं.