אותות לגבי מצב האבטחה

ב-Android יש מגוון אותות מהמכשיר שאדמינים יכולים להשתמש בהם כדי לקבוע את מצב האבטחה של המכשיר. במודל אבטחה של אפס אמון, האותות האלה משמשים להערכת האפשרות של מתן גישה למידע הארגוני למכשיר.

תכונה תיאור מכשירים מנוהלים באופן מלא פרופיל עבודה במכשירים בבעלות החברה פרופיל עבודה במכשירים בבעלות אישית (BYOD) מכשירים לא מנוהלים
Play Integrity API ברוקר אמון יכול לאחזר את האותות הבאים:
  • תקינות המכשיר
  • שלמות האפליקציה
  • פרטי הרישיון ל-Play
  • פרטי הסביבה, כולל התוצאה החדשה של Play Protect
  • כן כן כן כן
    אימות מפתחות / נוכחות חומרה מאובטחת סוכני אמון יכולים לאמת שפרטי הכניסה שלהם ל-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.