सुरक्षा

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

DPC ऐप्लिकेशन, निजी डिवाइसों या डिवाइस के मालिक वाले मोड में प्रोफ़ाइल मालिक मोड में चल सकता है मोड चालू है. इस टेबल से पता चलता है कि कौनसी सुविधाएं उपलब्ध हैं जब DPC प्रोफ़ाइल मालिक मोड या डिवाइस मालिक मोड में चलता है:

सुविधा प्रोफ़ाइल का मालिक डिवाइस का मालिक
ऐप्लिकेशन का ऐक्सेस बंद करना
अनजान सोर्स से ऐप्लिकेशन ब्लॉक करना
Google Play में खातों पर पाबंदी लगाना
एंटरप्राइज़ को फ़ैक्ट्री रीसेट करने से जुड़ी सुरक्षा चालू करना
एंटरप्राइज़ प्रोसेस लॉग और रिमोट गड़बड़ी की रिपोर्ट मॉनिटर करें
क्लाइंट सर्टिफ़िकेट का ऐक्सेस देना और उसका ऐक्सेस हटाना
सुरक्षित पासवर्ड रीसेट करना
वर्क प्रोफ़ाइल की सुरक्षा से जुड़ा चैलेंज

ऐप्लिकेशन का ऐक्सेस बंद करना

उन संगठनों के लिए जो कर्मचारियों को गेम खेलने या देखने से रोकना चाहते हैं दिन के किसी खास समय के दौरान, 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 से ऐप्लिकेशन इंस्टॉल करने पर पाबंदी लगाने के लिए, यह तरीका अपनाएं:

  1. Google Play पैकेज के लिए, मैनेज किया जा रहा कॉन्फ़िगरेशन बंडल सेट करें com.android.vending.
  2. बंडल में, verify_apps:device_wide_unknown_source_block कुंजी.
  3. 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 में खातों को सीमित करने के लिए, यह तरीका अपनाएं:

  1. Google Play पैकेज के लिए, मैनेज किया जा रहा कॉन्फ़िगरेशन बंडल सेट करें com.android.vending.
  2. बंडल में, कॉमा लगाकर अलग किए गए ईमेल पतों को 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 इन खातों को हमेशा के लिए पूरी तरह से प्रबंधित करके कॉन्फ़िगर कर सकता है डिवाइस.

  1. आईटी एडमिन, People API के people.get तरीके का इस्तेमाल कर सकता है खास मान me के साथ. यह इसके लिए userId को वापस लाता है: खाते से लॉग इन किया है. userID को resourceName कुंजी में वापस किया जाता है पूर्णांक स्ट्रिंग के रूप में फ़ॉर्म people/[userId]. नए बनाए गए खाते यह कर सकते थे 72 घंटों तक फ़ैक्ट्री रीसेट करने के लिए उपलब्ध न हो.
  2. एक या एक से ज़्यादा आईटी एडमिन को इस डिवाइस को अनलॉक करने की अनुमति बाद में भी दी जा सकती है फ़ैक्ट्री रीसेट किया जाता है. इनमें से हर आईटी एडमिन को अपने Google खाते में लॉग इन करने के लिए कहें और साथ ही, पहले चरण का पालन करें और उनके userId को आपके साथ शेयर करें, ताकि आप इन्हें जोड़ सकें userIds को अगले चरण में सूची में जोड़ें.
  3. DPC इनका इस्तेमाल करके, ऐप्लिकेशन पर पाबंदी लगाता है userId की सूची सेट करने के लिए setFactoryResetProtectionPolicy() करें, जो फ़ैक्ट्री रीसेट करने के लिए डिवाइस का प्रावधान किया जा सके.
  4. 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() को नीचे दिए गए सुधार लागू होंगे:

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

वर्क प्रोफ़ाइल का सुरक्षा चैलेंज कैसे काम करता है

  1. अगर DPC कोई ACTION_SET_NEW_PASSWORD इंटेंट भेजता है, तो सिस्टम अनुरोध करता है उपयोगकर्ता को सुरक्षा से जुड़ी चुनौती सेट अप करनी होगी.
  2. DPC यह भी ACTION_SET_NEW_PARENT_PROFILE_PASSWORD भेज सकता है ताकि उपयोगकर्ता को डिवाइस लॉक सेट करने का प्रॉम्प्ट भेजा जा सके.

डीपीसी, वर्क चैलेंज के लिए पासवर्ड नीतियां सेट करने का काम, अन्य डिवाइस पासवर्ड के लिए नीतियां. उदाहरण के लिए, डिवाइस चैलेंज रिस्पॉन्स, अन्य फ़ोन कॉल के लिए ज़रूरी लंबाई से अलग हो सकता है पासवर्ड. DPC सामान्य नियमों का इस्तेमाल करके चैलेंज की नीतियां तय करता है DevicePolicyManager तरीके, जैसे कि setPasswordQuality() और setPasswordMinimumLength().

ज़रूरी बातें

  • DPC, वर्क प्रोफ़ाइल का पासवर्ड रीसेट कर सकता है, लेकिन डिवाइस (निजी) पासवर्ड. अगर कोई उपयोगकर्ता ऑफ़िस के पासवर्ड और निजी पासवर्ड सेट करने का विकल्प चुनता है, तो अलग रहे हैं, तो वर्क प्रोफ़ाइल पर मौजूद resetPassword() की वजह से पासवर्ड सिर्फ़ वर्क प्रोफ़ाइल पर रीसेट किया जाएगा और पासवर्ड एक ही नहीं होगा डिवाइस की लॉक स्क्रीन पर सेट करने के लिए.
  • डीपीसी, क्रेडेंशियल स्क्रीन को वर्क चैलेंज के लिए पसंद के मुताबिक बना सकता है. इसके लिए, वह इनका इस्तेमाल कर सकता है setOrganizationColor() और setOrganizationName().
  • डिवाइस के एडमिन, पासवर्ड मिटाने या इन्हें बदलने के लिए, resetPassword() का इस्तेमाल नहीं कर सकते जो पहले से सेट हैं. डिवाइस के एडमिन अब भी पासवर्ड सेट कर सकते हैं, लेकिन सिर्फ़ जब डिवाइस में कोई पासवर्ड, पिन या पैटर्न नहीं होगा.

ज़्यादा जानकारी के लिए, getParentProfileInstance() और रेफ़रंस देखें DevicePolicyManager के तहत दस्तावेज़ दिए गए हैं.