Android سیگنالهای دستگاهی مختلفی را ارائه میکند که مدیران میتوانند از آنها برای تعیین وضعیت امنیتی یک دستگاه استفاده کنند. در یک مدل امنیتی اعتماد صفر، این سیگنال ها برای ارزیابی اینکه آیا دستگاه باید اجازه دسترسی به اطلاعات شرکت را داشته باشد یا خیر، استفاده می شود.
ویژگی | شرح | دستگاه های کاملاً مدیریت شده | نمایه کاری در دستگاه های متعلق به شرکت | نمایه کاری در دستگاههای شخصی (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 |
NetworkStatsManager | یک کارگزار 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
را برمی گرداند استفاده کنید.