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