Реалізація контейнеризації корпоративних даних у мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація контейнеризації корпоративних даних у мобільному додатку
Складний
~3-5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація контейнеризації корпоративних даних у мобільному додатку

Контейнеризація даних на мобільному—архітектурний принцип: корпоративні дані ізольовані від особистих та інших додатків, зашифровані незалежним ключем, доступ захищений окремою аутентифікацією. Не Docker-контейнери—data container на рівні мобільної ОС.

Платформенні механізми контейнеризації

iOS: Keychain Access Groups + Data Protection API. Keychain-записи з спільною accessGroup доступні кільком додаткам одного вендора—базовий механізм шеринга секретів. Для ізоляції наоборот: кожний додаток має власну Keychain секцію, недоступну без явної Access Group.

Data Protection класи визначають, коли дані розшифровуються:

// Файл доступний лише при розблокованому пристрої
let attrs: [FileAttributeKey: Any] = [
    .protectionKey: FileProtectionType.complete
]
try FileManager.default.setAttributes(attrs, ofItemAtPath: filePath)

// Для Keychain-записів
let query: [String: Any] = [
    kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly
]

kSecAttrAccessibleWhenUnlockedThisDeviceOnly—ключ привязаний до пристрою (не переноситься в iCloud Backup) та доступний лише при розблокованому екрані. Для корпоративних даних—мінімально достатній рівень захисту.

Android: Work Profile + EncryptedSharedPreferences + Keystore. Work Profile створює ізольований user space з окремим екземпляром Keystore. EncryptedSharedPreferences шифрує ключі та значення через бібліотеку Tink:

val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val sharedPreferences = EncryptedSharedPreferences.create(
    context,
    "corporate_prefs",
    masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

Для файлів—EncryptedFile із androidx.security:security-crypto:

val encryptedFile = EncryptedFile.Builder(
    context,
    File(context.filesDir, "corporate_document.enc"),
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

encryptedFile.openFileOutput().use { output ->
    output.write(corporateData)
}

Ізоляція на рівні мережі

Корпоративні дані не повинні утікати через особисті мережні канали. Реалізація через per-app VPN:

  • iOS: NEAppProxyProvider + MDM-конфігурація. MDM призначає VPN конкретному bundle ID. Трафік цього додатка йде через корпоративний VPN, особистих додатків—напрямки.
  • Android: VpnService з allowedApplications у VpnProfile. Лише перелічені пакети туннелюються.

Без per-app VPN альтернатива—NSURLSession з URLSessionConfiguration.ephemeral та принудовими Corporate Proxy налаштуваннями через ProxyDictionary.

Контейнер для файлів: власна реалізація

Для додатків із вимогою повного контролю над шифруванням (фінансові, медичні) іноді потрібен власний файловий контейнер—аналог VeraCrypt-тому на мобільному рівні.

Спрощена архітектура:

container.vault
├── header (256 bytes): версія, salt, PBKDF2 params, iv
├── index.enc: CBOR-маніфест (ім'я, розмір, offset, per-file iv)
└── data.blob: конкатенація зашифрованих файлів (AES-256-GCM, per-file key)

Мастер-ключ деривується з біометрії через LAContext.evaluatePolicy + Keychain-зв'язка. Без біометрії—хеш пароля через Argon2. Контейнер відкривається при авторизації, закривається при applicationWillResignActive.

Захист від утечки через буфер обмену

UIPasteboard.general—глобальний, читається будь-яким додатком. Для корпоративних даних використовуємо UIPasteboard.withUniqueName()—приватний буфер з TTL:

let privatePasteboard = UIPasteboard.withUniqueName()
privatePasteboard.setData(corporateData, forPasteboardType: UTType.plainText.identifier)
privatePasteboard.setPersistent(false)
// Автоматично видаляється при наступному запуску або через TTL

На Android: ClipboardManager глобален до Android 10. З Android 10 додатки можуть читати clipboard лише у foreground—обмежує атаку. Додатково: очищуємо буфер при onPause якщо в нього була скопійована чутлива інформація.

Етапи роботи

Аналіз даних та рівнів чутливості → проектування схеми зберігання → реалізація encrypted storage (Keychain + EncryptedFile) → per-app VPN конфігурація → clipboard protection → тестування ізоляції (спроби прочитати дані з іншого додатка, з backup) → security audit → деплой.

Терміни: реалізація encrypted storage з Keychain/Keystore—3–4 тижні. Повний контейнер з per-app VPN, clipboard protection та security audit—8–12 тижнів. Вартість розраховується індивідуально.