Device Trust do Android Enterprise: indicadores disponíveis

O Device Trust do Android Enterprise disponibiliza um conjunto de indicadores de postura do dispositivo no Device que os aplicativos autorizados, incluindo os que estão na lista de permissões e os que receberam o papel COMPANION_APP (consulte Gerenciar papéis de aplicativos e Configuração de políticas), podem acessar para calcular uma pontuação de confiança para o dispositivo.

Cada campo de indicador em Device e as classes de modelo aninhadas incluem um método get*Metadata() correspondente que retorna Metadata, que informa qualquer Metadata.DataIssue encontrado ao recuperar o indicador (como permissões de manifesto ausentes).

Para saber como integrar o SDK da API Android Management ao seu aplicativo, consulte Device Trust do Android Enterprise: guia de integração.

Indicadores
Versão do SO
Device#getSoftwareInfo() retorna um objeto SoftwareInfo com detalhes da versão do SO (versões mais antigas geralmente têm mais vulnerabilidades):
Versão do Android Device Policy
SoftwareInfo#getAndroidDevicePolicyVersionCode() e SoftwareInfo#getAndroidDevicePolicyVersionName() retornam o código da versão e o nome da versão visível para o usuário do app Android Device Policy no dispositivo.
O dispositivo tem OTA pendente?
SoftwareInfo#getSystemUpdateInfo() retorna um SoftwareInfo.SystemUpdateInfo que indica se há uma atualização pendente do SO para o dispositivo (um proxy para saber se o dispositivo está vulnerável a exploits):
Nível do patch de segurança do dispositivo
SoftwareInfo#getDeviceSecurityPatchInfos() retorna uma lista de objetos SoftwareInfo.SecurityPatchInfo (com getComponent() e getSecurityPatchLevel() retornando uma lista de objetos SecurityPatchLevel) para o nível do patch de segurança atual do dispositivo em tipos de SecurityPatchComponent atualizáveis:
Nível do patch de segurança publicado
SoftwareInfo#getPublishedSecurityPatchInfos() retorna uma lista de objetos SoftwareInfo.SecurityPatchInfo (com getComponent() e getSecurityPatchLevel() retornando uma lista de objetos SecurityPatchLevel) para o nível do patch de segurança publicado atual em todos os tipos de SecurityPatchComponent atualizáveis:
Detalhes do app
Device#getApplicationReports() retorna detalhes sobre todos os aplicativos instalados para apps de extensibilidade e aplicativos de chamada com o papel COMPANION_APP em um dispositivo gerenciado pela AMAPI (consulte Gerenciar papéis de aplicativos e Configuração de política; quando chamados em um perfil de trabalho, os relatórios são limitados aos apps instalados no perfil de trabalho). Para todos os outros autores de chamada (como aplicativos na lista de permissões), Device#getApplicationReports() retorna detalhes apenas sobre os seguintes apps críticos:
  • com.android.chrome
  • com.google.android.gms
  • com.google.android.apps.work.clouddpc
  • com.android.vending
  • O pacote WebView atual do dispositivo (como com.google.android.webview)
Os detalhes são retornados como uma lista de objetos ApplicationReport que expõem:
Informações de hardware do dispositivo
Device#getHardwareInfo() retorna um objeto HardwareInfo que expõe:
Complexidade do bloqueio de tela
Device#getDeviceSettings() fornece DeviceSettings#getScreenLockComplexity(), retornando um valor DeviceSettings.ScreenLockComplexity que indica a complexidade do bloqueio de tela do usuário ou perfil atual.
Estado de gerenciamento (e app de gerenciamento)
As informações retornadas dependem do perfil em que o aplicativo está sendo executado. Para mais detalhes, consulte a tabela de estado de gerenciamento.
Criptografia de disco
DeviceSettings#getEncryptionStatus() retorna um valor DeviceSettings.EncryptionStatus que indica se o armazenamento do dispositivo está criptografado.
Acesso ao estado da rede (estado da rede e estado do Wi-Fi)
Device#getNetworkInfo() retorna um objeto NetworkInfo, e NetworkInfo#getNetworkParams() retorna uma lista de objetos NetworkInfo.NetworkParams com detalhes sobre todas as redes ativas no dispositivo:
VerifyApps do Google Play Protect
O DNS via TLS está ativado?
NetworkParams#getPrivateDnsState() retorna um valor PrivateDnsState que indica se o DNS particular é usado na rede.
Pacote WebView
SoftwareInfo#getWebviewPackage() retorna o nome do pacote atual do WebView.
Nome legível por humanos da empresa do provedor de gerenciamento
Em dispositivos gerenciados pela AMAPI, Device#getManagementProviderInfo() retorna um objeto ManagementProviderInfo, cujo método getBusinessName() fornece o nome comercial legível por humanos do provedor de gerenciamento. Esse campo não é definido em dispositivos não gerenciados ou gerenciados por um DPC personalizado.

Estado de gerenciamento

Os valores retornados para os indicadores de gerenciamento dependem do perfil em que o aplicativo está sendo executado. Para acessar indicadores no perfil pessoal, em um dispositivo não gerenciado ou em um dispositivo gerenciado por um DPC personalizado, seu aplicativo precisa estar na lista de permissões. Em um dispositivo totalmente gerenciado pela AMAPI ou em um perfil de trabalho, os aplicativos com o papel COMPANION_APP também podem acessar esses indicadores sem estar na lista de permissões (limitado aos indicadores do perfil de trabalho quando chamados em um perfil de trabalho).

Estado de gerenciamento Indicadores quando chamados no perfil pessoal Indicadores quando chamados no perfil de trabalho
Dispositivo não gerenciado ownership: PERSONALLY_OWNED
managementMode: UNMANAGED
managementAppPackageName: N/A
workProfileState:
N/A
Perfil de trabalho em um dispositivo pessoal (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:
Perfil de trabalho em dispositivos corporativos ownership: COMPANY_OWNED
managementMode: UNMANAGED
managementAppPackageName:N/A
workProfileState:
ownership: COMPANY_OWNED
managementMode: PROFILE_OWNER
managementAppPackageName: Package name of the Profile Owner application
workProfileState:
Dispositivo totalmente gerenciado N/A ownership: COMPANY_OWNED
managementMode: DEVICE_OWNER
managementAppPackageName: Package name of the Device Owner application
workProfileState: