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: |
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
Pobierz wersję Mainline
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>
Pobieranie stanu zarządzania
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
.