Device Trust od Android Enterprise – dostępne sygnały

Zaufanie do urządzenia w Android Enterprise udostępnia zestaw sygnałów dotyczących stanu urządzenia na Device, do których autoryzowane aplikacje – w tym aplikacje z listy dozwolonych i aplikacje z przypisaną rolą COMPANION_APP (patrz Zarządzanie rolami aplikacji i Konfiguracja zasad) – mogą mieć dostęp, aby obliczyć ocenę zaufania urządzenia.

Każde pole sygnału w klasie Device i jej zagnieżdżonych klasach modelu zawiera odpowiednią metodę get*Metadata(), która zwraca obiekt Metadata. Obiekt ten zgłasza wszelkie błędy Metadata.DataIssue napotkane podczas pobierania sygnału (np. brak uprawnień w pliku manifestu).

Informacje o tym, jak zintegrować pakiet SDK interfejsu Android Management API z aplikacją, znajdziesz w przewodniku po integracji Device Trust od Android Enterprise.

Sygnały
Wersja systemu operacyjnego
Device#getSoftwareInfo() zwraca obiekt SoftwareInfo zawierający szczegółowe informacje o wersji systemu operacyjnego (starsze wersje systemu operacyjnego zwykle mają więcej luk w zabezpieczeniach):
Wersja Android Device Policy
SoftwareInfo#getAndroidDevicePolicyVersionCode() i SoftwareInfo#getAndroidDevicePolicyVersionName() zwracają kod wersji i widoczną dla użytkownika nazwę wersji aplikacji Android Device Policy na urządzeniu.
Czy na urządzeniu jest oczekująca aktualizacja OTA?
SoftwareInfo#getSystemUpdateInfo() zwraca SoftwareInfo.SystemUpdateInfo wskazujący, czy jest oczekująca aktualizacja systemu operacyjnego urządzenia (co wskazuje, czy urządzenie jest podatne na exploity):
Poziom aktualizacji zabezpieczeń urządzenia
SoftwareInfo#getDeviceSecurityPatchInfos() zwraca listę obiektów SoftwareInfo.SecurityPatchInfo (przy czym getComponent() i getSecurityPatchLevel() zwracają listę obiektów SecurityPatchLevel) dla bieżącego poziomu aktualizacji zabezpieczeń urządzenia w przypadku typów SecurityPatchComponent, które można aktualizować:
Opublikowany poziom aktualizacji zabezpieczeń
SoftwareInfo#getPublishedSecurityPatchInfos() zwraca listę obiektów SoftwareInfo.SecurityPatchInfo (przy czym getComponent() i getSecurityPatchLevel() zwracają listę obiektów SecurityPatchLevel) dla aktualnie opublikowanego poziomu aktualizacji zabezpieczeń w przypadku typów SecurityPatchComponent, które można zaktualizować:
Szczegóły aplikacji o znaczeniu krytycznym
Device#getApplicationReports() zwraca szczegółowe informacje o wszystkich zainstalowanych aplikacjach do aplikacji rozszerzalności i aplikacji wywołujących z rolą COMPANION_APP na urządzeniu zarządzanym przez AMAPI (patrz Zarządzanie rolami aplikacji i Konfiguracja zasad; w przypadku wywołania w profilu służbowym raporty są ograniczone do aplikacji zainstalowanych w profilu służbowym). W przypadku wszystkich innych wywołujących (takich jak aplikacje z listy dozwolonych) Device#getApplicationReports() zwraca szczegółowe informacje tylko o tych aplikacjach o znaczeniu krytycznym:
  • com.android.chrome
  • com.google.android.gms
  • com.google.android.apps.work.clouddpc
  • com.android.vending
  • Obecny pakiet WebView urządzenia (np. com.google.android.webview)
Szczegóły są zwracane jako lista obiektów ApplicationReport, które zawierają:
Informacje o sprzęcie urządzenia
Device#getHardwareInfo() zwraca obiekt HardwareInfo, który udostępnia:
Złożoność blokady ekranu
Device#getDeviceSettings() udostępnia DeviceSettings#getScreenLockComplexity(), zwracając wartość DeviceSettings.ScreenLockComplexity, która wskazuje, jak złożona jest blokada ekranu bieżącego użytkownika lub profilu.
Stan zarządzania (i aplikacja do zarządzania)
Zwracane informacje zależą od profilu, w którym działa aplikacja. Więcej informacji znajdziesz w tabeli stanów zarządzania.
Szyfrowanie dysku
DeviceSettings#getEncryptionStatus() zwraca wartość DeviceSettings.EncryptionStatus wskazującą, czy pamięć urządzenia jest zaszyfrowana.
Dostęp do stanu sieci (stan sieci i stan Wi-Fi)
Device#getNetworkInfo() zwraca obiekt NetworkInfo, a  NetworkInfo#getNetworkParams() zwraca listę obiektów NetworkInfo.NetworkParams ze szczegółowymi informacjami o wszystkich aktywnych sieciach na urządzeniu:
Google Play Protect VerifyApps
Czy tryb DNS-over-TLS jest włączony
NetworkParams#getPrivateDnsState() zwraca wartość PrivateDnsState wskazującą, czy w sieci jest używany prywatny DNS.
Pakiet WebView
SoftwareInfo#getWebviewPackage() zwraca nazwę bieżącego pakietu WebView.
Zrozumiała dla człowieka nazwa firmy dostawcy usług zarządzania
Na urządzeniach zarządzanych przez AMAPI metoda Device#getManagementProviderInfo() zwraca obiekt ManagementProviderInfo, którego metoda getBusinessName() podaje czytelną dla człowieka nazwę firmy dostawcy usług zarządzania. To pole nie jest ustawione na urządzeniach niezarządzanych ani na urządzeniach zarządzanych przez niestandardowy kontroler zasad urządzeń.

Stan zarządzania

Wartości zwracane w przypadku sygnałów zarządzania zależą od profilu, w którym działa aplikacja. Aby uzyskać dostęp do sygnałów z profilu osobistego na urządzeniu niezarządzanym lub zarządzanym przez niestandardowy kontroler zasad urządzeń, aplikacja musi znajdować się na liście dozwolonych. Na w pełni zarządzanym urządzeniu zarządzanym przez AMAPI lub w profilu służbowym aplikacje z przypisaną rolą COMPANION_APP mogą też uzyskiwać dostęp do tych sygnałów bez umieszczania ich na liście dozwolonych (ograniczone do sygnałów z profilu służbowego, gdy są wywoływane w profilu służbowym).

Stan zarządzania Sygnały wywoływane z profilu osobistego Sygnały wywoływane z profilu służbowego
Urządzenie niezarządzane ownership: PERSONALLY_OWNED
managementMode: UNMANAGED
managementAppPackageName: N/A
workProfileState:
N/A
Profil służbowy na urządzeniu należącym do pracownika (BYOD) ownership: PERSONALLY_OWNED
managementMode: UNMANAGED
managementAppPackageName: N/A
workProfileState:
ownership: PERSONALLY_OWNED
managementMode: PROFILE_OWNER
managementAppPackageName: Package name of the Profile Owner application
workProfileState:
Profil służbowy na urządzeniu należącym do firmy ownership: COMPANY_OWNED
managementMode: UNMANAGED
managementAppPackageName:N/A
workProfileState:
ownership: COMPANY_OWNED
managementMode: PROFILE_OWNER
managementAppPackageName: Package name of the Profile Owner application
workProfileState:
Urządzenie w pełni zarządzane N/A ownership: COMPANY_OWNED
managementMode: DEVICE_OWNER
managementAppPackageName: Package name of the Device Owner application
workProfileState: