Контролируйте, какие приложения могут быть загружены пользователем устройства, контролируемого MDM / MAM

Я работаю с EMM (Enterprise Mobility Management) WSO2, который представляет собой решение MDM (управление мобильными устройствами) и MAM (управление мобильными приложениями) с открытым исходным кодом. В частности, для реализации программы BYOD (Bring Your Own Device). Я недоволен несколькими функциями.

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

1) Запрещая установку приложений из «Неизвестных источников». Это делается для того, чтобы пользователь не мог установить флажок «Разрешить установку приложений из неизвестных источников» или, по крайней мере, иметь возможность пометить его, если он это сделает.

2) В черный список добавляются только те приложения, которые можно загрузить из Play Store.

3) Еще лучше была бы возможность белого списка приложений, которые можно загрузить из Play Store.

4) И в идеальном мире я хотел бы иметь возможность смешивать как Enterprise App Store, так и указанные выше ограничения на загрузку приложений из Play Store. (Преимуществом этого будет возможность предлагать корпоративное программное обеспечение пользователям и при этом обеспечивать безопасный и удобный для пользователя опыт работы с Play Store.)

API администрирования устройств в Android явно не разрешает использование этих элементов управления. Тем не менее платные корпоративные решения MDM, такие как AirWatch, могут похвастаться этими функциями. Любая помощь приветствуется.


person milleraj66    schedule 23.06.2014    source источник


Ответы (2)


В большинстве случаев поддержка таких функций неоднородна. Например, Samsung SAFE предоставляет больше API (что позволит делать то, что вы хотите), а у Motorolla был дополнительный корпоративный API.

Таким образом, вы не можете реализовать его на обычном Android, но вы можете реализовать его на некоторых устройствах.

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

Обычно в решениях MDM сочетаются эти две вещи.

person Victor Ronin    schedule 23.06.2014
comment
Спасибо! Я мог бы жить с соблюдением требований, этот MDM уже обнаруживает любые установленные сторонние приложения, поэтому я могу с этим работать. Но как узнать, проверена ли настройка «Неизвестные источники». Я рылся в классе settings.system и нашел общедоступную static final String INSTALL_NON_MARKET_APPS . Но, похоже, это не для того, чтобы «получить» это значение. Знаете ли вы, есть ли способ определить, включен ли этот параметр? - person milleraj66; 24.06.2014
comment
Взгляните на это: stackoverflow.com/questions/17776976/ - person Victor Ronin; 24.06.2014

После долгих исследований я нашел несколько вещей, которыми хотел бы поделиться:

Текущий API администрирования устройств Android очень ограничен, в него включены следующие функции:

  • Ограничения пароля устройства
  • Отключить камеру
  • Заблокировать и стереть устройство
  • Шифрование устройства

Помимо этого (как описал Виктор Ронин в ответе выше), ваше приложение может только проверять соответствие, но не может обеспечивать его соблюдение.

Единственный способ применить политики, выходящие за рамки API администрирования устройств, — это иметь разрешения системного уровня. Единственный способ получить эти разрешения на системном уровне — это подписать ваше приложение OEM-производителем устройства, на котором работает ваше программное обеспечение. Именно так корпоративные решения MDM могут применять такие правила: их приложения фактически подписываются OEM-производителем, а затем возвращаются и распространяются. Когда вашему UID предоставлены системные разрешения, вы можете применять большинство политик, необходимых для защиты устройства в сценарии MDM.

Если интересно, посмотрите это видео, в котором описывается этот сценарий и подробный эксплойт на системном уровне.

person milleraj66    schedule 01.07.2014