Сигналы нулевого доверия

Android предоставляет различные сигналы устройства, которые администраторы могут использовать для определения уровня безопасности устройства. В модели безопасности с нулевым доверием эти сигналы используются для оценки того, следует ли разрешить устройству доступ к корпоративной информации.

Особенность Описание Полностью управляемые устройства Рабочий профиль на корпоративных устройствах Рабочий профиль на личных устройствах (BYOD) Неуправляемые устройства
Воспроизвести API целостности Трастовый брокер может получать следующие сигналы:
  • Целостность устройства
  • Целостность приложения
  • Подробности лицензии на игру
  • Детали среды, включая новый вердикт Play Protect
  • Да Да Да Да
    Наличие безопасного оборудования / Аттестация ключа Доверительный брокер может проверить, что его учетные данные PKI были сгенерированы и сохранены на защищенном оборудовании. Да Да Да Да
    Аттестация свойств устройства В рамках аттестации ключа свойства устройства могут быть включены в запись аттестации. Да Да Да Да
    Уровень исправлений безопасности устройства Доверительный брокер может проверить уровень исправлений безопасности ОС. Да Да Да Да
    Есть ли на устройстве ожидающий OTA Доверительный брокер может проверить, доступно ли ожидающее обновление ОС устройства. Да Да Да Н/Д
    Уровень основного обновления безопасности Доверительный брокер может прочитать уровень исправлений безопасности для установленного магистрального поезда. Да Да Да Да
    Идентификатор регистрации Доверительный брокер может получить доступ к уникальному идентификатору устройства, специфичному для этого предприятия. Этот идентификатор сохраняется при повторном создании рабочего профиля и сбросе настроек устройства. Да Да Да Н/Д
    Состояние управления (и управление приложением) Доверительный брокер может использовать это, чтобы определить, находится ли устройство под управлением. Да Да Да Н/Д
    Шифрование диска Доверительный брокер может проверить, зашифровано ли устройство (если требуется поддержка Android 8). Да Да Да Да
    Версия ОС Доверительный брокер может проверить версию ОС устройства и подтвердить, что она превышает определенную версию. Да Да Да Да
    Доступ к состоянию сети (состояние сети и состояние Wi-Fi) Доверительный брокер может получить информацию об активном состоянии сети (сотовой и Wi-Fi). Да Да Да Да
    Доступ к состоянию Wi-Fi ( Android 11 и более ранние версии , Android 12 и более поздние версии поддерживают как обратный вызов , так и подход по требованию ) Траст-брокер может получить информацию об активной сети Wi-Fi. Да Да Да Да
    Настройки прокси Доверительный брокер может получить информацию о текущих настройках HTTP-прокси по умолчанию. Да Да Да Да
    Проверка качества блокировки экрана Доверительный брокер может убедиться, что на устройстве настроена блокировка экрана определенного качества, прежде чем предоставлять доступ. Да Да Да Да
    Параметры разработчика включены Брокер доверия может идентифицировать устройство как имеющее более широкую поверхность атаки, если включены параметры разработчика. Да Да Да Да
    Включен ли DNS через TLS? Доверительный брокер может использовать это, чтобы гарантировать, что режим частного DNS включен. Да Да Да Да
    SafetyNet Безопасный просмотр Доверительный брокер может определить, был ли определенный URL-адрес классифицирован Google как известная угроза. Да Да Да Да
    Установлен внешний носитель Доверительный брокер может быть уведомлен о подключении внешнего хранилища. Да Да Да Да
    Менеджер статистики использования Траст-брокер может изучать модели использования отдельных приложений. Да Да Да Да 1
    Журналирование безопасности Доверительный брокер может использовать эти данные как часть своего контекстного механизма для обеспечения соответствия требованиям и создания отпечатков пальцев на основе поведения. Да Да 2 Да 2 Н/Д
    Сетевое журналирование Доверительный брокер может использовать эти данные как часть своего контекстного механизма для обеспечения соответствия требованиям и создания отпечатков пальцев на основе поведения. Да Да 2 Да 2 Н/Д
    Менеджер сетевой статистики Брокер доверия может запрашивать использование сети приложением в течение заданного интервала времени. Да Да Да 2 Да 1
    Видимость пакета (перечислить все приложения на устройстве) Брокер доверия может узнать, какие приложения установлены на устройстве. Да Да 3 Да 3 Да
    Чтение состояния телефона Доверительный брокер может получить информацию о мобильной сети, статус любых текущих вызовов и список учетных записей PhoneAccount, зарегистрированных на устройстве. Да Да Да Да
    Когда устройство в последний раз перезагружалось Трастовый брокер может обеспечить бесперебойную работу системы Да Да Да Да
    Получить аккаунты Трастовый брокер может использовать это для доступа к списку учетных записей в Службе учетных записей. Да Да 3 Да 3 Да 1
    Отслеживайте значительные изменения уровня заряда батареи Доверительный брокер может отслеживать значительные изменения уровня заряда батареи. Да Да Да Да
    Местоположение (точное, грубое и т. д.) Доверительный брокер может получить доступ к физическому местоположению устройства. Да Да Да 1 Да 1

    1 С согласия пользователя

    2 Только рабочий профиль

    3 Доступ ограничен информацией рабочего профиля.

    Брокер доверия может получить доступ к PackageInfo для модуля com.google.android.modulemetadata и получить оттуда 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
            }
    }
    

    Вы можете проанализировать возвращенную строку в объект Date , используя класс 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
    }
    

    Помните, что для Android 11 и более поздних версий вам необходимо добавить объявление запроса в файл AndroidManifest.xml чтобы обеспечить видимость пакета Android:

    <manifest package="com.example.game">
        <queries>
            <package android:name="com.google.android.modulemetadata" />
        </queries>
        ...
    </manifest>

    Доверительный брокер может использовать эти методы, чтобы проверить, находится ли устройство в режиме управления и какой режим управления активен.

    Проверьте управление устройствами

    Используйте getActiveAdmins() , чтобы проверить, находится ли устройство под управлением. Если этот метод возвращает null устройство неуправляемо.

    Проверьте наличие полностью управляемого устройства

    Используйте isDeviceOwnerApp() чтобы проверить, полностью ли управляемо устройство.

    Проверьте рабочий профиль на корпоративном устройстве

    Используйте isOrganizationOwnedDeviceWithManagedProfile() чтобы проверить, использует ли устройство режим управления рабочим профилем для корпоративных устройств.

    Проверьте рабочий профиль на личном устройстве

    Используйте isProfileOwnerApp() , чтобы проверить, работает ли приложение внутри рабочего профиля, и убедитесь, что isOrganizationOwnedDeviceWithManagedProfile() возвращает false .