Android dostarcza różnorodne sygnały z urządzeń, za pomocą których administratorzy mogą określać stan 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 osobistych | Urządzenia niezarządzane |
---|---|---|---|---|---|
Play Integrity API | Pośrednik zaufania może pobierać te sygnały: |
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 atestu można uwzględnić właściwości urządzenia atestu | Tak | Tak | Tak | Tak |
Urządzenie Poziom aktualizacji zabezpieczeń | Broker zaufania może zweryfikować poziom aktualizacji zabezpieczeń systemu operacyjnego | Tak | Tak | Tak | Tak |
Czy na urządzeniu są oczekujące aktualizacje OTA | Broker zaufania może sprawdzić, czy istnieje oczekująca aktualizacja systemu operacyjnego urządzenia dostępne | Tak | Tak | Tak | Nie dotyczy |
Poziom poprawki zabezpieczeń Mainline | Broker zaufania może odczytywać poziom poprawek zabezpieczeń dla zainstalowanych pociąg mainline | Tak | Tak | Tak | Tak |
Rejestracja Określony identyfikator | Broker zaufania ma dostęp do unikalnego identyfikatora urządzenia konkretnej firmy. Ten dokument tożsamości nie zostanie przywrócony po utworzeniu profilu służbowego ani w fabryce urządzenia resetuj | Tak | Tak | Tak | Nie dotyczy |
Stan zarządzania (i aplikacja do zarządzania) | Broker zaufania może użyć tego 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 | 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 zaufania może uzyskiwać informacje o aktywnej sieci (sieci komórkowe i Wi-Fi) | Tak | Tak | Tak | Tak |
Dostęp do stanu Wi-Fi (Android 11 i starszych, Android 12 i nowsze wersje obsługują zarówno oddzwanianie, 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żącym domyślnym kodzie HTTP ustawieniach serwera proxy. | Tak | Tak | Tak | Tak |
Sprawdzanie jakości blokady ekranu | Pośrednik zaufania może sprawdzić, czy urządzenie ma skonfigurowaną blokadę ekranu o odpowiedniej jakości, zanim przyzna dostęp. | Tak | Tak | Tak | Tak |
Dla programistów włączone opcje | Broker zaufania może określić, że urządzenie ma szerszą powierzchnię ataku, gdy opcje programisty są włączone | Tak | Tak | Tak | Tak |
Jest 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 nośnik danych zamontowany | Usługa zaufania może zostać powiadomiona 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 |
Bezpieczeństwo logowanie | Broker zaufania może wykorzystywać te dane w ramach swojego silnika kontekstowego, aby zapewnić zgodność z prawem 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ść z zasadami i utworzyć odcisk palca na podstawie zachowania | Tak | Tak2 | Tak2 | Nie dotyczy |
NetworkStatsManager | Broker zaufania może wysyłać zapytania o wykorzystanie sieci przez aplikację w danym okresie interwał | Tak | Tak | Tak2 | Tak1 |
Przesyłka Widoczność (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ń oraz liście kont telefonicznych zarejestrowanych na urządzeniu. | Tak | Tak | Tak | Tak |
Kiedy urządzenie zostało ostatnio ponownie uruchomione | Broker zaufania może zapewnić czas działania systemu | Tak | Tak | Tak | Tak |
Pobierz konta | Broker zaufania może wykorzystać to do uzyskania dostępu do listy kont w usłudze Konta. | Tak | Tak3 | Tak3 | Tak1 |
Monitorowanie znaczących zmian poziomu naładowania baterii | Broker zaufania może monitorować istotne zmiany w poziomie baterii | Tak | Tak | Tak | Tak |
Lokalizacja (drobna, gruba itp.) | Broker zaufania może uzyskać 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 dla
com.google.android.modulemetadata
i stamtąd pobierz
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ć w obiekcie 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 w Androidzie:
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
Pobieranie stanu zarządzania
Broker zaufania może używać tych metod, aby sprawdzić, czy urządzenie jest zarządzane który tryb zarządzania jest aktywny.
Sprawdź dostępne funkcje zarządzania urządzeniami
Użyj funkcji getActiveAdmins(), aby sprawdzić, czy urządzenie jest zarządzane. Jeśli ta metoda zwróci wartość null
, urządzenie jest niezarządzane.
Sprawdź, czy jest w pełni zarządzane urządzenie
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 należącym do użytkownika
Użyj polecenia isProfileOwnerApp()
, aby sprawdzić, czy aplikacja działa w profilu służbowym, i sprawdź, czy isOrganizationOwnedDeviceWithManagedProfile()
zwraca wartość false
.