ב-Android יש מגוון אותות מהמכשיר שאדמינים יכולים להשתמש בהם כדי לקבוע את מצב האבטחה של המכשיר. במודל אבטחה של אפס אמון, האותות האלה משמשים להערכת האפשרות של מתן גישה למידע הארגוני למכשיר.
תכונה | תיאור | מכשירים מנוהלים באופן מלא | פרופיל עבודה במכשירים בבעלות החברה | פרופיל עבודה במכשירים בבעלות אישית (BYOD) | מכשירים לא מנוהלים |
---|---|---|---|---|---|
Play Integrity API | ברוקר אמון יכול לאחזר את האותות הבאים:
|
כן | כן | כן | כן |
אימות מפתחות / נוכחות חומרה מאובטחת | סוכני אמון יכולים לאמת שפרטי הכניסה שלהם ל-PKI נוצרו ונשמרו בחומרה מאובטחת | כן | כן | כן | כן |
אימות של מאפייני המכשיר | כחלק מהאימות של המפתח, אפשר לכלול את מאפייני המכשיר כחלק מרשומות האימות | כן | כן | כן | כן |
רמת תיקון האבטחה במכשיר | סוכני אמון יכולים לאמת את רמת תיקון האבטחה של מערכת ההפעלה | כן | כן | כן | כן |
האם יש למכשיר עדכון OTA בהמתנה | סוכני אמון יכולים לבדוק אם יש עדכון זמין למערכת הפעלה של המכשיר | כן | כן | כן | לא רלוונטי |
רמת תיקון האבטחה הראשי | סוכני Trust יכולים לקרוא את רמת תיקון האבטחה של גרסת הליבה המותקנת | כן | כן | כן | כן |
מזהה ספציפי להרשמה | סוכני אמון יכולים לגשת למזהה מכשיר ייחודי שספציפי לארגון. המזהה הזה נשמר גם אחרי יצירת מחדש של פרופיל העבודה ואיפוס המכשיר להגדרות המקוריות | כן | כן | כן | לא רלוונטי |
מצב ניהול (והאפליקציה לניהול) | סוכני אמון יכולים להשתמש בנתונים האלה כדי לקבוע אם מכשיר מנוהל | כן | כן | כן | לא רלוונטי |
הצפנת דיסק | סוכני 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 | סוכני אמון יכולים לקבוע אם Google סיווגה כתובת URL מסוימת כאיום ידוע. | כן | כן | כן | כן |
מדיה חיצונית מותקנת | אפשר לשלוח התראה ל-Trust broker כשמתקין אחסון חיצוני | כן | כן | כן | כן |
UsageStatsManager | סוכני אמון יכולים לבחון דפוסי שימוש של אפליקציות ספציפיות | כן | כן | כן | כן1 |
רישום ביומן אבטחה | סוכני אמון יכולים להשתמש בנתונים האלה כחלק מהמנוע שלהם למודעות לפי הקשר, כדי לוודא תאימות וליצור טביעת אצבע שמבוססת על התנהגות. | כן | כן2 | כן2 | לא רלוונטי |
רישום ביומן של אירועים ברשת | סוכני אמון יכולים להשתמש בנתונים האלה כחלק מהמנוע שלהם למודעות לפי הקשר, כדי לוודא תאימות וליצור טביעת אצבע שמבוססת על התנהגות. | כן | כן2 | כן2 | לא רלוונטי |
NetworkStatsManager | מתווך אמון יכול לשלוח שאילתה לגבי השימוש של האפליקציה ברשת בפרק זמן נתון | כן | כן | כן2 | כן1 |
הרשאות גישה לחבילה (רשימת כל האפליקציות במכשיר) | סוכני אמון יכולים לשלוח שאילתות לגבי האפליקציות שמותקנות במכשיר | כן | כן3 | כן3 | כן |
קריאת מצב הטלפון | סוכני אמון יכולים לקבל מידע על הרשת הסלולרית, את סטטוס השיחות שמתבצעות כרגע ורשימה של PhoneAccount שרשומים במכשיר | כן | כן | כן | כן |
מתי המכשיר הופעל מחדש בפעם האחרונה | סוכני אמון יכולים לקבל את זמן הפעולה הרציפה של המערכת | כן | כן | כן | כן |
הצגת חשבונות | סוכני אמון יכולים להשתמש בכך כדי לגשת לרשימת החשבונות בשירות החשבונות | כן | כן3 | כן3 | כן1 |
מעקב אחרי שינויים משמעותיים ברמת הטעינה של הסוללה | סוכני אמון יכולים לעקוב אחרי שינויים משמעותיים ברמת הטעינה של הסוללה | כן | כן | כן | כן |
מיקום (מפורט, משוער וכו') | לסוכן של Trust יש גישה למיקום הפיזי של המכשיר | כן | כן | כן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
.