Android سیگنالهای دستگاهی مختلفی را ارائه میکند که مدیران میتوانند از آنها برای تعیین وضعیت امنیتی یک دستگاه استفاده کنند. در یک مدل امنیتی Zero Trust، این سیگنال ها برای ارزیابی اینکه آیا دستگاه باید اجازه دسترسی به اطلاعات شرکت را داشته باشد یا خیر استفاده می شود.
ویژگی | توضیحات | دستگاه های کاملاً مدیریت شده | نمایه کاری در دستگاه های متعلق به شرکت | نمایه کاری در دستگاههای شخصی (BYOD) | دستگاه های مدیریت نشده |
---|---|---|---|---|---|
Play Integrity API | یک کارگزار Trust می تواند سیگنال های زیر را بازیابی کند: | بله | بله | بله | بله |
ارائه ایمن سخت افزار / گواهی کلید | یک کارگزار Trust می تواند تأیید کند که اعتبار PKI آنها در سخت افزار ایمن تولید و ذخیره شده است | بله | بله | بله | بله |
گواهی خصوصیات دستگاه | به عنوان بخشی از گواهی کلید، ویژگیهای دستگاه را میتوان به عنوان بخشی از سوابق تصدیق گنجاند | بله | بله | بله | بله |
سطح وصله امنیتی دستگاه | یک کارگزار Trust می تواند سطح وصله امنیتی سیستم عامل را تأیید کند | بله | بله | بله | بله |
آیا دستگاه OTA معلق دارد؟ | یک کارگزار Trust میتواند بررسی کند که آیا بهروزرسانی سیستمعامل دستگاه معلق موجود است یا خیر | بله | بله | بله | N/A |
سطح وصله امنیتی خط اصلی | یک کارگزار Trust می تواند سطح وصله امنیتی قطار خط اصلی نصب شده را بخواند | بله | بله | بله | بله |
شناسه خاص ثبت نام | یک کارگزار Trust می تواند به یک شناسه دستگاه منحصر به فرد مخصوص آن شرکت دسترسی داشته باشد. این شناسه از ایجاد مجدد نمایه کاری و بازنشانی کارخانهای دستگاه جان سالم به در میبرد | بله | بله | بله | N/A |
وضعیت مدیریت (و مدیریت برنامه) | یک کارگزار Trust می تواند از این برای تعیین اینکه آیا یک دستگاه مدیریت می شود استفاده کند | بله | بله | بله | N/A |
رمزگذاری دیسک | یک کارگزار Trust می تواند بررسی کند که آیا دستگاه رمزگذاری شده است (در صورت نیاز به پشتیبانی از Android 8) | بله | بله | بله | بله |
نسخه سیستم عامل | یک کارگزار Trust می تواند نسخه سیستم عامل دستگاه را بررسی کند و تأیید کند که از یک نسخه خاص بیشتر است | بله | بله | بله | بله |
دسترسی به وضعیت شبکه (وضعیت شبکه و وضعیت WiFi) | یک کارگزار Trust می تواند اطلاعاتی درباره وضعیت فعال شبکه (سلولار و وای فای) دریافت کند. | بله | بله | بله | بله |
دسترسی به وضعیت WiFi ( اندروید 11 و پایین تر ، اندروید 12 و بالاتر از هر دو روش پاسخ به تماس یا درخواست پشتیبانی می کند) | یک کارگزار Trust می تواند اطلاعاتی در مورد شبکه WiFi فعال دریافت کند | بله | بله | بله | بله |
تنظیمات پروکسی | یک کارگزار Trust میتواند اطلاعاتی درباره تنظیمات پیشفرض پروکسی HTTP دریافت کند. | بله | بله | بله | بله |
بررسی کیفیت قفل صفحه | یک کارگزار Trust می تواند اطمینان حاصل کند که دستگاه قبل از اعطای دسترسی، قفل صفحه با کیفیت خاصی را پیکربندی کرده است | بله | بله | بله | بله |
گزینه های برنامه نویس فعال شد | وقتی گزینههای توسعهدهنده فعال هستند، یک کارگزار Trust میتواند دستگاهی را به عنوان دارای سطح حمله گستردهتری شناسایی کند | بله | بله | بله | بله |
آیا DNS از طریق TLS فعال است | یک کارگزار Trust می تواند از این اهرم استفاده کند تا مطمئن شود که حالت DNS خصوصی فعال است | بله | بله | بله | بله |
SafetyNet Safe Browsing | یک کارگزار Trust می تواند تعیین کند که آیا یک URL خاص توسط Google به عنوان یک تهدید شناخته شده طبقه بندی شده است یا خیر. | بله | بله | بله | بله |
رسانه خارجی نصب شده است | وقتی یک حافظه خارجی نصب می شود، می توان به کارگزار Trust اطلاع داد | بله | بله | بله | بله |
UsageStatsManager | یک کارگزار Trust می تواند الگوهای استفاده از برنامه های فردی را مطالعه کند | بله | بله | بله | بله 1 |
ثبت امنیت | یک کارگزار Trust می تواند از این داده ها به عنوان بخشی از موتور متنی خود برای اطمینان از انطباق و ایجاد اثر انگشت مبتنی بر رفتار استفاده کند. | بله | بله 2 | بله 2 | N/A |
ثبت شبکه | یک کارگزار Trust می تواند از این داده ها به عنوان بخشی از موتور متنی خود برای اطمینان از انطباق و ایجاد اثر انگشت مبتنی بر رفتار استفاده کند. | بله | بله 2 | بله 2 | N/A |
NetworkStats Manager | یک کارگزار Trust می تواند استفاده از شبکه برنامه را در یک بازه زمانی معین پرس و جو کند | بله | بله | بله 2 | بله 1 |
قابلیت مشاهده بسته (لیست تمام برنامه های موجود در دستگاه) | یک کارگزار Trust می تواند درخواست کند که چه برنامه هایی روی دستگاه نصب شده است | بله | بله 3 | بله 3 | بله |
وضعیت تلفن را بخوانید | یک کارگزار Trust میتواند اطلاعات شبکه تلفن همراه، وضعیت تماسهای جاری و فهرستی از حساب تلفن ثبتشده در دستگاه را دریافت کند. | بله | بله | بله | بله |
آخرین باری که دستگاه راه اندازی مجدد شد | یک کارگزار Trust می تواند تایم سیستم را دریافت کند | بله | بله | بله | بله |
دریافت حساب ها | یک کارگزار Trust میتواند از این برای دسترسی به لیست حسابهای موجود در سرویس حسابها استفاده کند | بله | بله 3 | بله 3 | بله 1 |
تغییرات قابل توجه در سطح باتری را کنترل کنید | یک کارگزار Trust می تواند تغییرات قابل توجه در سطح باتری را کنترل کند | بله | بله | بله | بله |
مکان (خوب، درشت، و غیره...) | یک کارگزار Trust می تواند به مکان فیزیکی دستگاه دسترسی داشته باشد | بله | بله | بله 1 | بله 1 |
1 با رضایت کاربر
2 فقط نمایه کاری
3 دسترسی محدود به اطلاعات نمایه کاری است
نسخه اصلی را بازیابی کنید
یک کارگزار Trust می تواند به PackageInfo برای ماژول com.google.android.modulemetadata
دسترسی داشته باشد و 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
}
به یاد داشته باشید که برای اندروید 11 و جدیدتر باید یک عبارت پرس و جو را در فایل AndroidManifest.xml
خود اضافه کنید تا دید بسته اندروید را برآورده کند:
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
وضعیت مدیریت را بازیابی کنید
یک کارگزار Trust میتواند از این روشها برای بررسی اینکه آیا دستگاه تحت حالت مدیریت است و کدام حالت مدیریت فعال است، استفاده کند.
مدیریت دستگاه را بررسی کنید
از getActiveAdmins() برای بررسی اینکه آیا یک دستگاه تحت مدیریت است یا خیر استفاده کنید. اگر این روش null
را برگرداند، دستگاه مدیریت نمی شود.
دستگاه کاملاً مدیریت شده را بررسی کنید
از isDeviceOwnerApp()
برای بررسی اینکه آیا دستگاه به طور کامل مدیریت شده است یا خیر استفاده کنید.
نمایه کاری را در دستگاه متعلق به شرکت بررسی کنید
از isOrganizationOwnedDeviceWithManagedProfile()
برای بررسی اینکه آیا دستگاهی از حالت مدیریت نمایه کاری برای دستگاه های متعلق به شرکت استفاده می کند یا خیر استفاده کنید.
نمایه کاری را در دستگاه شخصی بررسی کنید
از isProfileOwnerApp()
برای بررسی اینکه آیا یک برنامه در نمایه کاری در حال اجرا است یا خیر استفاده کنید و بررسی کنید که isOrganizationOwnedDeviceWithManagedProfile()
false
برمی گرداند.