Android, डिवाइस के अलग-अलग सिग्नल उपलब्ध कराता है. एडमिन इनका इस्तेमाल करके, किसी डिवाइस की सुरक्षा स्थिति का पता लगा सकते हैं. ज़ीरो ट्रस्ट सुरक्षा मॉडल में, इन सिग्नल का इस्तेमाल यह आकलन करने के लिए किया जाता है कि किसी डिवाइस को कॉर्पोरेट जानकारी ऐक्सेस करने की अनुमति दी जानी चाहिए या नहीं.
सुविधा | ब्यौरा | पूरी तरह से मैनेज किए जा रहे डिवाइस | कंपनी के मालिकाना हक वाले डिवाइसों पर वर्क प्रोफ़ाइल | निजी डिवाइसों पर वर्क प्रोफ़ाइल (BYOD) | मैनेज नहीं किए जा रहे डिवाइस |
---|---|---|---|---|---|
Play Integrity API | भरोसेमंद ब्रोकर, ये सिग्नल हासिल कर सकता है:
|
हां | हां | हां | हां |
सुरक्षित हार्डवेयर मौजूद है / पासकोड की पुष्टि करना | ट्रस्ट ब्रोकर यह पुष्टि कर सकता है कि उसके पीकेआई क्रेडेंशियल जनरेट किए गए थे और सुरक्षित हार्डवेयर में सेव किए गए थे | हां | हां | हां | हां |
डिवाइस की प्रॉपर्टी की पुष्टि करना | पुष्टि करने के लिए इस्तेमाल होने वाली कुंजी के हिस्से के तौर पर, डिवाइस प्रॉपर्टी को पुष्टि करने के रिकॉर्ड के हिस्से के तौर पर शामिल किया जा सकता है | हां | हां | हां | हां |
डिवाइस के लिए, सुरक्षा पैच का लेवल | ट्रस्ट ब्रोकर, ओएस के सुरक्षा पैच लेवल की पुष्टि कर सकता है | हां | हां | हां | हां |
क्या डिवाइस पर ओटीए अपडेट होना बाकी है | ट्रस्ट ब्रोकर यह देख सकता है कि डिवाइस के लिए ओएस का कोई अपडेट उपलब्ध है या नहीं | हां | हां | हां | लागू नहीं |
Mainline सिक्योरिटी पैच का लेवल | ट्रस्ट ब्रोकर, इंस्टॉल की गई मुख्य लाइन ट्रेन के लिए सुरक्षा पैच का लेवल पढ़ सकता है | हां | हां | हां | हां |
रजिस्ट्रेशन के लिए खास आईडी | ट्रस्ट ब्रोकर, उस एंटरप्राइज़ के लिए खास तौर पर उपलब्ध यूनीक डिवाइस आईडी को ऐक्सेस कर सकता है. यह आईडी, वर्क प्रोफ़ाइल को फिर से बनाने और डिवाइस को फ़ैक्ट्री रीसेट करने के बाद भी मौजूद रहता है | हां | हां | हां | लागू नहीं |
मैनेजमेंट स्टेटस (और ऐप्लिकेशन मैनेज करना) | ट्रस्ट ब्रोकर इसका इस्तेमाल करके यह तय कर सकता है कि किसी डिवाइस को मैनेज किया जा रहा है या नहीं | हां | हां | हां | लागू नहीं |
डिस्क को एन्क्रिप्ट (सुरक्षित) करना | ट्रस्ट ब्रोकर यह देख सकता है कि डिवाइस को एन्क्रिप्ट किया गया है या नहीं (अगर Android 8 की ज़रूरत है) | हां | हां | हां | हां |
ओएस वर्शन | ट्रस्ट ब्रोकर, डिवाइस के ओएस वर्शन की जांच कर सकता है और पुष्टि कर सकता है कि वह किसी खास वर्शन से ज़्यादा है | हां | हां | हां | हां |
नेटवर्क की स्थिति (नेटवर्क की स्थिति और वाई-फ़ाई की स्थिति) ऐक्सेस करना | ट्रस्ट ब्रोकर, चालू नेटवर्क की स्थिति (मोबाइल और वाई-फ़ाई) के बारे में जानकारी पा सकता है | हां | हां | हां | हां |
वाई-फ़ाई की स्थिति ऐक्सेस करना (Android 11 और उससे पहले के वर्शन, Android 12 और उसके बाद के वर्शन में कॉलबैक या ऑन-डिमांड, दोनों तरीके काम करते हैं) | ट्रस्ट ब्रोकर को चालू वाई-फ़ाई नेटवर्क के बारे में जानकारी मिल सकती है | हां | हां | हां | हां |
प्रॉक्सी सेटिंग | ट्रस्ट ब्रोकर को मौजूदा डिफ़ॉल्ट एचटीटीपी प्रोक्सी सेटिंग की जानकारी मिल सकती है. | हां | हां | हां | हां |
स्क्रीन लॉक की क्वालिटी की जांच करना | ट्रस्ट ब्रोकर, ऐक्सेस देने से पहले यह पक्का कर सकता है कि डिवाइस में अच्छी क्वालिटी का स्क्रीन लॉक कॉन्फ़िगर किया गया हो | हां | हां | हां | हां |
डेवलपर के लिए उपलब्ध विकल्प चालू हों | 'डेवलपर के लिए सेटिंग और टूल' चालू होने पर, ट्रस्ट ब्रोकर किसी डिवाइस को हमले के लिए ज़्यादा संवेदनशील डिवाइस के तौर पर पहचान सकता है | हां | हां | हां | हां |
क्या डीएनएस ओवर टीएलएस चालू है | ट्रस्ट ब्रोकर इस सुविधा का इस्तेमाल करके, यह पक्का कर सकता है कि निजी डीएनएस मोड चालू हो | हां | हां | हां | हां |
SafetyNet सुरक्षित ब्राउज़िंग | ट्रस्ट ब्रोकर यह तय कर सकता है कि Google ने किसी यूआरएल को, खतरे के तौर पर मार्क किया है या नहीं. | हां | हां | हां | हां |
बाहरी मीडिया माउंट किया गया | बाहरी स्टोरेज के माउंट होने पर, ट्रस्ट ब्रोकर को सूचना दी जा सकती है | हां | हां | हां | हां |
UsageStatsManager | ट्रस्ट ब्रोकर, अलग-अलग ऐप्लिकेशन के इस्तेमाल के पैटर्न का अध्ययन कर सकता है | हां | हां | हां | हां1 |
सुरक्षा के लिए लॉगिंग | ट्रस्ट ब्रोकर, अपने कॉन्टेक्स्टुअल इंजन के हिस्से के तौर पर इस डेटा का फ़ायदा उठा सकता है, ताकि यह पक्का किया जा सके कि नीतियों का पालन किया जा रहा है या नहीं. साथ ही, उपयोगकर्ता के व्यवहार के आधार पर फ़िंगरप्रिंट बनाया जा सके | हां | हां2 | हां2 | लागू नहीं |
नेटवर्क ट्रैफ़िक को रिकॉर्ड करना | ट्रस्ट ब्रोकर, अपने कॉन्टेक्स्टुअल इंजन के हिस्से के तौर पर इस डेटा का फ़ायदा उठा सकता है, ताकि यह पक्का किया जा सके कि नीतियों का पालन किया जा रहा है या नहीं. साथ ही, उपयोगकर्ता के व्यवहार के आधार पर फ़िंगरप्रिंट बनाया जा सके | हां | हां2 | हां2 | लागू नहीं |
NetworkStatsManager | ट्रस्ट ब्रोकर, किसी तय समयावधि के अंदर ऐप्लिकेशन के नेटवर्क इस्तेमाल के बारे में क्वेरी कर सकता है | हां | हां | हां2 | हां1 |
पैकेज की विज़िबिलिटी (डिवाइस पर मौजूद सभी ऐप्लिकेशन की सूची) | ट्रस्ट ब्रोकर यह क्वेरी कर सकता है कि डिवाइस पर कौनसे ऐप्लिकेशन इंस्टॉल हैं | हां | हां3 | हां3 | हां |
फ़ोन की स्थिति पढ़ें | ट्रस्ट ब्रोकर को मोबाइल नेटवर्क की जानकारी, चल रहे किसी भी कॉल की स्थिति, और डिवाइस पर रजिस्टर किए गए PhoneAccount की सूची मिल सकती है | हां | हां | हां | हां |
डिवाइस को पिछली बार कब रीबूट किया गया था | ट्रस्ट ब्रोकर को सिस्टम के अपटाइम की जानकारी मिल सकती है | हां | हां | हां | हां |
खाते पाना | ट्रस्ट ब्रोकर, Accounts Service में मौजूद खातों की सूची को ऐक्सेस करने के लिए, इसका फ़ायदा ले सकता है | हां | हां3 | हां3 | हां1 |
बैटरी लेवल में होने वाले अहम बदलावों पर नज़र रखना | ट्रस्ट ब्रोकर, बैटरी लेवल में होने वाले ज़रूरी बदलावों पर नज़र रख सकता है | हां | हां | हां | हां |
जगह की जानकारी (सटीक, अनुमानित वगैरह) | ट्रस्ट ब्रोकर, डिवाइस की जगह की जानकारी ऐक्सेस कर सकता है | हां | हां | हां1 | हां1 |
1 उपयोगकर्ता की सहमति लेकर
2 सिर्फ़ वर्क प्रोफ़ाइल
3 वर्क प्रोफ़ाइल की जानकारी तक सीमित ऐक्सेस
मेनलाइन वर्शन वापस पाना
ट्रस्ट ब्रोकर, com.google.android.modulemetadata
मॉड्यूल के लिए PackageInfo को ऐक्सेस कर सकता है और वहां से versionName
को वापस पा सकता है:
private fun mainlineVersion(context: Context): String? {
val moduleProvider = "com.google.android.modulemetadata"
return try {
val pm = context.packageManager
val packageInfo = pm.getPackageInfo(moduleProvider, 0)
packageInfo.versionName
} catch (e: PackageManager.NameNotFoundException) {
null
}
}
SimpleDateFormat
क्लास का इस्तेमाल करके, रिटर्न की गई स्ट्रिंग को Date
ऑब्जेक्ट में पार्स किया जा सकता है:
private val VERSION_NAME_DATE_PATTERNS = Arrays.asList(
"yyyy-MM-dd",
"yyyy-MM"
)
private fun parseDateFromVersionName(text: String): Date? {
for (pattern in VERSION_NAME_DATE_PATTERNS) {
try {
val simpleDateFormat = SimpleDateFormat(
pattern,
Locale.getDefault()
)
simpleDateFormat.timeZone = TimeZone.getDefault()
return simpleDateFormat.parse(text)
} catch (e: ParseException) {
// ignore and try next pattern
}
}
return null
}
ध्यान रखें कि Android 11 और उसके बाद के वर्शन के लिए, आपको अपनी AndroidManifest.xml
फ़ाइल में क्वेरी का एलान जोड़ना होगा. इससे, Android के पैकेज की उपलब्धता से जुड़ी शर्तें पूरी होंगी:
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
मैनेजमेंट की स्थिति देखना
ट्रस्ट ब्रोकर इन तरीकों का इस्तेमाल करके पुष्टि कर सकता है कि कोई डिवाइस मैनेजमेंट मोड में है या नहीं. साथ ही, यह भी पुष्टि की जा सकती है कि कौनसा मैनेजमेंट मोड चालू है.
डिवाइस मैनेजमेंट की सुविधा देखना
getActiveAdmins() का इस्तेमाल करके देखें कि कोई डिवाइस मैनेज किया जा रहा है या नहीं. अगर यह तरीका null
दिखाता है, तो इसका मतलब है कि डिवाइस मैनेज नहीं किया जा रहा है.
पूरी तरह से मैनेज किए जा रहे डिवाइस की जांच करना
isDeviceOwnerApp()
का इस्तेमाल करके देखें कि डिवाइस पूरी तरह से मैनेज किया जा रहा है या नहीं.
कंपनी के मालिकाना हक वाले डिवाइस पर वर्क प्रोफ़ाइल की जांच करना
isOrganizationOwnedDeviceWithManagedProfile()
का इस्तेमाल करके देखें कि कोई डिवाइस, कंपनी के मालिकाना हक वाले डिवाइसों के लिए, वर्क प्रोफ़ाइल मैनेजमेंट मोड का इस्तेमाल कर रहा है या नहीं
निजी तौर पर इस्तेमाल किए जाने वाले डिवाइस पर वर्क प्रोफ़ाइल की जांच करना
isProfileOwnerApp()
का इस्तेमाल करके देखें कि कोई ऐप्लिकेशन, वर्क प्रोफ़ाइल में चल रहा है या नहीं. साथ ही, पुष्टि करें कि isOrganizationOwnedDeviceWithManagedProfile()
से false
दिखे.