Настройка Mobile Application Management (MAM) для корпоративного додатка
MDM управляє пристроєм цілком. MAM управляє лише додатком—і це принципіальна різниця для BYOD-сценарію, де сотрудник не готовий віддавати IT-відділу контроль над особистим телефоном. MAM без MDM-реєстрації пристрою—саме той інструмент, який дозволяє захистити корпоративні дані всередину додатка, не торкаючись особистого простору користувача.
MAM без MDM: як це працює
Класичний MAM-сценарій на базі Microsoft Intune: сотрудник встановлює додаток з App Store/Google Play на особистий телефон, входить з корпоративним Azure AD акаунтом—і з цього моменту політики MAM застосовуються до даних цього додатка. MDM-профіль на пристрій не встановлюється.
Політики MAM, які можна застосувати без управління пристроєм:
- Запрет copy-paste корпоративних даних у особисті додатки.
- Принудове шифрування файлів, збережених додатком.
- Вимога PIN або біометрії для доступу до додатка (окремо від системної).
- Блокування screenshot у додатку.
- Remote selective wipe—видалення лише корпоративних даних при звільненні, без wipe особистих фото.
- Запрет відкриття посилань у особистому браузері (лише у Managed Browser / Edge).
Intune App SDK: інтеграція на iOS
Для роботи MAM-політик Intune через SDK—додаток повинен бути явно інтегрований. SDK перехватує системні API (clipboard, file sharing, screenshot detection) та застосовує політики.
Додавання через CocoaPods:
pod 'MSAL'
pod 'IntuneMAMSwift'
Мінімальна ініціалізація в AppDelegate:
import IntuneMAMSwift
@main
class AppDelegate: UIResponder, UIApplicationDelegate, IntuneMAMPolicyDelegate {
func application(_ app: UIApplication, didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IntuneMAMPolicyManager.instance().delegate = self
return IntuneMAMPolicyManager.instance().didFinishLaunching(withOptions: options)
}
func identitySwitchRequired(_ identity: String, forReason reason: IntuneMAMPolicyManagerIdentitySwitchReason, completionHandler completion: @escaping IntuneMAMAddIdentityCompletionHandler) {
// Обробка смени identity при multi-account
completion(.allowed)
}
}
Після інтеграції SDK UIPasteboard автоматично обмежується політикою, UIDocumentPickerViewController—теж. Додаток сам по собі не змінюється—MAM-рушій працює через method swizzling системних класів.
Критично: SDK вимагає MSAL (Microsoft Authentication Library) для отримання MAM-токена. Без корректної реєстрації додатка в Azure AD (App Registration + MAM-дозволи) політики не застосовуються навіть при наявності SDK. Типова помилка при першій інтеграції—політики «не працюють» саме через неправильну App Registration або відсутність Intune App Protection Policy в Azure Portal.
MAM на Android: Intune App SDK
// build.gradle
implementation 'com.microsoft.intune.mam:android-mam-sdk:10.0.0'
Для Android SDK найважливіша правильна конфігурація MAMApplication:
class MyApplication : MAMApplication() {
override fun onCreate() {
super.onCreate()
// MAM SDK перехватує Context, Activity, ContentProvider
}
}
Android MAM SDK використовує MAMActivity замість AppCompatActivity, MAMContentProvider замість ContentProvider. Це означає, що інтеграція потребує рефакторингу базових класів—неможливо просто додати залежність без змін коду.
Якщо переписувати базові класи небажано (legacy-додаток, велика кодова база), є альтернатива—App Wrapping Tool. Post-build інструмент, який додає MAM-логіку у скомпільований APK/IPA без змін вихідного коду. Точність застосування політик трохи менша, але для базового набору правил працює.
MAM-політики без Intune: альтернативи
Якщо Intune не в стеку, але потрібні аналогічні обмеження:
- VMware Workspace ONE SDK — аналог Intune SDK, інтегрується подібно.
- MobileIron AppConnect — контейнер на рівні додатка з окремим шифруванням.
-
Власна реалізація через
UIPasteboard.withUniqueName(), відключення screenshot черезUIScreen.isCaptured, шифрування файлів черезCryptoKitіз ключем у Keychain. Підходить для випадків, коли MAM-сервер не потрібен, але базові обмеження необхідні.
Selective Wipe: механіка видалення даних
Remote selective wipe по MAM-політиці—це не factory reset. Видаляються лише дані додатка: Keychain-записи з тегом appID, файли в Application Support/, кеш, cookies у WKWebView. Особисті фото, контакти, інші додатки не торкаються.
Реалізація wipe-обробника в SDK:
// IntuneMAMPolicyDelegate
func wipeDataForAccount(_ account: String) -> Bool {
DataVault.shared.deleteAll()
KeychainManager.shared.clearCorporateKeys()
URLCache.shared.removeAllCachedResponses()
return true
}
IT-адміністратор ініціює wipe з Intune Portal одним кліком. Наступний запуск додатка на пристрої—даних немає, потрібна повторна авторизація.
Етапи роботи
Аудит вимог до політик → вибір MAM-платформи → настройка Azure AD / EMM-консолі → розробка App Registration → інтеграція SDK на iOS та Android → тестування всіх політик (clipboard, screenshot, save, wipe) → UAT з IT-командою → rollout.
Терміни: інтеграція Intune MAM SDK у готовий додаток—3–5 тижнів на платформу. Повний MAM-rollout з настройкою політик та обучанням—6–8 тижнів. Вартість розраховується індивідуально.







