Как безопасно удалить или заблокировать мобильное приложение 1С на Android-устройстве уволенного сотрудника?

Программист 1С v8.3 (Управляемые формы) Торговля и дистрибуция
← На главную

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

В рамках данной статьи мы подробно разберем, как решить проблему присутствия корпоративного приложения и данных на устройстве ушедшего сотрудника. Мы проанализируем технические ограничения операционной системы Android, рассмотрим практическое решение внутри платформы 1С, выявим его уязвимости, предложим надежный офлайн-алгоритм самоликвидации данных, а также рассмотрим современные стандарты администрирования мобильных устройств (MDM/EMM).

Почему нельзя просто взять и удалить приложение средствами 1С?

С технической точки зрения, разработчики часто ищут способ вызвать команду удаления самого apk-пакета приложения из кода мобильной платформы. Однако операционная система Android построена на строгих принципах безопасности, которые существенно ужесточились в последних версиях ОС:

  1. Изоляция приложений (Sandbox): Каждое приложение работает в своей изолированной песочнице. Оно не имеет прав на управление другими программами и операционной системой в целом.
  2. Концепция Scoped Storage (Изолированное хранилище): Начиная с Android 10 и 11, приложения жестко ограничены в доступе к файловой системе. Мобильная платформа 1С может беспрепятственно работать только со своей приватной директорией. Получить root-доступ на пользовательском устройстве без согласия владельца невозможно, а без этого инициировать полное удаление установленного пакета из системы нельзя.
  3. Запрет на самодеинсталляцию: Ни одно стандартное приложение в Android не может программно заставить ОС удалить саму себя в фоновом режиме без вывода стандартного диалогового окна подтверждения пользователю.

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

Решение 1. Программная очистка базы данных на стороне 1С (Решение с форума)

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

Рассмотрим пошагово, как реализовать этот механизм:

  1. При увольнении сотрудника в центральной базе устанавливается признак блокировки его учетной записи.
  2. При попытке очередной синхронизации мобильного приложения с сервером (через веб-сервис или HTTP-сервис) мобильное устройство передает свой идентификатор. Сервер возвращает статус блокировки.
  3. Получив данный статус, мобильное приложение выполняет отключение обмена, удаляет регистрацию изменений и инициирует метод УдалитьДанныеИнформационнойБазы().

Посмотрим на пример кода, который вызывается на мобильном устройстве при получении признака блокировки от сервера:


Процедура ОбработатьБлокировкуУстройства() Экспорт
    
    // Отключаем регистрацию изменений, чтобы не тратить ресурсы
    ПланыОбмена.Мобильные.УстановитьГлавныйУзел(Неопределено);
    
    // Очищаем базу данных мобильного устройства полностью
    Попытка
        УдалитьДанныеИнформационнойБазы();
        ЗавершитьРаботуСистемы(Ложь, Истина);
    Исключение
        ЗаписатьЛогОшибки(ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры

Метод УдалитьДанныеИнформационнойБазы() работает чрезвычайно быстро, так как он физически очищает таблицы базы данных SQLite, используемой мобильной платформой 1С, не тратя время на объектное удаление каждого элемента справочника или документа.

Для мгновенной отправки команды очистки (не дожидаясь, пока сотрудник сам запустит сеанс синхронизации) рекомендуется использовать механизм Push-уведомлений (через сервисы Google Cloud Messaging / Firebase Cloud Messaging). При получении специального push-сообщения мобильное приложение в фоновом режиме активируется и вызывает процедуру очистки.

Уязвимость решения и "Таймер мертвеца" (Dead Man's Switch)

Описанное выше решение имеет одну критическую уязвимость: оно полностью зависит от наличия интернет-соединения. Если уволенный сотрудник догадывается о возможной блокировке, он может перевести устройство в авиарежим ("в самолете") или просто извлечь SIM-карту. В этом случае приложение продолжит работать локально в офлайн-режиме, предоставляя злоумышленнику полный доступ ко всей базе клиентов и истории продаж.

Для устранения этой уязвимости в мобильное приложение необходимо внедрить алгоритм автономной защиты — "таймер мертвеца".

Суть алгоритма заключается в следующем: приложение должно регулярно подтверждать свою легитимность на сервере. Если подтверждения не было в течение установленного лимита времени, база данных уничтожается локально без каких-либо внешних команд.

Разберем реализацию этого алгоритма по шагам:

  1. В локальной константе мобильного приложения хранится дата и время последнего успешного сеанса обмена данными с сервером компании.
  2. В обработчике события ПриНачалеРаботыСистемы мобильного приложения прописывается проверка текущей даты.
  3. Если разница между текущим временем устройства и временем последнего успешного обмена превышает критический порог (например, 3 или 5 дней), система считает, что устройство скомпрометировано или сотрудник скрывает его от сети.
  4. Приложение запускает процедуру самоликвидации данных.

Проанализируем пример реализации в модуле управляемого приложения мобильного клиента или мобильного приложения:


Процедура ПриНачалеРаботыСистемы()
    
    // Задаем лимит работы в офлайне (в секундах)
    // 5 дней = 5 * 24 * 3600 = 432 000 секунд
    ДопустимыйИнтервалОфлайна = 432000; 
    
    ДатаПоследнегоОбмена = Константы.ДатаПоследнейСинхронизации.Получить();
    ТекущаяДатаУстройства = ТекущаяДата();
    
    Если ЗначениеЗаполнено(ДатаПоследнегоОбмена) Тогда
        
        ИнтервалБезОбмена = ТекущаяДатаУстройства - ДатаПоследнегоОбмена;
        
        Если ИнтервалБезОбмена > ДопустимыйИнтервалОфлайна Тогда
            
            // Превышен лимит автономности, уничтожаем данные
            ПоказатьПредупреждение(, "Превышен лимит автономной работы. Доступ заблокирован.");
            УдалитьДанныеИнформационнойБазы();
            ЗавершитьРаботуСистемы(Ложь, Истина);
            Возврат;
            
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

Важное примечание: Чтобы пользователь не мог обойти эту проверку, просто переведя системное время на смартфоне назад, рекомендуется записывать и сверять не только системное время, но и монотонный счетчик времени работы или проверять, чтобы новая дата запуска была строго больше даты предыдущего успешного запуска приложения, сохраненной локально.

Решение 2. Корпоративный стандарт управления мобильными устройствами (MDM/EMM)

Если вам требуется именно физическое удаление самого приложения с устройства без участия пользователя, эту задачу невозможно решить внутри кода 1С. Проблема должна решаться на уровне администрирования операционной системы Android с использованием концепции BYOD (Bring Your Own Device) и систем класса MDM (Mobile Device Management) / EMM (Enterprise Mobility Management).

Современные версии Android предоставляют технологию Android Enterprise, которая позволяет разделить личное и рабочее пространство на одном смартфоне с помощью механизма Work Profile (Рабочий профиль).

Как работает этот подход на практике:

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

Резюме и рекомендации

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

  1. Юридическая подготовка: В трудовом договоре или соглашении об использовании ИТ-ресурсов четко зафиксируйте обязанность сотрудника предоставить устройство для удаления корпоративного ПО или дать согласие на удаленное управление рабочим профилем при увольнении.
  2. Разработка в 1С: Обязательно внедряйте в мобильные решения механизм "таймера мертвеца" (Dead Man's Switch) для защиты от офлайн-просмотра данных и связку с Push-уведомлениями для быстрой очистки при наличии сети.
  3. Инфраструктурный контроль: Для крупных торговых команд внедряйте MDM-решения и технологию Android Enterprise. Это единственный способ гарантировать полное физическое удаление приложения с устройства сотрудника в один клик.
← На главную