---
title: "Безопасность и лицензирование"
id: "1314"
type: "page"
slug: "licensing"
published_at: "2026-08-15T21:48:59+00:00"
modified_at: "2026-10-04T10:26:43+00:00"
url: "https://pastukhov.com/agents/multiagent/docs/licensing"
markdown_url: "https://pastukhov.com/agents/multiagent/docs/licensing.md"
excerpt: "MultiAgent хранит чувствительные данные всей инфраструктуры: SSH-ключи серверов, пароли агентов, токены реестров и API-ключи. Эта…"
---

# Безопасность и лицензирование

[https://pastukhov.com/agents/multiagent/docs/licensing.md](https://pastukhov.com/agents/multiagent/docs/licensing.md)

MultiAgent хранит чувствительные данные всей инфраструктуры: SSH-ключи серверов, пароли агентов, токены реестров и API-ключи. Эта страница — о том, как всё это защищено, как настроено резервное копирование и как устроены лицензии.

## Шифрование секретов

Все секреты шифруются на хранении симметричным шифрованием AES-256-GCM. 32-байтный ключ лежит в `/data/keys/management-secret.key` — внутри volume MultiAgent, вне базы данных. Что защищено:

- SSH-пароли и приватные ключи серверов (включая учётные данные proxy jump);
- пароли Postgres и Forgejo на серверах;
- токены реестров образов (Registry Auth);
- пароли менеджеров агентов и переменные-секреты моделей и инструментов;
- ключи программного интерфейса и пароли служб сервера (Postgres, Forgejo, центральный вход, резервное копирование).

Проверка входа пользователей — JWT-токены со сроком 90 дней, подписанные отдельным ключом из `/data/keys`. Все действия API требуют проверки ключа; анонимна только страница входа, а программный интерфейс `/api/agent/*` открывается отдельным ключом `X-API-Key`.

## Agent API — программный интерфейс

Программный интерфейс `/api/agent/*` предназначен для автоматических вызовов — например, из агентов и внешних систем. Каждый запрос проверяется заголовком `X-API-Key`: в переменной окружения `MULTIAGENT_HASH` хранится только «отпечаток» ключа (SHA-256), а сам ключ задаётся один раз при установке. Без переменной интерфейс отвечает 503 и не работает вовсе.

Особенности безопасности: `GET /api/agent` возвращает каталог всех операций с описаниями; секреты можно только записать — назад они не выдаются, только приметы «есть значение»; удалённого выполнения кода нет — только заранее определённые операции; долгие операции запускаются по схеме «запустил — проверяй» по адресу `operations/{id}`. Подробнее — [Agent API](/agents/multiagent/docs/agent-api)
.

## Публичность портов

Агенты, приложения и инструменты по умолчанию не видны из интернета: их порты публикуются только на самом сервере (на адресе `127.0.0.1`) и доступны его приложениям и nginx. Наружу порт открывается по желанию — переключателем **«Публичный порт»** у нужной привязки. Он есть и в мастере создания, и позже на вкладке **«Порты»** у агента или приложения: у каждой привязки свой переключатель, а новые строки появляются закрытыми. Изменение вступает в силу при следующем пересоздании, а смена основного порта сразу обновляет маршрут. Так развёртывания на одной машине не видят друг друга: чужой контейнер до закрытого порта не достучится.

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

## Резервное копирование

На каждом сервере MultiAgent поднимает службу резервного копирования — rsync с семью разделами, доступными только на чтение: папки docker, домашней страницы, данных, проектов и инструментов, а также две папки дампов (Postgres и Forgejo). Ваши машины-бэкаперы забирают данные по расписанию — типичной ночной задачей:

```
# nightly backup of all server data
rsync -avz rsync://backup@server-host:873/data/    /backups/server-host/data/
rsync -avz rsync://backup@server-host:873/projects/ /backups/server-host/projects/
```

Сам MultiAgent бэкапится вместе с volume `/data`: база, ключи шифрования и лицензия лежат там же. Подробнее о структуре данных — в [инструкции по установке](/agents/multiagent/docker)
.

## Лицензии агентов

Раздел «Лицензии» — центральное хранилище лицензионных ключей Pastukhov Agent. Ключ проверяется при добавлении, шифруется на хранении и никогда не возвращается из API — интерфейс показывает только распарсенные метаданные (тип, владелец, срок, покрытые продукты) и никогда сам ключ. На странице лицензий и в диалоге деталей показывается поле **«Продукты»**: перечень продуктов из ключа, а у универсального ключа — «Универсальная». Ключ, подписанный верно, но не покрывающий нужный продукт, выдаёт ошибку покрытия вместо срока действия — статус говорит, что именно не так. Один ключ назначается любому числу агентов и автоматически попадает в их переменную `AGENT_LICENSE` при развёртывании. Лицензия, назначенная хотя бы одному агенту или выбранная лицензией по умолчанию на сервере, не удалится, пока её не отсоединить.

Ключ можно не только вставить, но и выпустить прямо в интерфейсе: если на узле лежит закрытый ключ подписи, в диалоге лицензии появляется пункт «Сгенерировать лицензию». В нём заполняются тип, кому выдана, email, описание и срок; готовый ключ сразу уходит в зашифрованное хранилище и становится лицензией сервера по умолчанию — наружу сам ключ не показывается, как и у вставленного. Без ключа подписи на узле этот пункт не появляется, и ничего не меняется.

Видно и куда лицензия выдана: в диалоге её деталей перечислены серверы и агенты, которые её используют, — по именам и со ссылками, а не только числом. Так можно отсоединить лицензию перед удалением, не обходя вручную все серверы. Лицензия выбирается и на странице сервера — она становится лицензией по умолчанию для всех новых агентов на нём.

## Лицензирование MultiAgent

Сам MultiAgent распространяется с 30-дневным триалом, встроенным в образ. Лицензия — самодостаточная подписанная строка: загружается через переменную `AGENT_LICENSE` (ту же, что читают все продукты семейства) или файлом активации в папке данных и проверяется офлайн по встроенному ключу. Универсальный ключ (без списка продуктов) покрывает все продукты; действующая лицензия блокирует только создание новых сущностей и отправку сообщений. Типы лицензий и цены — на странице [Лицензирование](/agents/multiagent/license)
.

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

## Язык интерфейса

Язык интерфейса выбирает сам пользователь в окне «Внешний вид»: английский или русский. Русский — только значение по умолчанию русской сборки; на английской сборке интерфейс открывается на английском, но каждый может переключить его себе, и выбор сохраняется за учётной записью. Даты и числа при этом остаются в формате сборки.

[← Оглавление документации](/agents/multiagent/docs)
