Актуально на 2026-08-05 (продукт 2.8.0, агент 2.6.0 — версионируются раздельно).
Этот файл — единственный источник правды по тому, что уже есть и что планируется. Матрица «Free vs Enterprise» в README.md — её краткая выжимка.
- Free — весь операционный MDM для одного администратора или небольшой команды: инвентарь, группы, скрипты и расписания, софт-политики, блокировка экрана, карантин, временные админ-права, алерты, аудит, self-update агентов. Free должен быть мощным: это то, ради чего продукт ставят.
- Enterprise — то, что нужно организации: корпоративная идентичность, изоляция между подразделениями, деструктивные операции с ключами восстановления, compliance- отчётность, масштаб и HA.
- Базовая безопасность не продаётся. mTLS, аудит, шифрование секретов, подпись релизов — во Free. «Paywall security» мы не делаем.
Enterprise-код физически отсутствует в Free-сборке (сборочный тег), а не «выключен флагом»: выключенную проверку в открытом коде просто удаляют форком.
| Возможность | Статус |
|---|---|
| Энроллмент по mTLS (CSR + одноразовый токен, пин CA) | ✅ |
| Инвентарь железа и установленного ПО, версия агента на устройстве | ✅ |
| Агенты Windows / macOS / Linux | ✅ |
| Установщики: MSI (Windows), .pkg (macOS), shell-скрипт (Linux/macOS) | ✅ |
| Self-update агентов (semver, подпись ed25519, защита от отката) | ✅ |
| Группы устройств, цвет группы, фан-аут скриптов и политик | ✅ |
| Библиотека скриптов, разовый запуск | ✅ |
| Скрипт-политики: расписание (cron), триггер по событию, при подключении | ✅ |
| Pass / Fail по политикам (соответствие парка) | ✅ |
| Софт-политики: запрещённое ПО + алерт, фильтр по платформе | ✅ |
| Блокировка экрана (overlay) и карантин устройства | ✅ (Linux — только X11, см. lock-linux.md) |
| Временные права локального администратора (JIT) | ✅ |
| Аудит выданных админ-прав (улики сессии) | ✅ |
| Алерты с группировкой по типу, подтверждение, уведомления в Telegram | ✅ |
| Журнал аудита с фильтрами, отдельная политика хранения | ✅ |
| Роли (администратор / наблюдатель), инвайты для доступа В панель, сброс пароля по почте | ✅ |
| Автонакат миграций (fail-closed), установка и обновление одной командой | ✅ |
| Подписной ключ релизов у каждого деплойера (свой корень доверия) | ✅ |
| Вывод из эксплуатации из карточки устройства (полное самоудаление агента) | ✅ |
| Удаление из инвентаря с отзывом сертификата (устройство не «воскресает») | ✅ |
| Выпуск и отзыв API-токенов из панели | ✅ |
| Пагинация списков устройств и журнала аудита, фильтры аудита на сервере | ✅ |
| «Пользователь за консолью» в карточке устройства | ✅ |
| Владелец устройства — карточка человека (ФИО + почта), без аккаунта и приглашения | ✅ |
| Удалённая перезагрузка устройства и группы (отсрочка отсчитывается ОС) | ✅ |
| Расширенный инвентарь ПО: издатель, путь, архитектура, ключ снятия, машина/профиль | ✅ |
| Событие ИБ при попытке снять блокировку в обход службы | ✅ |
Конфигурация-как-код: YAML-экспорт/применение скриптов, политик и групп (CLI routineops) |
✅ |
| Массовые токены энроллмента: список, отзыв, секция «не подключились» | ✅ |
| Признак «агент ослеп» (очередь отчётов мертва при живом heartbeat) | ✅ |
| Миграция устройств из другого MDM (генератор скриптов Intune / Jamf) | ✅ |
| Английский язык интерфейса (i18n) | ✅ (интерфейс закрыт целиком; язык страницы и гейт полноты словарей) |
| Каналы обновления агента (stable / beta) + канареечная выкатка по группам | ✅ |
| Возможность | Приоритет | Комментарий |
|---|---|---|
| Сборки под arm64 для Windows | Низкий | Цель сборки в Makefile есть; на живом arm64-железе не прогонялось, MSI/публикация в releases не делались |
| Lock на Wayland | — | Отказ, а не задача: клиент не может ни снять экран, ни внедрить ввод — это привилегия компоновщика. То же ограничение и у удалённого стола, см. lock-linux.md |
| Возможность | Комментарий |
|---|---|
| Лицензионное ядро | Подписанный офлайн-файл лицензии (ed25519) + пароль активации, срок и grace |
| FileVault: эскроу ключей восстановления и принудительная блокировка (macOS) | Серверная и агентская части готовы |
| Уровни критичности алертов и маршрутизация | Четыре уровня, фиксируются при создании алерта; порог доставки в Telegram у каждого администратора свой; эскалация непринятых. См. миграцию 041 |
| Tamper-evident аудит | Хеш-цепочка над журналом + якоря, переживающие чистку по сроку хранения; проверка целостности через GET /audit-log/verify. Ловит правку записи, удаление из середины и перестановку; голова цепочки ежесуточно публикуется в лог сервера — сверка с ней и отличает «журнал согласован» от «журнал не переписывали» |
| Каталог пользователей (LDAP / Active Directory) | АВТОМАТИКА поверх общего справочника владельцев: синхронизация персон и авто-привязка владельца по SID консольного пользователя (fallback по логину). Сами карточки владельцев есть и во Free — заводятся вручную |
| Вход в панель по паролю каталога | Phase 2 каталога: StartTLS и кастомный CA (боевой AD отклоняет simple bind по открытому ldap://), плюс сам вход доменным паролем. Отдельный флаг login_enabled, шифрованный канал обязателен. Входят только уже существующие пользователи панели: каталог подтверждает пароль, но учётки не создаёт и роль из групп AD не берёт — роль локальная, доступ отзывается удалением пользователя. Локальный пароль работает всегда, поэтому недоступный контроллер домена не запирает панель |
| Удаление ПО с устройства из интерфейса | Действие в карточке устройства; селектор цели собирает сервер из инвентаря; агент выбирает метод снятия; self-protect агента; приёмка на Windows пройдена |
| Мультитенантность | Отдельные тенанты со своими устройствами, группами, скриптами и политиками; изоляция FORCE RLS + BindTenant (ADR-6); API/UI тенантов для provider_admin; GET /devices/across-tenants + UI-экран «Все тенанты»; удаление тенанта и перенос устройства между тенантами |
| SSO по OIDC | Authorization Code + PKCE, проверка id_token, https обязателен и у issuer, и у эндпоинтов из discovery; client_secret в конверте AES-GCM |
| SSO по SAML | Свой Service Provider с постоянной ключевой парой, CRUD и мастер настройки в панели, проверка метаданных IdP до включения |
| MFA / TOTP | Второй фактор для личности, коды восстановления хешами, политика тенанта «требовать MFA» |
| SCIM-провижининг | /scim/v2/Users; берётся ТОЛЬКО сервисным токеном области scim — без области провизионинг брался любым it_admin-токеном |
| Экспорт журнала в SIEM | syslog/CEF и webhook, фильтр событий, тестовая отправка и видимый статус доставки; архив журнала в JSONL.gz перед чисткой по сроку |
| Дашборд соответствия | Экран и выгрузка отчёта (report.csv) на языке оператора |
| Сканирование ПО на уязвимости (CVE) | Справочник + матчинг по инвентарю; версии сравниваются по-настоящему, «не смогли сопоставить» — отдельный статус, а не «чисто» |
| Бэкапы по расписанию с проверкой восстановления | scripts/backup.sh: дамп + роли кластера + секреты, ротация, встроенный прогон восстановления. Дампа базы для восстановления не хватало: ролей в нём нет |
Все пункты этапа 1 переехали в «Готово». Открытые хвосты: сканер CVE годится как подсказка оператору, а не как отчёт для аудитора (нужен полноценный фид и точные диапазоны версий), и HA пока только спроектирован — см. ниже.
| Возможность | Статус | Комментарий |
|---|---|---|
| Удалённое подключение к рабочему столу | 🔄 Ф1 и управление (Ф3) закрыты по коду, полевой прогон не сделан ни на одной платформе | Просмотр экрана из панели с обязательным поводом, записью сеанса и fail-closed аудитом. Ретрансляция через сервер, без P2P. Режим доступа (с согласием сотрудника или без) и право смотреть записи настраиваются из панели, объём записей на тенанта ограничен квотой. Управления (клавиатура, мышь, передача файлов) в Ф1 нет — оно тянет UIAccess на Windows и второй TCC-грант на macOS. Windows secure desktop, Wayland и «нет залогиненного пользователя» — отказы по потолку ОС, а не задачи, и каждый виден оператору отдельным кодом причины. Ревизия 04.08 нашла пять дефектов, при которых фича не работала или обманывала (сеанс не мог стартовать ни на одном устройстве, enterprise-агент не собирался под Windows) — закрыты. 05.08 закрыт весь остаток из конца §9 контракта, включая право на просмотр записей, которое до этого нельзя было выдать никому. 05.08 (позже) закрыт полевой блокер — стрим сеанса жил на контексте исполнителя задач и умирал через миллисекунды после старта, то есть сеанс не начинался НИ РАЗУ, — и добавлено управление: клавиатура и мышь на трёх ОС, журнал ввода без печатных символов, выгрузка «окон неатрибутируемости», управление невозможно без активной записи. Управление объявляется при старте сеанса и не берётся на лету: расширить область идущего сеанса нельзя по построению. Осталась полевая приёмка |
| HA / несколько узлов | 📐 дизайн готов, реализации нет | Блокер конкретный: реестр подключённых агентов — map в памяти процесса, вторая нода физически не может послать команду устройству, подключённому к первой. Варианты: маршрутизация через шину (Redis уже стоит под очередь) либо липкая привязка устройства к ноде на балансировщике |
| GitOps поверх конфигурации-как-кода | ⬜ | Базовый export/apply уже во Free (см. «Готово»); здесь — автоприменение из git и детект дрейфа |
| Автоматическое устранение запрещённого ПО | ⬜ | Сейчас детект и алерт; ручное удаление — в «Готово» (Enterprise) |
| Аналитика, отчёты, экспорт | ⬜ | CSV есть у отчёта соответствия; остальное — PDF и произвольные срезы |
| Аудит действий под временными админ-правами | ⬜ заведено 05.08.2026 | Сегодня выдача прав видна, а что сотрудник под ними делал — нет. Нужен durable-журнал системных событий на окно grant → revoke: старт процессов (Windows Security 4688 с флагом повышения, на Linux — auditd exec), установка служб (7045), установка MSI (Application 1033), запись в защищённые ветки реестра и файлы под HKLM (SACL). Политика аудита включается на время сессии и снимается по её концу — постоянно включённая захлебнётся. Хранение: отдельная таблица admin_session_events, строка на событие, привязка к admin_request.id, поля source/pid/image/user/time. Показ — вкладкой на карточке заявки, рядом с самими правами; на выдаче администратор видит потом СВОДКУ, а не только «выдано в 14:12, возвращено в 14:47». Уже существующая admin_session_changes (дельта ПО и служб) — не замена: она диффит СОСТОЯНИЕ до и после, а здесь нужен поток событий |
- Обновление сервера —
git pull+ пересборка контейнеров; миграции накатывает отдельный сервис до старта сервера (fail-closed). См. self-hosted-deploy.md. - Обновление агентов — парк тянет подписанный бинарь с сервера своего деплойера. Мы не пушим ничего в чужую инфраструктуру.
- Enterprise-доставка — готовый образ сервера из приватного реестра по токену подписки; исходники Enterprise не отдаются. Агент у Enterprise-клиента — тот же публичный Free-агент, кроме FileVault-сценария.
Вопросы по Enterprise и предложения по роадмапу — через Issues репозитория.