Настройка Mobile Device Management (MDM) для корпоративного мобильного приложения
MDM — это не «поставить антивирус на телефон». Это протокол управления устройством с сервера, который позволяет принудительно устанавливать приложения, применять политики безопасности, удалять данные и контролировать конфигурацию без участия пользователя. Для корпоративного мобильного приложения MDM-интеграция — это разница между «сотрудник может деинсталлировать приложение» и «приложение всегда присутствует на устройствах парка».
Apple MDM Protocol и Managed Devices
Apple MDM построен на протоколе push-pull: MDM-сервер отправляет push-уведомление через APNs (MDM topic), устройство «тянет» команду с сервера, выполняет, отправляет результат. Все команды и ответы — XML plist по HTTPS.
Чтобы устройство стало управляемым:
- Supervised mode через Apple Configurator 2 или ABM (Apple Business Manager) — максимальный контроль. Только Supervised-устройства поддерживают блокировку удаления приложений, Silent Install без согласия пользователя, Single App Mode.
- User Enrollment (iOS 13+) — устройство принадлежит сотруднику (BYOD), MDM управляет только Managed Apple ID зоной. Приложения можно устанавливать принудительно в managed-пространство, личные данные недоступны.
Для корпоративного приложения на managed-устройстве ключевые MDM-команды:
| Команда | Описание |
|---|---|
InstallApplication |
Silent install из App Store VPP или enterprise IPA |
RemoveApplication |
Удаление с устройства без согласия |
LockDevice |
Немедленная блокировка экрана |
EraseDevice |
Factory reset — при краже/увольнении |
Restrictions |
Запрет AirDrop, iCloud backup, screenshot |
Managed App Configuration — механизм передачи конфигурации в приложение через MDM без хардкода. Приложение читает словарь из UserDefaults с суффиксом .managed:
let managedConfig = UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed")
let backendURL = managedConfig?["BackendURL"] as? String
let tenantID = managedConfig?["TenantID"] as? String
MDM-сервер передаёт AppConfiguration plist при install или через отдельную команду InstallApplication с ManifestURL. Сотрудник не видит и не меняет эти параметры.
Android Enterprise: Work Profile и Fully Managed
Android Enterprise — аналог Apple MDM, но с более гибкой моделью развёртывания.
Fully Managed Device (COBO — Corporate Owned Business Only). Устройство настраивается через DPC (Device Policy Controller) при первоначальном включении: QR-сканирование или NFC bump. DevicePolicyManager даёт полный контроль: установка приложений, сетевые политики, принудительный VPN, блокировка hardware-кнопок.
Work Profile (COPE/BYOD). Создаётся managed-профиль рядом с личным пространством. Корпоративные приложения — в Work Profile с отдельным лаунчером и иконкой-портфелем. IT-отдел управляет только Work Profile, личные данные недоступны.
Ключевой класс для Fully Managed — DevicePolicyManager:
val dpm = getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
val adminComponent = ComponentName(this, DeviceAdminReceiver::class.java)
// Принудительная установка пакетов
dpm.setAlwaysOnVpnPackage(adminComponent, VPN_PACKAGE, true, null)
// Блокировка удаления
dpm.setUninstallBlocked(adminComponent, TARGET_PACKAGE, true)
// Managed Config для приложения
val bundle = Bundle().apply {
putString("backend_url", "https://corp.example.com")
putString("tenant_id", "CORP-001")
}
dpm.setApplicationRestrictions(adminComponent, TARGET_PACKAGE, bundle)
Выбор MDM-сервера
| Решение | Платформы | Особенности |
|---|---|---|
| Microsoft Intune | iOS, Android, Windows | Azure AD интеграция, Conditional Access |
| Jamf Pro | iOS, macOS | Лучший для Apple-флота |
| VMware Workspace ONE | iOS, Android | MDM + MAM + VPN в одном |
| MobileIron (Ivanti) | iOS, Android | Mature enterprise, on-premise возможен |
| Open-source: MicroMDM | iOS only | Self-hosted, нет MDM UI |
Для гомогенного Apple-флота — Jamf. Для Microsoft-ориентированной инфраструктуры — Intune. Для смешанного парка с on-premise требованием — MobileIron/Ivanti или Workspace ONE.
Интеграция приложения с MDM: что нужно от разработчика
MDM управляет устройством, но приложение должно «знать» о своём managed-статусе:
- Проверять Managed App Configuration при каждом запуске и при
UIApplicationWillEnterForeground. - Реагировать на MDM Remote Wipe: очищать Keychain, базу данных, кэш.
- Поддерживать
openURLсхему для enrollment deeplink. - Если используется MAM SDK (Intune App SDK, Workspace ONE SDK) — интегрировать SDK для policy enforcement на уровне приложения, а не только устройства.
Этапы настройки
Инвентаризация устройств → выбор MDM-платформы → enrollment стратегия (ABM, QR, manual) → создание профилей и политик → настройка VPP/Managed Google Play для приложений → Managed App Configuration для корпоративного приложения → pilot group → rollout → мониторинг compliance.
Сроки: базовая настройка MDM для готового парка устройств — 2–4 недели. Полный rollout с интеграцией приложения, enrollment workflow и обучением IT-отдела — 6–10 недель. Стоимость рассчитывается индивидуально.







