Перейти к основному содержимому
Документация›Администратор›7. О системе — лицензия, версионирование и обновления

О системе — лицензия, версионирование и обновления

Содержание

Раздел О системе имеет две вторичные вкладки: Лицензия и Обновление. (Вкладки Тенанты у него больше нет — она переехала в Федерацию.) Этот раздел также объясняет, как SOARForge версионируется и как boot-time schema guard защищает инсталляцию при обновлениях.

7.1. Лицензия

#

Маршрут: /settings/about/license · Право: settings.view

Почему это важно. Лицензия определяет доступные модули и лимиты (аналитики, события); здесь же видны срок и текущее использование, и здесь активируется новый ключ.

Детали: Cluster ID (копируемый), Product version (+ короткий git SHA), Issued to, Status (active / expired / lockdown / none), Expires at, Days remaining. Licensed Modules — теги с галочкой (лицензирован) или замком (не лицензирован) для cases, threat_intel, multi_tenancy и grc. Бары использования Analysts и Events today. Кнопка Upload New (только админ) — активировать новую лицензию (вставить ключ). Предупреждение, когда до истечения остаётся <30 дней.

Лицензирование — Ed25519 + привязка по fingerprint. Только EdDSA (без RS256); лицензия без payload.fingerprint невалидна. Лицензия проприетарная — не меняйте метаданные license без согласования с владельцем.

7.2. Модель релизов и версионирование

#

Про разделы 7.2–7.4. Ниже описана модель релизов так, как её фиксирует продуктовая документация. Состав образов, значения по умолчанию и точные команды зависят от релиза и модели развёртывания: сверяйтесь с документацией поставки вашей версии, а не с этой страницей.

Почему это важно. SOARForge поставляется образами с проставленной версией. Когда версия зафиксирована до следующего деплоя — рестарт не меняет её тихо, — обновления предсказуемы, а откаты безопасны.

  • Одна проставленная версия на инсталляцию. Каждый продуктовый образ помечен тегом vX.Y.Z и несёт свою продуктовую версию, git SHA, Prisma migration head и метку времени сборки. GET /api/v1/system/version (только админ) возвращает { version, gitSha, migrationHead, builtAt }; те же значения рисуются на вкладках «Лицензия» и «Обновление».
  • Теги пинятся — рестарт не меняет версию. Манифесты Kubernetes пинят образы soarforge-* на явный :vX.Y.Z (никогда :latest), поэтому рестарт пода не подтягивает более новую сборку. На Compose закреплённый релиз запускается переменной версии, а обычный docker compose up собирает локальный dev-образ; точную команду для вашего релиза берите из документации поставки. Версия сдвигается только когда оператор деплоит следующий релиз.
  • Синхрон frontend/backend. Фронтовый бандл несёт свою версию сборки; если она отличается от backend, вкладка «Обновление» показывает бейдж mismatch — завершите раскатку (передеплой / set image фронтенда).

7.3. О системе → Обновление — советник по обновлению

#

Маршрут: /settings/about/upgrade · Право: platform-admin (тот же гейт, что и GET /system/version); действия (Check now, Upload manifest, тумблер) требуют settings.manage.

Почему это важно. Вкладка «Обновление» — «кабина» оператора для поддержания актуальности: показывает, что вы запускаете сейчас, какие релизы доступны (и что каждый мигрирует), и даёт копируемый runbook обновления под вашу модель развёртывания — всегда с напоминанием «сначала бэкап».

На странице четыре карточки:

1. This installation. Продуктовая версия (+ короткий git SHA, тег dev build для сборок без штампа), DB migration head, версия Frontend bundle (с бейджем mismatch, когда она отличается от backend) и — при федерации — Federation nodes (connected / known).

2. Available updates.

  • Check now — немедленно перечитать ленту релизов (админ, settings.manage).
  • Upload manifest — путь для air-gap (см. ниже).
  • Строка «Last checked … (feed / manual upload)» или «The release feed has not been checked yet.»
  • Если вы актуальны: «You are on the latest release.» Для dev-сборки показана инфо-заметка, что все выпущенные версии перечислены как более новые.
  • Каждый доступный релиз — карточка: версия, дата публикации, дельта миграций («Applies N migration(s): <first>…» или «No schema changes»), опциональная ссылка Release notes и — когда прыжок напрямую не разрешён — бейдж «stepwise upgrade required» с «Upgrade to <min> first before jumping to <version>.»

3. Upgrade runbook. Выберите целевую версию и модель развёртывания (Kubernetes / Compose / Swarm — запоминается в браузере); страница рисует точные копируемые команды с подставленной версией и кнопкой Copy. Первая строка всегда — напоминание о бэкапе («BACK UP THE DATABASE FIRST — take a verified snapshot before applying migrations.»). По моделям:

  • Kubernetes — пересоздать migration Job soar-db-bootstrap, запиненный на целевой тег, дождаться его завершения, затем kubectl set image для каждого продуктового deployment (soar-core: case-api, indicator-extraction, playbook, ingest, outbox, outbox-extraction, frontend; soar-automation: integration-runtime, listener-host).
  • Compose — pull и рестарт стека на закреплённой версии (сервис soar-db-bootstrap авто-применяет миграции до старта case-api); точную команду советник подставляет сам, см. также документацию поставки.
  • Swarm — docker stack deploy или per-service docker service update на целевой тег.

4. Daily update check (тумблер). Когда включён, SOARForge проверяет подписанную ленту релизов раз в день. Когда выключен — ноль исходящих вызовов, используйте вместо этого air-gap-загрузку манифеста. По умолчанию включён.

Air-gap-загрузка манифеста. Для отключённых инсталляций Upload manifest принимает содержимое подписанного release-vX.Y.Z.json. Подпись проверяется по Ed25519 против встроенного релизного ключа; неподписанные, чужие или подделанные манифесты отвергаются. Проверенная ручная загрузка имеет приоритет над фоновой проверкой ленты.

Как это читать. Советник только советует — он никогда не изменяет кластер. Runbook вы по-прежнему выполняете сами (kubectl / compose / swarm). Всегда сначала делайте проверенный бэкап БД и идите пошагово, если релиз этого требует.

7.4. Boot-time schema guard — страж схемы при старте

#

Почему это важно. Schema guard — страховка за обновлениями: даже если развёрнут «съехавший» образ, процесс отказывается обслуживать несогласованную схему вместо выдачи 500-ок. Он превращает «забыл накатить миграцию» в громкий, очевидный crash-loop.

При старте каждый процесс, поднимающий приложение (case-api и воркеры из образа case-api), сравнивает свой встроенный migration head с применённым head в БД до приёма трафика или потребления очереди. Исходы:

  • DB behind образа (the DATABASE IS BEHIND this image) — образ новее схемы. Фикс: запустить migration Job (k8s/Swarm) или дать завершиться soar-db-bootstrap (Compose); затем под поднимается. Job/сервис soar-db-bootstrap выполняет prisma migrate deploy и никогда не блокируется guard-ом.
  • DB ahead образа (the DATABASE IS AHEAD of this image) — образ старше схемы (риск отката). Фикс: задеплоить более новую версию или восстановить бэкап, совпадающий с этим образом — не форсируйте старт.

SCHEMA_GUARD_MODE по умолчанию strict (отказ стартовать при любом дрейфе); warn громко логирует и продолжает (осознанное окно временного дрейфа); off пропускает проверку (крайний случай, не для устойчивого прода). Детали для оператора: docs/ops/01-deployment-guide.md §4.4 и docs/ops/04-runbook.md («Schema guard refusal»).