Доступные сигналы Device Trust от Android Enterprise

Device Trust от Android Enterprise предоставляет набор сигналов о состоянии устройства на Device, к которым могут обращаться авторизованные приложения, в том числе приложения из белого списка и приложения с назначенной ролью COMPANION_APP (см. Как управлять ролями приложений и Настройка правил), чтобы рассчитать оценку доверия для устройства.

Каждое поле сигнала в Device и его вложенных классах модели включает соответствующий метод get*Metadata(), возвращающий Metadata, который сообщает о любых Metadata.DataIssue, возникших при получении сигнала (например, об отсутствии разрешений манифеста).

Инструкции по интеграции Android Management API SDK в приложение можно найти в руководстве по интеграции Device Trust от Android Enterprise.

Сигналы
Версия ОС
Device#getSoftwareInfo() возвращает объект SoftwareInfo, содержащий сведения о версии ОС (в более старых версиях ОС обычно больше уязвимостей):
Версия Android Device Policy
SoftwareInfo#getAndroidDevicePolicyVersionCode() и SoftwareInfo#getAndroidDevicePolicyVersionName() возвращают код версии и видимое пользователю название версии приложения Android Device Policy на устройстве.
Есть ли на устройстве ожидающее беспроводное обновление
SoftwareInfo#getSystemUpdateInfo() возвращает SoftwareInfo.SystemUpdateInfo, указывающий, есть ли для устройства ожидающее обновление ОС (прокси-сервер, определяющий, уязвимо ли устройство для эксплойтов):
Уровень исправления системы безопасности
SoftwareInfo#getDeviceSecurityPatchInfos() возвращает список объектов SoftwareInfo.SecurityPatchInfo (а getComponent() и getSecurityPatchLevel() – список объектов SecurityPatchLevel) для текущего уровня исправления системы безопасности на устройстве по обновляемым типам SecurityPatchComponent:
Опубликованный уровень исправления системы безопасности
SoftwareInfo#getPublishedSecurityPatchInfos() возвращает список объектов SoftwareInfo.SecurityPatchInfo (а getComponent() и getSecurityPatchLevel() – список объектов SecurityPatchLevel) для текущего опубликованного уровня исправления системы безопасности по обновляемым типам SecurityPatchComponent:
Важные сведения о приложении
Device#getApplicationReports() возвращает сведения обо всех установленных приложениях приложениям расширяемости и вызывающим приложениям с ролью COMPANION_APP на устройстве, управляемом AMAPI (см. разделы Управление ролями приложений и Настройка правил; при вызове в рабочем профиле отчеты ограничиваются приложениями, установленными в рабочем профиле). Для всех остальных вызывающих объектов (например, приложений из белого списка) Device#getApplicationReports() возвращает сведения только о следующих критически важных приложениях:
  • com.android.chrome
  • com.google.android.gms
  • com.google.android.apps.work.clouddpc
  • com.android.vending
  • Текущий пакет WebView на устройстве (например, com.google.android.webview).
Сведения возвращаются в виде списка объектов ApplicationReport, которые содержат:
  • getPackageName()
  • getVersionName() и getLongVersionCode()
  • getSigningKeyCertSha256Fingerprints()
  • getApplicationSource() (значение ApplicationSource) и getInstallerPackageName()
  • getLastUpdateTime()
Информация об аппаратном обеспечении устройства
Device#getHardwareInfo() возвращает объект HardwareInfo, который содержит:
Сложность блокировки экрана
Device#getDeviceSettings() предоставляет DeviceSettings#getScreenLockComplexity(), возвращая значение DeviceSettings.ScreenLockComplexity, которое указывает, насколько сложна блокировка экрана текущего пользователя или профиля.
Статус управления (и управляющее приложение)
Возвращаемая информация зависит от профиля, в котором запущено приложение. Подробные сведения приведены в таблице статусов управления.
Шифрование диска
DeviceSettings#getEncryptionStatus() возвращает значение DeviceSettings.EncryptionStatus, указывающее, зашифровано ли хранилище устройства.
Доступ к состоянию сети (состояние сети и Wi-Fi)
Device#getNetworkInfo() возвращает объект NetworkInfo, а NetworkInfo#getNetworkParams() – список объектов NetworkInfo.NetworkParams с информацией обо всех активных сетях на устройстве:
Проверка приложений в Google Play Защите
Включен ли протокол DNS-over-TLS
NetworkParams#getPrivateDnsState() возвращает значение PrivateDnsState, указывающее, используется ли в сети частный DNS-сервер.
Пакет WebView
SoftwareInfo#getWebviewPackage() возвращает название текущего пакета WebView.
Человекочитаемое название компании поставщика услуг по управлению.
На устройствах, управляемых с помощью AMAPI, метод Device#getManagementProviderInfo() возвращает объект ManagementProviderInfo, метод getBusinessName() которого предоставляет человекочитаемое название поставщика услуг управления. Это поле не задано на неуправляемых устройствах или устройствах, управляемых специальным контроллером политики устройств.

Статус управления

Значения, возвращаемые для сигналов управления, зависят от профиля, в котором запущено приложение. Чтобы получить доступ к сигналам из личного профиля на неуправляемом устройстве или на устройстве, управляемом пользовательским контроллером политики устройств, ваше приложение должно быть в белом списке. На полностью управляемом устройстве, управляемом AMAPI, или в рабочем профиле приложения, которым назначена роль COMPANION_APP, также могут получать доступ к этим сигналам, не находясь в белом списке (ограничено сигналами из рабочего профиля при вызове внутри рабочего профиля).

Статус управления Сигналы при вызове из личного профиля Сигналы при вызове из рабочего профиля
Неуправляемое устройство ownership: PERSONALLY_OWNED
managementMode: UNMANAGED
managementAppPackageName: N/A
workProfileState:
N/A
Рабочий профиль на личном устройстве (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:
Рабочий профиль на корпоративном устройстве ownership: COMPANY_OWNED
managementMode: UNMANAGED
managementAppPackageName:N/A
workProfileState:
ownership: COMPANY_OWNED
managementMode: PROFILE_OWNER
managementAppPackageName: Package name of the Profile Owner application
workProfileState:
Полностью управляемое устройство N/A ownership: COMPANY_OWNED
managementMode: DEVICE_OWNER
managementAppPackageName: Package name of the Device Owner application
workProfileState: