מערכת Android מספקת מגוון אותות במכשירים שאדמינים יכולים להשתמש בהם לקבוע את מצב האבטחה של המכשיר. במודל אבטחה של אפס אמון, האותות האלה משמשים כדי לקבוע אם המכשיר יכול לקבל גישה החברה.
תכונה | תיאור | מכשירים מנוהלים באופן מלא | פרופיל עבודה במכשירים בבעלות החברה | פרופיל עבודה במכשירים בבעלות אישית (BYOD) | מכשירים לא מנוהלים |
---|---|---|---|---|---|
Play Integrity API | נאמנות
המתווך יכול לאחזר את האותות הבאים:
|
כן | כן | כן | כן |
מאובטח הצגת חומרה / אימות עם מפְתח | סוכני אמון יכולים לאמת שפרטי הכניסה שלהם ל-PKI נוצרו ונשמרו בחומרה מאובטחת | כן | כן | כן | כן |
אימות של מאפייני המכשיר | במסגרת האימות עם מפתח, אפשר לכלול את מאפייני המכשיר של רשומת האימות | כן | כן | כן | כן |
מכשיר רמת תיקון האבטחה | סוכני אמון יכולים לאמת את רמת תיקון האבטחה של מערכת ההפעלה | כן | כן | כן | כן |
האם יש למכשיר עדכון OTA בהמתנה | סוכני אמון יכולים לבדוק אם יש עדכון זמין למערכת הפעלה של המכשיר | כן | כן | כן | לא רלוונטי |
רמת תיקון האבטחה הראשית | סוכני אמון יכולים לקרוא את רמת תיקון האבטחה של גרסת הליבה המותקנת | כן | כן | כן | כן |
מזהה ספציפי להרשמה | סוכני אמון יכולים לגשת למזהה מכשיר ייחודי שספציפי לארגון. המזהה הזה שורד גם ביצירה מחדש של פרופיל העבודה וגם במפעל המכשיר בוצע איפוס | כן | כן | כן | לא רלוונטי |
מצב הניהול (וניהול האפליקציה) | סוכני אמון יכולים להשתמש בנתונים האלה כדי לקבוע אם מכשיר מנוהל | כן | כן | כן | לא רלוונטי |
דיסק הצפנה | סוכני Trust יכולים לבדוק אם המכשיר מוצפן (אם נדרשת תמיכה ב-Android 8) | כן | כן | כן | כן |
גרסת מערכת ההפעלה | ברוקר יכול לבדוק את גרסת מערכת ההפעלה של המכשיר ולוודא שהיא חורגת מגרסת מערכת ההפעלה גרסה מסוימת | כן | כן | כן | כן |
גישה למצב הרשת (מצב הרשת ומצב ה-Wi-Fi) | סוכני Trust יכולים לקבל מידע על מצב הרשת הפעילה (סלולרית ו-Wi-Fi) | כן | כן | כן | כן |
גישה למצב ה-Wi-Fi (ב-Android 11 ומטה, ב-Android 12 ואילך יש תמיכה גם ב-callback וגם בגישה לפי דרישה) | סוכני אמון יכולים לקבל מידע על רשת ה-Wi-Fi הפעילה | כן | כן | כן | כן |
הגדרות שרת proxy | סוכני אמון יכולים לקבל מידע על הגדרות ברירת המחדל הנוכחיות של שרת proxy ל-HTTP. | כן | כן | כן | כן |
מסך בדיקת איכות נעילה | מתווך מהימנות יכול להבטיח שלמכשיר מוגדרת נעילת מסך באיכות מסוימת הוגדר לפני הענקת גישה | כן | כן | כן | כן |
האפשרויות למפתחים מופעלות | מתווך מהימנות יכול לזהות מכשיר בעל מתקפה רחבה יותר מוצגות כשאפשרויות למפתחים מופעלות | כן | כן | כן | כן |
האם DNS over TLS מופעל | בר מהימנות יכול למנף זאת כדי להבטיח ששרת ה-DNS הפרטי המצב מופעל | כן | כן | כן | כן |
SafetyNet גלישה בטוחה | מתווך מהימנות יכול לקבוע אם כתובת URL מסוימת ש-Google מסווגת כאיום ידוע. | כן | כן | כן | כן |
מדיה חיצונית מותקנת | אפשר לשלוח התראה לסוכן אמון כשמתבצעת התקנה של אחסון חיצוני | כן | כן | כן | כן |
UsageStatsManager | מתווך מהימנות יכול לחקור דפוסי שימוש באפליקציות שונות | כן | כן | כן | כן1 |
אבטחה רישום ביומן | ברוקר יכול למנף את הנתונים האלה כחלק כדי להבטיח תאימות וליצור טביעת אצבע שמבוססת על התנהגות | כן | כן2 | כן2 | לא רלוונטי |
רישום ביומן של אירועים ברשת | סוכני אמון יכולים להשתמש בנתונים האלה כחלק מהמנוע לפי הקשר כדי לוודא תאימות וליצור טביעת אצבע שמבוססת על התנהגות. | כן | כן2 | כן2 | לא רלוונטי |
NetworkStatsManager | מתווך אמון יכול לשלוח שאילתה לגבי השימוש של האפליקציה ברשת בפרק זמן נתון | כן | כן | כן2 | כן1 |
חשיפת החבילה (רשימת כל האפליקציות במכשיר) | מתווך מהימנות יכול לשלוח שאילתות לגבי האפליקציות שמותקנות במכשיר | כן | כן3 | כן3 | כן |
קריאה מצב הטלפון | סוכני אמון יכולים לקבל מידע על הרשת הסלולרית, את סטטוס השיחות שמתבצעות כרגע ורשימה של חשבונות הטלפון שרשומים במכשיר | כן | כן | כן | כן |
מתי המכשיר הופעל מחדש לאחרונה | מתווך מהימנות יכול לקבל את זמן הפעולה התקינה של המערכת | כן | כן | כן | כן |
קבלת חשבונות | סוכן נאמנות יכול להשתמש באפשרות הזו כדי לגשת לרשימת החשבונות ב- שירות החשבונות | כן | כן3 | כן3 | כן1 |
מעקב אחר שינויים משמעותיים ברמת הסוללה | סוכני אמון יכולים לעקוב אחרי שינויים משמעותיים ברמת הטעינה של הסוללה | כן | כן | כן | כן |
מיקום (מפורט, משוער וכו') | מתווך מהימנות יכול לגשת למיקום הפיזי של המכשיר | כן | כן | כן1 | כן1 |
1 בהסכמת המשתמש
2 פרופיל עבודה בלבד
3 הגישה מוגבלת לפרטים של פרופיל העבודה
אחזור הגרסה הראשית
מתווך מהימנות יכול לגשת ל-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
}
}
אפשר לנתח את המחרוזת שמוחזרת לאובייקט Date
באמצעות
כיתה SimpleDateFormat
:
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
.