Sygnały braku zaufania

Android zapewnia wiele sygnałów z urządzenia, na podstawie których administratorzy mogą określić stan zabezpieczeń urządzenia. W modelu zabezpieczeń „zero zaufania” sygnały te służą do oceny, czy urządzenie powinno mieć dostęp do informacji firmowych.

Funkcja Opis Urządzenia w pełni zarządzane Profil służbowy na urządzeniach należących do firmy Profil służbowy na urządzeniach należących do firmy Urządzenia niezarządzane
Play Integrity API Broker zaufania może pobierać te sygnały:
  • Integralność urządzenia
  • Integralność aplikacji
  • Szczegóły licencji Google Play
  • Szczegóły środowiska, w tym nowa ocena Play Protect
  • Tak Tak Tak Tak
    Dostępny bezpieczny sprzęt / atestacja klucza Broker zaufania może sprawdzić, czy jego dane logowania w PKI zostały wygenerowane i zapisane na bezpiecznym sprzęcie Tak Tak Tak Tak
    Atest właściwości urządzenia W ramach atestu w ramach poświadczania właściwości urządzenia można uwzględnić w rekordzie atestu Tak Tak Tak Tak
    Poziom aktualizacji zabezpieczeń urządzenia Broker zaufania może weryfikować poziom poprawki zabezpieczeń systemu operacyjnego Tak Tak Tak Tak
    Czy urządzenie oczekuje na aktualizacje OTA Broker zaufania może sprawdzić, czy jest dostępna oczekująca aktualizacja systemu operacyjnego urządzenia Tak Tak Tak Nie dotyczy
    Poziom aktualizacji zabezpieczeń Mainline Broker zaufania może odczytywać poziom poprawki zabezpieczeń dla zainstalowanego pociągu głównego Tak Tak Tak Tak
    Identyfikator konkretnej rejestracji Broker zaufania ma dostęp do unikalnego identyfikatora urządzenia specyficznego dla danej firmy. Ten identyfikator przetrwa ponowne utworzenie profilu służbowego i przywrócenie na urządzeniu ustawień fabrycznych Tak Tak Tak Nie dotyczy
    Stan zarządzania (aplikacja i zarządzanie nią) Broker zaufania może użyć tych danych do określenia, 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 potrzebna jest obsługa Androida 8) Tak Tak Tak Tak
    Wersja systemu operacyjnego Broker zaufania może sprawdzić wersję systemu operacyjnego urządzenia i potwierdzić, że przekracza ona określoną wersję Tak Tak Tak Tak
    Dostęp Stan sieci (stan sieci i stan sieci Wi-Fi) Broker zaufania 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 wersje obsługują zarówno wywołanie zwrotne, jak i 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 Broker zaufania może zadbać o to, aby przed przyznaniem dostępu na urządzeniu została skonfigurowana blokada ekranu o określonej jakości Tak Tak Tak Tak
    Włączone opcje programisty Po włączeniu opcji dla programistów broker zaufania może zidentyfikować urządzenie jako mające większą powierzchnię ataku Tak Tak Tak Tak
    Czy włączono DNS przez TLS Broker zaufania może to wykorzystać do włączenia trybu prywatnego DNS Tak Tak Tak Tak
    SafetyNet Bezpieczne przeglądanie Broker zaufania może określić, czy dany adres URL został sklasyfikowany przez Google jako znany zagrożenie. Tak Tak Tak Tak
    Zewnętrzne Podłączone do nośnika broker zaufania można powiadamiać o podłączeniu pamięci zewnętrznej Tak Tak Tak Tak
    UsageStatsManager Broker zaufania może analizować wzorce użytkowania poszczególnych aplikacji Tak Tak Tak Tak1
    Logowanie zabezpieczeń Broker zaufania może wykorzystać te dane jako część silnika kontekstowego, aby zapewnić zgodność z przepisami i utworzyć odcisk cyfrowy oparty na zachowaniach Tak Tak2 Tak2 Nie dotyczy
    Rejestrowanie sieciowe Broker zaufania może wykorzystać te dane jako część silnika kontekstowego, aby zapewnić zgodność z przepisami i utworzyć odcisk cyfrowy oparty na zachowaniach Tak Tak2 Tak2 Nie dotyczy
    NetworkStatsManager Broker zaufania może wysyłać zapytania o wykorzystanie sieci przez aplikację w danym przedziale czasu Tak Tak Tak2 Tak1
    Widoczność pakietów (lista wszystkich aplikacji na urządzeniu) Broker zaufania może wysyłać zapytania o aplikacje instalowane na urządzeniu Tak Tak3 Tak3 Tak
    Odczyt stanu telefonu Broker zaufania może otrzymywać informacje o sieci komórkowej, stan trwających połączeń i listę PhoneAccount zarejestrowanych na urządzeniu. Tak Tak Tak Tak
    Kiedy urządzenie zostało ostatnio ponownie uruchomione Broker zaufania może zapewnić dostępność systemu Tak Tak Tak Tak
    Pobierz konta Broker zaufania może to wykorzystać, aby uzyskać dostęp do listy kont w usłudze Konta Tak Tak3 Tak3 Tak1
    Monitorowanie istotnych zmian poziomu baterii Broker zaufania może monitorować istotne zmiany w poziomie baterii Tak Tak Tak Tak
    Lokalizacja (dokładna, przybliżona 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 PackageInfo modułu com.google.android.modulemetadata i pobrać stamtąd 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ć do postaci obiektu Date za pomocą 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 wersji musisz dodać deklarację zapytania do pliku AndroidManifest.xml, aby zapewnić zgodność z widocznością pakietów Androida:

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

    Broker zaufania może użyć tych metod, aby sprawdzić, czy urządzenie jest w trybie zarządzania i który ten tryb jest aktywny.

    Sprawdź, czy urządzenie jest zarządzane

    Użyj funkcji getActiveAdmins(), by sprawdzić, czy urządzenie jest zarządzane. Jeśli ta metoda zwraca null, urządzenie nie jest zarządzane.

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

    Użyj narzędzia isDeviceOwnerApp(), aby sprawdzić, czy urządzenie jest w pełni zarządzane.

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

    Skorzystaj z narzędzia 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 należącym do firmy

    Użyj funkcji isProfileOwnerApp(), aby sprawdzić, czy urządzenie ma profil służbowy, i upewnić się, że isOrganizationOwnedDeviceWithManagedProfile() zwraca wartość false.