Sygnały stanu zabezpieczeń

.

Android udostępnia różne sygnały z urządzenia, które administratorzy mogą wykorzystać do określenia stanu zabezpieczeń urządzenia. W modelu bezpieczeństwa opartym na zasadzie zaufania zerowego te sygnały są wykorzystywane do oceny, czy urządzenie powinno mieć dostęp do informacji firmowych.

Funkcja Opis Urządzenia w pełni zarządzane Profile służbowe na urządzeniach należących do firmy Profil służbowy na urządzeniach należących do pracowników (PWU) Niezarządzane urządzenia
Play Integrity API Pośrednik zaufania może pobierać te sygnały:
  • Integralność urządzenia
  • Integralność aplikacji
  • Szczegóły licencji w Google Play
  • szczegóły środowiska, w tym nową ocenę Play Protect;
  • Tak Tak Tak Tak
    Bezpieczeństwo: obecność sprzętu / atestacja klucza Broker zaufania może sprawdzić, czy jego dane logowania do infrastruktury klucza publicznego zostały wygenerowane i zmagazynowane na bezpiecznym sprzęcie. Tak Tak Tak Tak
    Attestacja właściwości urządzeń W ramach poświadczenia klucza właściwości urządzenia mogą być uwzględniane w rekordzie poświadczenia Tak Tak Tak Tak
    Poziom aktualizacji zabezpieczeń urządzenia Broker zaufania może zweryfikować poziom aktualizacji zabezpieczeń systemu operacyjnego Tak Tak Tak Tak
    Czy na urządzeniu są oczekujące aktualizacje OTA Usługodawca może sprawdzić, czy urządzenie oczekuje na aktualizację systemu operacyjnego. Tak Tak Tak Nie dotyczy
    Poziom aktualizacji zabezpieczeń głównej linii produktów Broker zaufania może odczytać poziom aktualizacji zabezpieczeń w przypadku zainstalowanego głównego łańcucha. Tak Tak Tak Tak
    Identyfikator dotyczący rejestracji Broker zaufania może uzyskać dostęp do unikalnego identyfikatora urządzenia konkretnej firmy. Ten identyfikator pozostaje po ponownym utworzeniu profilu służbowego i przywróceniu urządzenia do ustawień fabrycznych. Tak Tak Tak Nie dotyczy
    Stan zarządzania (i aplikacja do zarządzania) Broker zaufania może użyć tego parametru, aby określić, czy urządzenie jest zarządzane Tak Tak Tak Nie dotyczy
    Szyfrowanie dysku Broker zaufania może sprawdzić, czy urządzenie jest zaszyfrowane (jeśli wymagana jest obsługa Androida 8). Tak Tak Tak Tak
    Wersja systemu operacyjnego Usługa pośrednicząca w zapewnieniu zaufania może sprawdzić wersję systemu operacyjnego urządzenia i potwierdzić, że jest ona nowsza niż określona wersja Tak Tak Tak Tak
    Dostęp Stan sieci (stan sieci i stan Wi-Fi) Broker może uzyskać informacje o stanie aktywnej sieci (komórkowej i Wi-Fi). Tak Tak Tak Tak
    dostęp do stanu Wi-Fi (Android 11 i starsze, Android 12 i nowsze obsługują zarówno wywołanie, jak i podejście na żądanie); Broker zaufania może uzyskać informacje o aktywnej sieci Wi-Fi Tak Tak Tak Tak
    Ustawienia serwera proxy Broker zaufania może uzyskać informacje o bieżących domyślnych ustawieniach serwera proxy HTTP. Tak Tak Tak Tak
    Sprawdzanie jakości blokady ekranu Usługodawca zaufania może sprawdzić, czy urządzenie ma skonfigurowaną blokadę ekranu o odpowiedniej jakości, zanim przyzna dostęp. Tak Tak Tak Tak
    Włączone opcje programisty Po włączeniu opcji programisty pośrednik zaufania może zidentyfikować urządzenie jako mające szerszą powierzchnię ataku. Tak Tak Tak Tak
    Czy włączono DNS over TLS Broker zaufania może wykorzystać tę funkcję, aby upewnić się, że tryb prywatnego DNS jest włączony. Tak Tak Tak Tak
    SafetyNet Bezpieczne przeglądanie Broker zaufania może sprawdzić, czy dany adres URL został sklasyfikowany przez Google jako znane zagrożenie. Tak Tak Tak Tak
    Zewnętrzny uchwyt na nośniki danych Usługa zaufania może być powiadamiana o zamontowaniu pamięci zewnętrznej Tak Tak Tak Tak
    UsageStatsManager Usługodawca zaufania może analizować wzorce korzystania z poszczególnych aplikacji Tak Tak Tak Tak1
    Logowanie zabezpieczeń Broker zaufania może wykorzystać te dane w ramach swojego kontekstowego mechanizmu, aby zapewnić zgodność i utworzyć odcisk palca oparty na zachowaniu. Tak Tak2 Tak2 Nie dotyczy
    Logowanie sieciowe Broker zaufania może wykorzystać te dane w ramach swojego kontekstowego mechanizmu, aby zapewnić zgodność i utworzyć odcisk palca oparty na zachowaniu. Tak Tak2 Tak2 Nie dotyczy
    NetworkStatsManager Broker zaufania może wysyłać zapytania dotyczące wykorzystania sieci przez aplikację w określonym przedziale czasu Tak Tak Tak2 Tak1
    Widoczność pakietu (lista wszystkich aplikacji na urządzeniu) Broker zaufania może zapytać, jakie aplikacje są zainstalowane na urządzeniu Tak Tak3 Tak3 Tak
    Czytaj Stan telefonu Broker zaufania może uzyskać informacje o sieci komórkowej, stanie trwających połączeń i liście PhoneAccount zarejestrowanych na urządzeniu. Tak Tak Tak Tak
    Kiedy urządzenie zostało ostatnio ponownie uruchomione Broker zaufania może uzyskać informacje o czasie działania systemu Tak Tak Tak Tak
    Uzyskaj dostęp do kont Broker zaufania może wykorzystać tę funkcję, aby uzyskać dostęp do listy kont w usłudze Konta. Tak Tak3 Tak3 Tak1
    Monitorowanie znacznych zmian poziomu baterii Broker zaufania może monitorować znaczne zmiany poziomu naładowania baterii Tak Tak Tak Tak
    Lokalizacja (drobna, gruba itp.) Broker zaufania ma dostęp do fizycznej lokalizacji urządzenia. Tak Tak Tak1 Tak1

    1 Za zgodą użytkownika

    2 Tylko profil służbowy

    3 Dostęp ograniczony do informacji z profilu służbowego

    Broker zaufania może uzyskać dostęp do informacji PackageInfo w module com.google.android.modulemetadata i pobrać z niego: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
            }
    }
    

    Zwrócony ciąg znaków możesz przeanalizować na potrzeby obiektu Date, używając klasy 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
    }
    

    Pamiętaj, że w przypadku Androida 11 i nowszych musisz dodać deklarację zapytania w pliku AndroidManifest.xml, aby spełnić wymóg widoczności pakietu Androida:

    <manifest package="com.example.game">
        <queries>
            <package android:name="com.google.android.modulemetadata" />
        </queries>
        ...
    </manifest>

    Korzystając z tych metod, broker zaufania może sprawdzić, czy urządzenie jest zarządzane i który tryb zarządzania jest aktywny.

    Sprawdzanie zarządzania urządzeniami

    Aby sprawdzić, czy urządzenie jest zarządzane, użyj funkcji getActiveAdmins(). Jeśli ta metoda zwróci wartość null, urządzenie jest niezarządzane.

    Sprawdzanie, czy urządzenie jest w pełni zarządzane

    Aby sprawdzić, czy urządzenie jest w pełni zarządzane, użyj isDeviceOwnerApp().

    Sprawdzanie profilu służbowego na urządzeniu należącym do firmy

    Użyj isOrganizationOwnedDeviceWithManagedProfile(), aby sprawdzić, czy urządzenie korzysta z trybu zarządzania profilem służbowym na urządzeniach należących do firmy.

    Sprawdzanie profilu służbowego na urządzeniu osobistym

    Użyj isProfileOwnerApp(), aby sprawdzić, czy aplikacja działa w profilu służbowym, i sprawdź, czy isOrganizationOwnedDeviceWithManagedProfile() zwraca wartość false.