Руководство администратора Mockarty
Это руководство охватывает все действия, которые необходимо выполнить администратору после первого запуска Mockarty. Предполагается, что вы уже установили и развернули Mockarty согласно руководству по установке и развёртыванию.



URL-адреса в примерах: Во всех примерах используется
localhost:5770как адрес Mockarty по умолчанию. Если ваш экземпляр работает на удалённом сервере, заменитеlocalhost:5770на реальный адрес (например,https://mockarty.company.comилиhttp://192.168.1.50:5770). Подробнее — в разделе Полезные функции и советы.
Содержание
- Первый запуск
- Настройка аутентификации
- Управление пользователями
- Системные роли
- Управление пространствами имён
- Роли в пространстве имён
- Назначение пользователей в пространства имён
- Настройка уведомлений по электронной почте
- Резервное копирование и восстановление
- Политики очистки
- Журнал аудита
- Настройка LLM / AI-ассистента
- Рекомендации по безопасности
Первый запуск
При первом запуске Mockarty автоматически выполняются следующие действия:
- Миграции базы данных — создаются все необходимые таблицы и индексы.
- Создаётся пространство имён по умолчанию с названием
sandbox. - Создаётся встроенная учётная запись администратора со стандартными учётными данными.
Учётные данные по умолчанию
| Поле | Значение |
|---|---|
| Имя пользователя | admin |
| Пароль | admin |
Внимание: Смените пароль по умолчанию сразу после первого входа. Использование стандартных учётных данных в продакшене — критическая угроза безопасности.
Пробная лицензия: При первом запуске Mockarty работает с 7-дневной пробной лицензией. Ограничения пробной версии: 3 пользователя (без учёта администратора), 10 моков, доступно только пространство имён sandbox. Для разблокировки полных возможностей примените лицензионный ключ в разделе Администрирование → Лицензия.
Доступ к веб-интерфейсу
Откройте браузер и перейдите по адресу:
http://localhost:5770/ui/
Вы увидите страницу входа. Введите учётные данные по умолчанию для авторизации.

Смена пароля по умолчанию
- Войдите с учётными данными
admin/admin. - Перейдите в Настройки (значок шестерёнки в боковой панели).
- Откройте раздел Профиль.
- Нажмите Изменить пароль.
- Введите новый надёжный пароль (минимум 8 символов).
- Нажмите Сохранить.

Настройка аутентификации
Mockarty поддерживает несколько методов аутентификации. Базовые настройки аутентификации задаются переменными окружения, а внешние провайдеры идентификации (OAuth, LDAP) настраиваются через веб-интерфейс панели администратора с поддержкой hot-reload — перезапуск не требуется.
Основные понятия
Если вы не знакомы с терминологией аутентификации, ниже приведены краткие определения:
- OAuth 2.0 — стандартный протокол, позволяющий пользователям входить в Mockarty с использованием существующих аккаунтов внешних сервисов (Google, GitHub и т. д.) вместо создания отдельного пароля. Кнопки «Войти через Google» — это и есть OAuth.
- LDAP / Active Directory — служба каталогов, которая часто применяется в корпоративных средах для централизованного хранения учётных записей. Если в вашей компании используется доменный вход Windows, скорее всего, это Active Directory, работающая по протоколу LDAP.
- SAML — корпоративный протокол Single Sign-On (SSO), используемый сервисами вроде Okta, Azure AD и OneLogin. Позволяет пользователю войти один раз и получить доступ ко множеству приложений без повторного ввода учётных данных.
- RBAC — управление доступом на основе ролей. Вместо назначения прав отдельным пользователям им выдают роли (например, Owner, User, Viewer), и каждая роль имеет заранее определённый набор разрешений.
- 2FA / MFA — двух- или многофакторная аутентификация. После ввода пароля пользователь должен предоставить второе подтверждение — например, код из приложения-аутентификатора или электронной почты.
Режим аутентификации (AUTH_MODE)
Переменная окружения AUTH_MODE управляет общей стратегией аутентификации:
| Значение | Описание |
|---|---|
full |
(По умолчанию) Стандартный многопользовательский режим с аутентификацией на основе БД, поддержкой OAuth, LDAP, SAML и 2FA. Используется для серверных развёртываний. |
local |
Однопользовательский режим. Все внешние провайдеры аутентификации отключаются. Локальный администратор создаётся автоматически со случайным паролем, экран входа пропускается. Подходит для локальной разработки или однопользовательских инсталляций. |
Установите переменную в окружении или .env файле:
AUTH_MODE=full # по умолчанию, многопользовательский серверный режим
AUTH_MODE=local # однопользовательский режим (без экрана входа)
Базовый URL для OAuth-редиректов (AUTH_BASE_URL)
При использовании OAuth-провайдеров Mockarty должен знать свой публичный URL, чтобы корректно формировать redirect URI (адрес, на который провайдер возвращает пользователя после входа).
AUTH_BASE_URL=https://mockarty.yourcompany.com
| Переменная | По умолчанию | Описание |
|---|---|---|
AUTH_BASE_URL |
http://localhost:5770 |
Публичный базовый URL вашего экземпляра Mockarty. Должен в точности совпадать с redirect URI, зарегистрированным в консоли разработчика OAuth-провайдера. |
Важно: Если
AUTH_BASE_URLне совпадает с redirect URI, зарегистрированным у OAuth-провайдера, авторизация завершится с ошибкой «redirect_uri_mismatch».
Первый администратор
При первом запуске Mockarty создаёт учётную запись администратора с использованием следующих переменных окружения:
| Переменная | По умолчанию | Описание |
|---|---|---|
FIRST_ADMIN_LOGIN |
admin |
Логин начального администратора |
FIRST_ADMIN_PASSWORD |
admin |
Пароль начального администратора |
FIRST_ADMIN_EMAIL |
(пусто) | Email администратора (по умолчанию <login>@localhost) |
Если используются стандартные учётные данные admin/admin, система потребует сменить пароль при первом входе.
Совет: Для автоматизированных развёртываний задайте собственные значения, чтобы избежать запроса смены пароля:
FIRST_ADMIN_LOGIN=myadmin FIRST_ADMIN_PASSWORD=MyStr0ngP@ssword! FIRST_ADMIN_EMAIL=admin@yourcompany.com
Время жизни сессии (AUTH_SESSION_EXPIRATION)
Контролирует, как долго длится сессия пользователя до повторной аутентификации:
| Переменная | По умолчанию | Описание |
|---|---|---|
AUTH_SESSION_EXPIRATION |
24 |
Время жизни сессии в часах |
AUTH_SESSION_EXPIRATION=48 # сессии живут 2 дня
Локальная аутентификация (по умолчанию)
Если внешний провайдер идентификации не настроен, Mockarty использует встроенную систему локальной аутентификации. Пользователи входят с логином и паролем, хранящимися в базе данных Mockarty.
Требования к паролям:
- Минимум 8 символов

Настройка OAuth 2.0
OAuth 2.0 позволяет пользователям входить с использованием существующих аккаунтов внешних сервисов вместо создания отдельного пароля Mockarty. Mockarty поддерживает следующих OAuth-провайдеров:
- Yandex
- VK
- GitHub
- GitLab
- Generic / Custom OAuth — любой провайдер, совместимый с OAuth 2.0
Настройка OAuth-провайдеров через панель администратора
Все OAuth-провайдеры настраиваются через веб-интерфейс панели администратора. Переменные окружения для отдельных провайдеров не требуются.
- Перейдите в Панель администратора > Identity Providers.
- Нажмите Add Identity Provider.
- Выберите тип провайдера (например, Google, GitHub, GitLab, Generic).
- Заполните обязательные поля:
- Client ID — получен из консоли разработчика провайдера.
- Client Secret — получен из консоли разработчика провайдера.
- Для Generic/Custom провайдеров дополнительно нужно указать: Authorization URL, Token URL, UserInfo URL и Scopes.
- Включите переключатель Enabled для активации провайдера.
- Нажмите Save.

Hot-reload: Изменения вступают в силу немедленно. После добавления, изменения или удаления провайдера перезапуск Mockarty не требуется.
Redirect URI: При регистрации приложения в консоли разработчика провайдера используйте следующий redirect URI:
{AUTH_BASE_URL}/api/v1/auth/oauth/callbackНапример:
https://mockarty.yourcompany.com/api/v1/auth/oauth/callback
Когда OAuth-провайдеры включены, на странице входа автоматически появляются кнопки «Войти через…» для каждого активного провайдера.

LDAP / Active Directory
LDAP (Lightweight Directory Access Protocol) позволяет Mockarty аутентифицировать пользователей через существующий каталог пользователей вашей организации, например Microsoft Active Directory. Это значит, что пользователи могут входить с теми же учётными данными, которые используют для корпоративной сети.
Настройка LDAP через панель администратора
LDAP настраивается через веб-интерфейс панели администратора, аналогично OAuth-провайдерам.
- Перейдите в Панель администратора > Identity Providers.
- Нажмите Add Identity Provider.
- Выберите тип LDAP / Active Directory.
- Заполните параметры подключения:
- LDAP URL — адрес сервера каталога (например,
ldap://ldap.example.com:389илиldaps://ldap.example.com:636для TLS). - Base DN — отправная точка для поиска пользователей (например,
dc=example,dc=com). - Bind DN — учётная запись, используемая для подключения и поиска в каталоге (например,
cn=admin,dc=example,dc=com). - Bind Password — пароль учётной записи bind.
- User Filter — LDAP-фильтр для поиска пользователей. Используйте
%sкак плейсхолдер для логина (например,(sAMAccountName=%s)для Active Directory,(uid=%s)для OpenLDAP).
- LDAP URL — адрес сервера каталога (например,
- Нажмите Test Connection, чтобы проверить, что Mockarty может подключиться к серверу каталога и аутентифицироваться с учётной записью bind.
- Включите переключатель Enabled и нажмите Save.

Hot-reload: Как и OAuth, изменения настроек LDAP вступают в силу немедленно без перезапуска Mockarty.
Когда LDAP включён, пользователи могут входить с учётными данными каталога. При первом входе автоматически создаётся учётная запись Mockarty с системной ролью User. Затем администратор может назначить роли в пространствах имён по необходимости.
SAML SSO
Mockarty поддерживает SAML 2.0 для интеграции Single Sign-On с корпоративными провайдерами идентификации (Okta, Azure AD, OneLogin и т. д.).
Настройка выполняется через панель администратора:
- Перейдите в Панель администратора > Authentication > SAML.
- Загрузите или вставьте XML метаданных провайдера идентификации (IdP).
- Скопируйте URL метаданных Service Provider (SP) Mockarty и зарегистрируйте его в вашем IdP.
- Настройте сопоставление атрибутов (email, отображаемое имя, группы).
- Включите SAML-аутентификацию.

Двухфакторная аутентификация (2FA)
Mockarty поддерживает два типа двухфакторной аутентификации:
TOTP (одноразовые пароли на основе времени):
- Работает с любым приложением-аутентификатором (Google Authenticator, Authy, Microsoft Authenticator и т. д.).
- Пользователи включают её в Settings > Security > Two-Factor Authentication.
- Отображается QR-код для сканирования приложением-аутентификатором.
- Предоставляются коды восстановления для резервного доступа.
Коды по электронной почте:
- Одноразовые коды отправляются на зарегистрированный email пользователя.
- Требуется настроенная отправка email (см. Настройка уведомлений по электронной почте).
- Пользователи включают её в Settings > Security > Two-Factor Authentication.
Управление 2FA для пользователей:
Администраторы могут управлять 2FA для каждого пользователя отдельно:
- Отключить 2FA для пользователя: Перейдите в Панель администратора > Users, выберите пользователя и нажмите Disable 2FA. Это удалит как TOTP, так и email 2FA для данного пользователя.
- Рекомендация: Настоятельно рекомендуется (либо обяжите через организационную политику), чтобы все пользователи с ролями Admin и Support включили 2FA для своих учётных записей.
Примечание: 2FA включается самими пользователями в разделе Settings > Security > Two-Factor Authentication. Глобального переключателя принудительного включения нет — внедрение 2FA управляется через организационную политику.
Управление пользователями
Создание пользователей
- Перейдите в Панель администратора > Users.
- Нажмите Create User.
- Заполните обязательные поля:
- Username — уникальный логин.
- Email — адрес электронной почты (используется для уведомлений и сброса пароля).
- Password — начальный пароль (пользователь сможет изменить его позже).
- System Role — выберите Admin, Support, Auditor или User (см. Системные роли).
- Нажмите Create.

Установка паролей и email
- Для сброса пароля пользователя: Панель администратора > Users > (выберите пользователя) > Reset Password.
- Для смены email пользователя: Панель администратора > Users > (выберите пользователя) > Edit > Email.
- Ссылки для сброса пароля могут отправляться по email, если настроены email-уведомления.
Отключение / включение учётных записей
Отключённые учётные записи не могут войти в систему, но их данные и назначения в пространствах имён сохраняются.
- Перейдите в Панель администратора > Users.
- Найдите пользователя в списке.
- Нажмите переключатель рядом с его именем для отключения или включения учётной записи.
Удаление пользователей
- Перейдите в Панель администратора > Users.
- Найдите пользователя в списке.
- Нажмите Delete.
- Подтвердите удаление.
Примечание: Удаление пользователя удаляет его учётную запись и все назначения ролей в пространствах имён. Моки и другие ресурсы, созданные пользователем, сохраняются.
Самостоятельная регистрация пользователей
Когда включены OAuth или LDAP, пользователи могут регистрироваться самостоятельно, входя через внешний провайдер идентификации. Учётная запись Mockarty создаётся автоматически с системной ролью User. Затем администратор может назначить роли в пространствах имён по необходимости.
Системные роли
В Mockarty есть четыре системных роли, определяющих, к чему пользователь имеет доступ на уровне всей платформы.
Описание ролей
Admin
Полный доступ к системе. Администраторы могут управлять всеми пользователями, всеми пространствами имён, системными настройками, журналами аудита, резервными копиями, настройками email, профилями LLM, телеметрией и состоянием базы данных. Эта роль должна быть выдана небольшому числу доверенных лиц.
Support
Полный доступ к ресурсам пространств имён (моки, хранилища, API-тесты, фаззинг, рекордер, коллекции) во всех пространствах имён. В панели администратора пользователи Support могут просматривать учётные записи, сбрасывать пароли и просматривать журналы аудита, но не могут создавать или удалять пользователей, изменять системные настройки или получать доступ к чувствительной конфигурации. Пользователи Support не могут создавать или удалять пространства имён.
Auditor
Доступ только для чтения к журналам аудита и системным метрикам. Аудиторы не могут изменять ресурсы и не могут экспортировать журналы аудита. В боковой панели они видят: Dashboard, Mocks (только просмотр), Test Runs, Recorder (только просмотр), Fuzzing (только просмотр), Utils, Settings (только просмотр) и Admin Panel (только просмотр журналов аудита).
User
Стандартная учётная запись пользователя. Права полностью определяются назначениями ролей в пространствах имён (см. Роли в пространстве имён). Доступа к панели администратора нет.
Матрица разрешений
| Возможность | Admin | Support | Auditor | User |
|---|---|---|---|---|
| Просмотр Dashboard | Да | Да | Да | Да |
| Управление собственным профилем | Да | Да | Да | Да |
| Доступ к панели администратора | Да | Частично | Частично | Нет |
| Создание / удаление пользователей | Да | Нет | Нет | Нет |
| Просмотр списка пользователей | Да | Да | Нет | Нет |
| Сброс паролей пользователей | Да | Да | Нет | Нет |
| Отключение / включение учётных записей | Да | Нет | Нет | Нет |
| Управление системными настройками | Да | Нет | Нет | Нет |
| Создание / удаление пространств имён | Да | Нет | Нет | Нет |
| Просмотр журналов аудита | Да | Да | Да | Нет |
| Экспорт журналов аудита | Да | Да | Нет | Нет |
| Управление резервными копиями | Да | Нет | Нет | Нет |
| Настройка email | Да | Нет | Нет | Нет |
| Управление профилями LLM | Да | Нет | Нет | Нет |
| Просмотр телеметрии / метрик | Да | Нет | Да | Нет |
| Состояние базы данных | Да | Нет | Нет | Нет |
| Управление API-токенами | Да | Нет | Нет | Нет |
| Просмотр моков (все пространства) | Да | Да | Да | Нет |
| Работа с ресурсами пространства имён | Да | Да | Нет | По роли |
Управление пространствами имён
Что такое пространство имён
Пространство имён — это изолированная рабочая область внутри Mockarty. Каждое пространство имён содержит собственные:
- Моки и маршруты
- Хранилища Global, Chain и Mock
- Коллекции API-тестов и окружения
- Результаты запусков тестов
- Сессии рекордера
- Конфигурации фаззинга
- API-токены
Пространства имён обеспечивают изоляцию между командами, сервисами или средами. Ресурсы одного пространства имён невидимы для пользователей другого пространства (если у них нет ролей в обоих).
Создание пространств имён
Через панель администратора:
- Перейдите в Панель администратора > Namespaces.
- Нажмите Create Namespace.
- Введите имя и (опционально) описание.
- Нажмите Create.
Через страницу настроек:
- Перейдите в Settings > Namespaces (доступно пользователям с ролью Admin).
- Нажмите Create Namespace.
- Введите имя и (опционально) описание.
- Нажмите Create.

Соглашения об именовании и лучшие практики
Выберите соглашение об именовании, подходящее вашей организации:
| Стратегия | Пример пространств имён | Подходит для |
|---|---|---|
| По командам | backend-team, mobile-team, qa-team |
Небольшие организации |
| По сервисам | payment-service, user-service, orders |
Микросервисная архитектура |
| По средам | dev, staging, qa, demo |
Workflow по средам |
| Комбинированные | payments-dev, payments-staging |
Крупные организации |
Советы:
- Используйте имена в нижнем регистре с дефисами (например,
user-service). - Делайте имена короткими, но информативными.
- Избегайте общих имён вроде
testилиtempдля постоянных пространств имён. - Задокументируйте соглашение об именовании, чтобы все команды следовали ему единообразно.
Пространство имён по умолчанию
Пространство имён sandbox создаётся автоматически при первом запуске. Его нельзя удалить. Все пользователи имеют доступ к пространству имён по умолчанию, если их явно не исключили.
Удаление / восстановление пространств имён
- Перейдите в Панель администратора > Namespaces.
- Найдите пространство имён и нажмите Delete.
- Подтвердите удаление.
Внимание: Удаление пространства имён удаляет все моки, хранилища, коллекции тестов и другие ресурсы внутри него. Это действие необратимо.
Роли в пространстве имён
Внутри каждого пространства имён пользователю может быть назначена одна из трёх ролей, определяющих, что он может делать с ресурсами пространства.
Описание ролей
Owner
Полный контроль над пространством имён. Владельцы могут управлять настройками пространства, добавлять и удалять пользователей и выполнять все операции с ресурсами (моки, хранилища, коллекции, тесты). Владельцы пространства имён не могут удалить пространство имён — это доступно только пользователям с системной ролью Admin или Support.
User
Могут создавать, редактировать и удалять моки, хранилища, коллекции и запускать тесты. Не могут управлять настройками пространства или добавлять/удалять пользователей.
Viewer
Доступ только для чтения ко всем ресурсам пространства имён. Наблюдатели могут просматривать моки, результаты тестов и значения хранилищ, но не могут создавать, редактировать или удалять что-либо.
Матрица возможностей в пространстве имён
| Возможность | Owner | User | Viewer |
|---|---|---|---|
| Просмотр моков | Да | Да | Да |
| Создание / редактирование / удаление моков | Да | Да | Нет |
| Импорт моков (OpenAPI, HAR и т. д.) | Да | Да | Нет |
| Просмотр хранилищ | Да | Да | Да |
| Создание / редактирование / удаление хранилищ | Да | Да | Нет |
| Просмотр коллекций API-тестов | Да | Да | Да |
| Создание / редактирование / удаление коллекций | Да | Да | Нет |
| Запуск тестов | Да | Да | Нет |
| Просмотр результатов тестов | Да | Да | Да |
| Использование API Tester | Да | Да | Нет |
| Просмотр сессий рекордера | Да | Да | Да |
| Запуск / остановка рекордера | Да | Да | Нет |
| Настройка фаззинга | Да | Да | Нет |
| Просмотр результатов фаззинга | Да | Да | Да |
| Управление API-токенами пространства | Да | Нет | Нет |
| Добавление / удаление пользователей | Да | Нет | Нет |
| Изменение настроек пространства | Да | Нет | Нет |
| Удаление пространства имён | Нет | Нет | Нет |
| Использование Agent Chat | Да | Да | Да |
Назначение пользователей в пространства имён
Добавление пользователя в пространство имён
- Переключитесь в целевое пространство имён с помощью селектора в боковой панели.
- Перейдите в Settings > Users.
- Нажмите Add User.
- Выберите учётную запись из выпадающего списка.
- Выберите роль: Owner, User или Viewer.
- Нажмите Add.

Изменение роли пользователя в пространстве имён
- Перейдите в Settings > Users в целевом пространстве имён.
- Найдите пользователя в списке.
- Нажмите выпадающий список роли рядом с его именем.
- Выберите новую роль.
- Изменение вступает в силу немедленно.
Удаление пользователя из пространства имён
- Перейдите в Settings > Users в целевом пространстве имён.
- Найдите пользователя в списке.
- Нажмите Remove.
- Подтвердите действие.
Примечание: Удаление пользователя из пространства имён не удаляет его учётную запись. Он просто теряет доступ к ресурсам этого пространства.
Настройка уведомлений по электронной почте
Email-уведомления используются для сброса паролей, доставки кодов 2FA, пригласительных ссылок и уведомлений о результатах тестов.
Включение email
Настройки email задаются через веб-интерфейс панели администратора (перезапуск не требуется):
- Перейдите в Панель администратора > Email Settings.
- Заполните параметры подключения SMTP:
- SMTP Host — ваш SMTP-сервер (например,
smtp.gmail.com) - SMTP Port — обычно
587для STARTTLS или465для Implicit TLS - Username / Password — учётные данные SMTP-аутентификации
- From Address — адрес отправителя, отображаемый получателям
- From Name — имя отправителя (например,
Mockarty) - Reply-To — необязательный адрес для ответов
- SMTP Host — ваш SMTP-сервер (например,
- Включите переключатель Enabled и нажмите Save.
Альтернатива: переменные окружения. Настройки SMTP также можно задать через переменные окружения при запуске (
EMAIL_ENABLED,SMTP_HOST,SMTP_PORT,SMTP_USERNAME,SMTP_PASSWORD,EMAIL_FROM,EMAIL_FROM_NAME,EMAIL_REPLY_TO,SMTP_USE_IMPLICIT_TLS). Полный справочник — в Руководстве по установке и развёртыванию. Настройки в UI имеют приоритет над переменными окружения после первого сохранения.
Проверка настроек email
- Перейдите в Панель администратора > Email Settings.
- Нажмите Send Test Email.
- Введите адрес получателя.
- Нажмите Send.
- Убедитесь, что тестовое письмо пришло в почтовый ящик получателя.

Пользовательские шаблоны писем
Mockarty использует встроенные HTML-шаблоны для всех email-уведомлений. Их можно настроить:
- Перейдите в Панель администратора > Email, затем переключитесь на под-вкладку Templates.
- Выберите шаблон для настройки (например, «Password Reset», «2FA Code», «Welcome», «Invite», «Email Verify»).
- Отредактируйте тему, HTML-шаблон и текстовый шаблон. Доступные переменные перечислены на странице.
- Нажмите Save.
- Используйте Preview для просмотра внешнего вида письма.
- Используйте Reset to Default для восстановления встроенного шаблона.
Что отправляется
| Событие | Содержание письма |
|---|---|
| Запрос сброса пароля | Ссылка для сброса пароля (истекает через 1 час) |
| Код 2FA (метод email) | 6-значный код подтверждения (истекает через 10 минут) |
| Приглашение пользователя | Ссылка для присоединения к Mockarty с заранее назначенной ролью |
| Подтверждение email | Ссылка для подтверждения адреса email |
| Завершение запуска тестов | Сводка результатов тестов с количеством успехов/неудач |
Резервное копирование и восстановление
В Mockarty встроена система резервного копирования, использующая pg_dump / pg_restore для PostgreSQL и копирование файла для SQLite, чтобы создавать и восстанавливать резервные копии БД. Управление выполняется через панель администратора или API.
Автоматическое резервное копирование
Mockarty автоматически выполняет резервное копирование по расписанию. Расписание по умолчанию — ежедневно в 2:00 ночи (настраивается через cron-выражение). В распределённых развёртываниях резервное копирование выполняется только на лидер-ноде во избежание дублирования.
Настройка резервного копирования
- Перейдите в Панель администратора > Backup.
- Нажмите Create Backup Config (или отредактируйте конфигурацию по умолчанию).
- Настройте:
- Schedule — cron-выражение (например,
0 0 2 * * *для ежедневного запуска в 2:00). - Retention — число дней хранения старых копий (0 = без ограничений).
- Compression — включить сжатие для уменьшения размера файлов.
- Format —
custom(рекомендуется, поддерживаетpg_restore),plain(текстовый SQL),tarилиdirectory. - Include schema / Include data — выбрать, что включать.
- Schedule — cron-выражение (например,
- Включите переключатель Enabled и нажмите Save.
Ручное резервное копирование
Через панель администратора:
- Перейдите в Панель администратора > Backup.
- Нажмите Create Backup.
- Дождитесь завершения процесса.
- Нажмите Download для сохранения файла резервной копии.
Через API:
# Create a backup
curl -X POST http://localhost:5770/api/v1/admin/backups/create \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"config_id": "your-config-id"}'
# Download the backup
curl http://localhost:5770/api/v1/admin/backups/download?path=backup_file.dump \
-H "Authorization: Bearer $TOKEN" \
-o backup.dump
Восстановление из резервной копии
Через панель администратора:
- Перейдите в Панель администратора > Backup.
- Нажмите Restore.
- Загрузите файл резервной копии.
- Подтвердите операцию восстановления.
- Дождитесь завершения процесса. Кэш лицензий будет перезагружен автоматически.
Через API:
# Restore from uploaded file
curl -X POST http://localhost:5770/api/v1/admin/backups/restore-from-file \
-H "Authorization: Bearer $TOKEN" \
-F "file=@backup.dump"
Внимание: Восстановление заменяет все текущие данные. Эта операция необратима.
Что входит в резервную копию
- Полная база данных (все моки, хранилища, пользователи, пространства имён, результаты тестов, журналы аудита, конфигурации)
- Формат зависит от настроек (рекомендуется формат
customдля самого быстрого восстановления)
Docker и Kubernetes
Официальный Docker-образ Mockarty включает postgresql-client (pg_dump, pg_restore, psql), поэтому резервное копирование работает из коробки в Docker- и Kubernetes-окружениях.
Смонтируйте постоянный том для каталога резервных копий:
docker run -v /host/path/data:/app/data mockarty:latest
Резервное копирование SQLite
Для развёртываний с SQLite Mockarty создаёт резервные копии путём копирования файла БД после WAL-чекпойнта. Используется тот же интерфейс панели администратора — дополнительные инструменты не требуются.
Политики очистки
Политики очистки управляют сроком хранения исторических данных. Их настройка предотвращает неограниченный рост базы данных.
Настройка очистки
Перейдите в Панель администратора > Cleanup или Settings > Cleanup внутри пространства имён.
Доступные политики
| Политика | Описание | По умолчанию |
|---|---|---|
| Хранение журналов запросов | Срок хранения записанных логов запросов/ответов | 30 дней |
| Хранение неопределённых запросов | Срок хранения логов несопоставленных запросов | 14 дней |
| Хранение отчётов о тестах | Срок хранения отчётов о запусках тестов | 90 дней |
| Обработка истёкших моков | Что делать с моками, у которых истёк TTL | Архивировать |
Варианты обработки истёкших моков:
- Архивировать — пометить истёкшие моки как неактивные. Они перестают сопоставляться с запросами, но остаются видимыми в интерфейсе для справки.
- Автоудаление — окончательно удалять истёкшие моки после настраиваемого льготного периода.
- Ничего не делать — оставить истёкшие моки как есть (не рекомендуется для продакшена).

Журнал аудита
Журнал аудита ведёт подробную запись всех значимых действий, выполненных в системе.
Что регистрируется
- События аутентификации — входы пользователей (успешные и неудачные), выходы, запросы 2FA.
- Операции с моками — создание, обновление, удаление, импорт, экспорт.
- Изменения пространств имён — создание, удаление, назначения ролей пользователей.
- Административные действия — управление пользователями, изменение системных настроек, резервное копирование/восстановление.
- Использование API-токенов — создание, удаление и паттерны использования токенов.
- Операции с хранилищами — изменения в Global-хранилище.
Просмотр журнала аудита
- Перейдите в Панель администратора > Audit Logs.
- Просматривайте хронологический список событий.

Фильтрация
Используйте элементы управления фильтрацией в верхней части страницы:
- User — фильтр по конкретной учётной записи.
- Event type — фильтр по типу действия (login, mock.create, namespace.delete и т. д.).
- Date range — задать начальную и конечную дату.
- Namespace — фильтр по пространству имён (для событий, связанных с пространством).
Экспорт журнала аудита
- Примените нужные фильтры.
- Нажмите Export.
- Выберите формат:
- CSV — значения, разделённые запятыми, удобно для анализа в электронных таблицах.
- JSON — структурированные данные, удобно для программной обработки.
- Файл загружается в браузер.
Настройка LLM / AI-ассистента
Mockarty включает AI-ассистента (Agent Chat), помогающего пользователям создавать моки, диагностировать проблемы и исследовать систему на естественном языке.
Включение AI-ассистента
Установите следующую переменную окружения:
ENABLE_LLM=true
MCP-сервер
Если вы хотите предоставить инструменты Mockarty через MCP (Model Context Protocol) для внешних AI-агентов, включите встроенный MCP-сервер:
ENABLE_MCP=true
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
ENABLE_MCP |
Включить MCP-сервер | false |
MCP_PORT |
Порт MCP-сервера | 5772 |
Параллелизм агента
Подсистема AI-агента (ADK) управляет тем, сколько задач агента могут выполняться одновременно и как долго живут сессии:
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
ADK_ENABLED |
Включить подсистему агента ADK | true |
ADK_MAX_CONCURRENT_TASKS |
Максимум одновременных задач AI-агента | 3 |
ADK_SESSION_TTL_HOURS |
Время жизни сессии агента в часах | 24 |
ADK_MAX_TOOL_ITERATIONS |
Максимум итераций вызова инструментов на запрос | 50 |
A2A_ENABLED |
Включить протокол A2A (Agent-to-Agent) | true |
Конфигурация по умолчанию
При включении без дополнительной настройки Mockarty подключается к локальному экземпляру Ollama:
| Параметр | Значение по умолчанию |
|---|---|
| Провайдер | Ollama |
| URL | http://localhost:11434 |
| Модель | qwen3:1.7b |
Локальная Ollama (для разработчиков)
Ollama позволяет запускать open-source LLM локально. Это удобно для разработки и тестирования, когда не нужно использовать облачный LLM-провайдер.
Установка Ollama:
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
Запуск Ollama и загрузка модели:
# Start the Ollama server
ollama serve &
# Pull a model (choose size based on available RAM)
ollama pull qwen3:0.6b # ~1 GB RAM — smallest, fast
ollama pull qwen3:1.7b # ~2 GB RAM — balanced (default)
ollama pull qwen3:4b # ~3.5 GB RAM — better quality
Настройка Mockarty для работы с Ollama:
Установите ENABLE_LLM=true и создайте профиль Ollama в Панели администратора > LLM Profiles со следующими параметрами:
- Provider: Ollama
- URL:
http://localhost:11434 - Model: загруженная вами модель (например,
qwen3:1.7b)
Альтернативно — передайте URL и модель Ollama как переменные окружения при запуске. Они служат значениями по умолчанию, если профиль LLM не настроен:
ENABLE_LLM=true OLLAMA_URL=http://localhost:11434 OLLAMA_MODEL=qwen3:1.7b ./mockarty
Примечание: Для продакшена настраивайте провайдеров LLM через панель администратора. Переменные
OLLAMA_URLиOLLAMA_MODEL— это удобные значения по умолчанию, которые переопределяются активным профилем LLM.
Настройка профилей LLM
Через панель администратора можно настроить несколько профилей LLM:
- Перейдите в Панель администратора > LLM Profiles.
- Нажмите Create Profile.
- Заполните:
- Name — отображаемое имя профиля.
- Provider — OpenAI, Anthropic (Claude), OpenRouter, Google (Gemini), Mistral, Groq, Ollama (локальный) или Custom (любой OpenAI-совместимый эндпоинт).
- URL — URL API-эндпоинта.
- API Key — ключ аутентификации (если требуется провайдером).
- Model — идентификатор модели.
- Нажмите Save.
- Установите один профиль как Default для всех пользователей.

Клиентская LLM
Пользователи также могут подключить собственного LLM-провайдера напрямую из браузера, без маршрутизации API-вызовов через сервер Mockarty. Это полезно, когда:
- У пользователей есть собственные API-ключи для OpenAI, Claude или других провайдеров
- Вы хотите избежать прохождения LLM-трафика через сервер Mockarty
- Разным пользователям нужны разные LLM-провайдеры
В клиентском режиме API-вызовы к LLM выполняются напрямую из браузера к провайдеру, а выполнение инструментов (создание моков, обновление хранилищ и т. д.) по-прежнему происходит на сервере.
Чтобы использовать клиентскую LLM, пользователь выбирает свой профиль в настройках Agent Chat со своим API-ключом и URL провайдера.
Лимиты запросов по пространствам имён
Чтобы предотвратить чрезмерное использование LLM, настройте лимиты запросов на пространство имён:
- Перейдите в Панель администратора > LLM Profiles.
- В разделе Rate Limits установите:
- Requests per minute на пространство имён.
- Requests per day на пространство имён.
- Нажмите Save.
Agent Chat
Когда AI-ассистент включён, на каждой странице веб-интерфейса появляется плавающая кнопка чата. Пользователи могут:
- Задавать вопросы об использовании Mockarty.
- Запрашивать создание моков на естественном языке.
- Получать помощь с выражениями JsonPath, функциями Faker и условиями.
- Диагностировать проблемы сопоставления моков.
Режим автоматического одобрения
По умолчанию Agent Chat требует ручного одобрения каждого вызова инструмента (кнопки Accept/Decline). Вы можете включить режим автоматического одобрения, чтобы вызовы инструментов выполнялись без подтверждения:
- Откройте Agent Chat.
- Найдите выпадающий список Auto Approve в верхней части панели чата.
- Переключите с Manual на Auto Approve.
Эта настройка хранится локально в браузере и сохраняется между сессиями. Используйте автоматическое одобрение, когда доверяете AI-агенту выполнять операции без проверки — например, при быстром прототипировании моков в sandbox-пространстве.
Внимание: В продакшен-пространствах рекомендуется оставлять ручное одобрение, чтобы проверять каждый вызов инструмента перед выполнением.
Рекомендации по безопасности
Следуйте этим рекомендациям, чтобы поддерживать безопасность вашей инсталляции Mockarty.
Немедленные действия после установки
-
Смените пароль администратора по умолчанию. Учётные данные
admin/adminописаны в публичной документации. Смените пароль до того, как экземпляр станет доступен по сети. -
Включите 2FA для учётных записей администраторов. Двухфакторная аутентификация добавляет критически важный уровень защиты для привилегированных учётных записей.
Сетевая безопасность и шифрование
-
Используйте HTTPS. Настройте TLS-сертификаты (автоматически сгенерированные или собственные), чтобы шифровать весь трафик. Установите
COOKIE_SECURE=true(значение по умолчанию), чтобы session cookies отправлялись только по HTTPS. -
Оставьте защиту от SSRF включённой. Параметр
ALLOW_PROXY_TO_PRIVATE_IPSпо умолчанию равенfalse, что предотвращает доступ режима прокси моков к сервисам внутренней сети. Не меняйте значение, если не понимаете рисков. -
Ограничьте сетевой доступ. Используйте файрволы или сетевые политики, чтобы ограничить доступ к портам Mockarty:
Порт Протокол Назначение Кому открывать 5770 HTTP Веб-интерфейс, REST API, мок-трафик Пользователи / команды 5771 HTTPS Зашифрованный веб-интерфейс, REST API, мок-трафик Пользователи / команды (рекомендуется) 5772 HTTP/SSE MCP-сервер (только если ENABLE_MCP=true)AI-агенты / доверенные клиенты 5773 gRPC Координатор (регистрация resolver/runner) Внутри сети: только resolver- и runner-ноды
Контроль доступа
-
Используйте изоляцию пространств имён. Назначьте каждой команде собственное пространство имён с подходящими ролями. Это предотвращает случайное взаимное влияние между командами.
-
Соблюдайте принцип минимальных привилегий. Назначайте минимальную роль, соответствующую потребностям пользователя. Большинству пользователей подойдёт системная роль User с ролью User или Viewer в пространстве имён.
-
Регулярно ротируйте API-токены. API-токены дают программный доступ. Периодически ротируйте их и отзывайте те, что больше не нужны.
-
Просматривайте журналы аудита. Регулярно проверяйте журналы аудита на предмет неожиданной активности, особенно неудачных попыток входа и административных действий.
Операционная безопасность
-
Обновляйте Mockarty. Своевременно применяйте обновления, чтобы получать исправления безопасности.
-
Регулярно создавайте резервные копии. Настройте автоматическое резервное копирование в Панель администратора > Backup. Периодически проверяйте, что копии можно восстановить.
-
Мониторьте состояние системы. Используйте эндпоинты проверки состояния (
/health/liveдля liveness,/health/readyдля readiness) для мониторинга статуса системы. -
Включите контрактное тестирование. Используйте контрактное тестирование для обнаружения дрейфа моков и ломающих изменений. Это гарантирует, что моки остаются синхронизированы со спецификациями API, и предотвращает молчаливое расхождение тестовых окружений с продакшен-поведением.
-
Тестируйте устойчивость через chaos engineering. Используйте chaos engineering, чтобы убедиться, что ваши системы корректно обрабатывают сбои, когда зависящие от Mockarty сервисы испытывают неисправности (требуется PRO-лицензия).
Ограничение частоты запросов
Rate Limiting: Лимиты частоты запросов API настраиваются через базу данных. Лимиты по умолчанию: 10 запросов/секунду, 60/минуту, 1000/час на каждую область (пользователь/пространство имён/глобально), с burst-лимитом 20. Управление лимитами доступно через admin API.
Сводка переменных окружения
Базовая защита (рекомендуемые значения для продакшена):
| Переменная | Рекомендуется | Назначение |
|---|---|---|
COOKIE_SECURE |
true (по умолчанию) |
Session cookies только по HTTPS |
ALLOW_PROXY_TO_PRIVATE_IPS |
false (по умолчанию) |
Защита от SSRF для исходящих вызовов прокси/webhook |
MCP_TLS_INSECURE_SKIP_VERIFY |
false (по умолчанию) |
Проверка TLS-сертификатов в клиентских вызовах MCP |
HTTPS_ENABLED |
true (по умолчанию) |
Включить HTTPS-листенер на порту 5771 |
HTTP / HTTPS листенер:
| Переменная | По умолчанию | Описание |
|---|---|---|
HTTP_PORT |
5770 |
Основной порт HTTP API/UI |
HTTP_BIND_ADDR |
localhost |
Интерфейс для HTTP-листенера. Установите 0.0.0.0 для внешнего доступа |
HTTPS_ENABLED |
true |
Включить HTTPS-листенер |
HTTPS_PORT |
5771 |
Порт HTTPS |
HTTPS_BIND_ADDR |
"" |
Интерфейс для HTTPS-листенера. Пусто = совпадает с HTTP_BIND_ADDR |
HTTPS_CERT_FILE |
"" |
Путь к TLS-сертификату. При пустом значении Mockarty автоматически генерирует self-signed сертификат в HTTPS_TLS_DIR |
HTTPS_KEY_FILE |
"" |
Путь к приватному TLS-ключу |
HTTPS_TLS_DIR |
.mockarty/tls |
Каталог для автоматически сгенерированных self-signed сертификатов |
HTTP_REQUEST_BODY_SIZE_LIMIT_MB |
5 |
Максимальный размер тела запроса (МБ). Увеличьте при импорте больших наборов моков |
База данных:
| Переменная | По умолчанию | Описание |
|---|---|---|
DB_USE |
pg |
Драйвер БД: pg (PostgreSQL, рекомендуется для продакшена), sqlite (однофайловая, dev/desktop), mysql (экспериментально) |
DB_DSN |
— | Строка подключения к БД (обязательна для pg/mysql) |
DB_ENABLE_AUDIT |
true |
Включить таблицу аудита (требуется для комплаенса — оставьте true в продакшене) |
DB_ENABLE_VERSIONING |
true |
Включить историю версий моков |
DB_MAX_OPEN_CONNS |
25 |
Размер основного пула к PostgreSQL (матчинг моков, админ-запросы). В кластере суммарно ≈ узлов × значение — держите запас относительно PostgreSQL max_connections. |
BOOTSTRAP_DB_MAX_OPEN_CONNS |
авто (max(16, 4 × CPU)) |
Размер пула админ/bootstrap к PostgreSQL (license status, шедулеры, нотификации). По умолчанию масштабируется по числу ядер; переопределяйте в multi-node кластере, чтобы не упереться в PostgreSQL max_connections. |
Кэш:
| Переменная | По умолчанию | Описание |
|---|---|---|
USE_CACHE |
true |
Включить слой кэша для резолвинга моков |
CACHE_TYPE |
inmemory |
Бэкенд кэша: inmemory (Ristretto, single-node) или redis (multi-node) |
CACHE_REDIS_POOL_SIZE |
авто (max(20, 10 × CPU)) |
Размер пула соединений к Redis. Поднимайте для >100 тыс. одновременных пользователей; снижайте, если узким местом оказывается maxclients на Redis. |
CACHE_REDIS_MIN_IDLE_CONNS |
авто (max(4, CPU)) |
Минимум «прогретых» соединений к Redis. Компромисс между idle-ресурсами и латентностью первого запроса после пауз. |
MOCKARTY_SECRETS_CACHE_TTL_SECONDS |
60 |
TTL внутрипроцессного кэша секретов, используемого шагами TCM при резолве {{secret.X}}. Предотвращает перегрузку upstream-хранилищ (Vault, AWS SM, GCP SM, Azure KV) при высоконагруженных прогонах тест-планов. 0 — кэш отключён. Ротация/обновление/удаление в secrets инвалидируют запись немедленно по всему кластеру через PG NOTIFY. |
MOCKARTY_SECRETS_CACHE_MAX_ENTRIES |
4096 |
LRU-лимит записей в кэше секретов. Свыше лимита вытесняются самые старые. Увеличивайте при множестве namespaces × ключей; уменьшайте при ограничениях по RAM. |
MOCKARTY_PREVIEW_ALLOW_PRIVATE_HOSTS |
(не задано, запрещено) | Установите 1 (или true), чтобы TCM-эндпоинт preview-step-request мог отправлять HTTP-запросы на loopback / RFC1918 / link-local / cloud-metadata адреса. По умолчанию ВЫКЛЮЧЕНО, потому что preview, нацеленный на внутренние сервисы, — классический SSRF-вектор. Включайте ТОЛЬКО на dev-машинах, где upstream сознательно живёт на 127.0.0.1. |
PDF-движок для отчётов Test Plan (опционально):
Эндпоинт экспорта прогона Test Plan может отдавать PDF, если в системе доступен внешний рендерер. Mockarty при старте сам ищет бинарь wkhtmltopdf и подключает его автоматически — в большинстве случаев никаких env-vars выставлять не нужно. Если бинарь не установлен, эндпоинт возвращает 501 Not Implemented с JSON-конвертом, объясняющим как его поставить.
| Переменная | По умолчанию | Описание |
|---|---|---|
MOCKARTY_PDF_ENGINE |
auto |
Какой рендерер использовать для /test-plan-runs/:id/export?format=pdf. Значения: auto (попытаться wkhtmltopdf из PATH, при отсутствии — заглушка; рекомендуется); none / stub (PDF осознанно выключен — эндпоинт отвечает 501); wkhtmltopdf (явно — то же что auto, но при отсутствии бинаря пишет в лог предупреждение, а не информационное сообщение); chromium (лучшая поддержка CSS, эмодзи и CJK-шрифтов, но бинарь Mockarty должен быть собран с тегом сборки chromium — см. ниже). |
MOCKARTY_PDF_WKHTMLTOPDF_BIN |
wkhtmltopdf |
Путь к бинарю wkhtmltopdf. Передайте абсолютный путь (например /usr/local/bin/wkhtmltopdf) либо имя, разрешимое через PATH. Если бинарь не найден при старте, Mockarty пишет уведомление в лог и оставляет PDF выключенным (без падения сервиса). |
MOCKARTY_PDF_CHROMIUM_BIN |
chromium-headless |
Путь к бинарю Chromium / Chrome. Селектор пробует поочерёдно chromium-headless → chromium → google-chrome, поэтому стандартные имена дистрибутивов работают без переопределения. Используется только при MOCKARTY_PDF_ENGINE=chromium И сборке с тегом chromium. |
MOCKARTY_PDF_MAX_BYTES |
26214400 (25 МиБ) |
Максимальный размер PDF на выходе. Если рендерер выдаёт больше, запрос отвечает 413 Request Entity Too Large с кодом pdf_too_large. Поднимайте для планов с большим количеством скриншотов; снижайте, чтобы защитить RAM admin-ноды. |
MOCKARTY_PDF_TIMEOUT_SECONDS |
60 |
Жёсткий таймаут на один PDF-рендер. При превышении запрос отвечает 504 Gateway Timeout с кодом pdf_timeout. Поднимайте для очень больших планов, снижайте если экспорт зависает за подвисшим бинарём. |
О теге сборки
chromium. Chromium-движок компилируется только при сборке Mockarty командойgo build -tags chromium. Стандартный release-бинарь distroless-дружелюбный и содержит только путьwkhtmltopdf. Чтобы получить Chromium-качество PDF — пересоберите Mockarty с этим тегом и сделайте Chromium доступным в PATH (или черезMOCKARTY_PDF_CHROMIUM_BIN). Для большинства операторовwkhtmltopdf— более простой выбор: установите его пакетным менеджером дистрибутива, и всё готово.
Установка wkhtmltopdf:
Рендерер — это один статический бинарь от wkhtmltopdf.org. Выберите команду под вашу платформу:
- Debian / Ubuntu —
sudo apt-get update && sudo apt-get install -y wkhtmltopdf - Alpine —
apk add --no-cache wkhtmltopdf(плюсttf-dejavu, если в отчётах есть не-ASCII текст) - macOS —
brew install --cask wkhtmltopdf(на старых Homebrew работаетbrew install wkhtmltopdf) - CentOS / Rocky / RHEL — скачайте RPM с официальной страницы релизов и установите
rpm -i …. Дистрибутивная версия часто старше 0.12.6 и спотыкается на flex-CSS. - Windows — скачайте
.exe-инсталлятор с официальной страницы и укажите путь к нему вMOCKARTY_PDF_WKHTMLTOPDF_BIN.
После установки перезапустите Mockarty. В startup-логе появится test-plan PDF engine selected engine=wkhtmltopdf если детектор сработал. Кнопка «Скачать PDF» в отчёте о прогоне тест-плана начнёт работать без выставления env-vars.
Траблшутинг: если экспорт всё ещё возвращает 501 после установки — проверьте, что бинарь в $PATH admin-ноды (which wkhtmltopdf) и что он исполняется (wkhtmltopdf --version). Если установили в нестандартный путь — выставьте MOCKARTY_PDF_WKHTMLTOPDF_BIN=/полный/путь/к/wkhtmltopdf и перезапустите. Установите MOCKARTY_DEBUG=1, чтобы Mockarty писал упавший HTML в /tmp/mockarty-pdf-*.html для локального воспроизведения.
Кластерный режим (multi-node развёртывания):
| Переменная | По умолчанию | Описание |
|---|---|---|
CLUSTER_MODE |
false |
Включить leader election через advisory-lock PostgreSQL. Установите true, когда запускаете больше одной административной ноды. При false каждая нода считает себя лидером (singleton-джобы будут дублироваться) |
NODE_ID |
автогенерация | Уникальный идентификатор ноды. Задавайте явно, только если нужна стабильная идентификация ноды в логах/метриках |
Правило для multi-node.
CLUSTER_MODE=trueтребует PostgreSQL (DB_USE=pg). SQLite не поддерживает advisory-lock, используемые для leader election.
Event bus (асинхронная обработка событий):
| Переменная | По умолчанию | Описание |
|---|---|---|
EVENT_BUS_QUEUE_SIZE |
1000 |
Глубина in-memory очереди для асинхронных событий |
EVENT_BUS_RETRY_MAX |
3 |
Максимум повторов на событие |
EVENT_BUS_WORKER_COUNT |
2 |
Число фоновых воркеров, обрабатывающих очередь |
Аналитика (opt-in, анонимная):
| Переменная | По умолчанию | Описание |
|---|---|---|
ANALYTICS_ENABLED |
false |
Opt-in на анонимные метрики использования. Собираются только агрегированные счётчики — без PII, без содержимого моков, без ID пользователей |
ANALYTICS_LEVEL |
full |
full — все метрики; minimal — только счётчики ресурсов |
ANALYTICS_REPORT_HOUR |
1 |
UTC-час (0–23) для ежедневной агрегации |
ANALYTICS_DATA_DIR |
"" |
Каталог для air-gapped экспортов (по умолчанию: ./data) |
Test Plans (живые логи и долговременный архив):
Движок Test Plans пишет каждую строку лога элемента через sink, который раздваивает запись на основное хранилище (таблица test_plan_item_logs — используется для повторного воспроизведения в UI) и опциональный вторичный архив (локальный файл или S3-совместимое хранилище — используется для длительного хранения или экспорта в SIEM). Если вторичная запись недоступна, основной путь продолжает работать — логи не теряются из-за временной недоступности S3.
| Переменная | По умолчанию | Описание |
|---|---|---|
TESTPLAN_LOGSINK_SECONDARY |
"" (выкл.) |
Вторичный архивный backend. Установите file для зеркалирования логов в каталог либо s3 — для зеркалирования в S3-совместимое объектное хранилище. Пустое значение полностью отключает вторичный путь. |
TESTPLAN_LOGSINK_FILE_BASE |
"" |
Обязательно при TESTPLAN_LOGSINK_SECONDARY=file. Абсолютный путь к каталогу, куда дописывается по одному файлу на каждый запуск. Каталог должен быть доступен на запись процессу Mockarty. |
TESTPLAN_LOGSINK_S3_BUCKET |
"" |
Обязательно при TESTPLAN_LOGSINK_SECONDARY=s3. Имя S3-бакета. Креденшелы AWS считываются из стандартной цепочки переменных окружения / IRSA. |
TESTPLAN_LOGSINK_S3_PREFIX |
"" |
Опциональный префикс ключа, дописываемый к каждому загружаемому объекту (например, mockarty/prod/). Удобно для разделения тенантов или окружений в общем бакете. |
Совет для air-gapped. В изолированных от интернета установках оставляйте
TESTPLAN_LOGSINK_SECONDARYпустым. Основной sink в БД всё равно сохраняет каждую строку лога, и живой UI-tail продолжает работать.
Общие:
| Переменная | По умолчанию | Описание |
|---|---|---|
ENV |
development |
Имя окружения (development или production). Влияет на формат логов и поведение по умолчанию |
LOG_LEVEL |
info |
debug, info, warn, error |
Администрирование Kubernetes
При запуске Mockarty в Kubernetes административная нода может управлять жизненным циклом кластера напрямую через Admin API и CLI. Оператор отслеживает Custom Resource MockartyCluster и автоматически приводит resolver-ноды, runner-агенты и интеграции к желаемому состоянию.
Переменные окружения для управления K8s
| Переменная | По умолчанию | Описание |
|---|---|---|
K8S_MANAGEMENT |
auto |
auto — определять автоматически, запущен ли сервис в кластере; true — принудительно включить; false — отключить |
K8S_NAMESPACE |
(пусто) | Пространство имён, в котором находится CR MockartyCluster. Пусто = использовать namespace из in-cluster ServiceAccount |
K8S_CLUSTER_NAME |
mockarty |
Имя Custom Resource MockartyCluster |
K8S_KUBECONFIG |
(пусто) | Путь к файлу kubeconfig. Если пусто — используется ServiceAccount внутри кластера |
K8S_MAX_RUNNERS_PER_NS |
5 |
Максимальное количество runner-подов на пространство имён (квота ресурсов) |
K8S_MAX_RESOLVERS_PER_NS |
3 |
Максимальное количество resolver-подов на пространство имён (квота ресурсов) |
Эндпоинты Admin API
Все Kubernetes-эндпоинты требуют аутентификации и доступны только на административной ноде.
| Метод | Эндпоинт | Описание |
|---|---|---|
GET |
/api/v1/k8s/status |
Возвращает статус кластера: поды, версии, состояние, использование ресурсов |
POST |
/api/v1/k8s/scale |
Масштабирование компонента (resolver/runner) до заданного количества реплик |
POST |
/api/v1/k8s/upgrade |
Обновление образов компонента до целевой версии |
POST |
/api/v1/k8s/restart |
Выполнение rolling restart компонента |
GET |
/api/v1/k8s/pods/:name/logs |
Потоковая передача логов конкретного пода (поддерживает query-параметры follow и tailLines) |
POST |
/api/v1/k8s/integrations |
Создание новой интеграции пространства имён |
DELETE |
/api/v1/k8s/integrations/:name |
Удаление интеграции пространства имён по имени |
GET |
/api/v1/k8s/integrations |
Список всех настроенных интеграций |
Пример масштабирования:
curl -X POST http://localhost:5770/api/v1/k8s/scale \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"component": "resolver", "replicas": 5}'
Пример обновления:
curl -X POST http://localhost:5770/api/v1/k8s/upgrade \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"component": "runner", "version": "1.3.0"}'
RBAC
- Операции с кластером (
scale,upgrade,restart,status,logs) доступны только пользователям с ролью Admin или Support. - Интеграции пространств имён (
/api/v1/k8s/integrations) доступны владельцам пространств имён для своих пространств и администраторам — для любых.
Команды CLI
CLI предоставляет сокращённые команды, вызывающие Admin API под капотом:
# View cluster status
mockarty-cli cluster status
# Scale a component
mockarty-cli cluster scale resolver --replicas 5
# Upgrade cluster image tag (upgrades all components at once)
mockarty-cli cluster upgrade --tag 1.3.0
# Rolling restart
mockarty-cli cluster restart resolver
# Stream pod logs
mockarty-cli cluster logs <pod-name> --follow --tail 100
Экспорт журнала аудита и интеграция с SIEM
Mockarty ведёт неизменяемый журнал аудита всех событий аутентификации, изменений конфигурации и административных действий. Журнал можно экспортировать из Админ-панели или через REST API в одном из четырёх форматов, совместимых с основными SIEM-платформами.
Словарь событий аутентификации. Перечисленные ниже глаголы эмитируются подсистемой аутентификации автоматически и попадают в поток экспорта без дополнительной настройки:
| Глагол | Срабатывает |
|---|---|
failed_login |
Неверные учётные данные, попытка входа в заблокированный аккаунт |
account_lockout |
Переход аккаунта в заблокированное состояние (ровно один раз) |
oauth_login |
Успешный вход через OAuth / SSO |
oauth_login_failed |
Ошибка обмена токена / получения профиля / аутентификации |
ldap_login |
Успешный bind в LDAP / AD |
ldap_login_failed |
Ошибка bind в LDAP |
totp_enabled |
Первая успешная верификация TOTP (переход в 2FA-on) |
totp_disabled |
Самостоятельное отключение 2FA |
totp_verify_failed |
Неверный код TOTP (включение, отключение, step-up) |
recovery_codes_generated |
Перегенерация набора резервных кодов |
password_changed |
Смена пароля или первоначальная установка |
session_regenerated |
Повышение сессии после прохождения 2FA |
audit_logs_exported |
Экспорт журнала аудита (csv / json / syslog / cef). Metadata содержит формат, объём в байтах и использованные фильтры — SOC сможет воспроизвести, что именно покинуло систему. |
audit_legal_hold_applied |
Установлена юридическая блокировка журнала (SOX §802 / 719-П §6.4). Metadata содержит окно (from_ms, to_ms), опциональный namespace и сводку фильтра, указанную оператором. |
audit_legal_hold_released |
Действующая блокировка снята; ранее удержанные строки возвращаются под штатную политику хранения. Metadata содержит то же окно плюс released_by и released_ms. |
| Формат | Content-Type | Применение |
|---|---|---|
csv |
text/csv |
Просмотр в таблицах, ручные compliance-аудиты |
json |
application/json |
Структурированный архив, ETL |
syslog |
text/plain (RFC 5424) |
Передача в syslog-ng, rsyslog, любой SIEM-коллектор |
cef |
text/plain (CEF 0) |
ArcSight, QRadar, Splunk, MaxPatrol SIEM, KUMA, RuSIEM |
REST API
# CSV-дамп за последние 24 часа (миллисекунды от эпохи)
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/admin/audit/export?format=csv&from=$(date -u -d '1 day ago' +%s000)" \
> audit.csv
# Syslog RFC 5424 — поток в SIEM-коллектор
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/admin/audit/export?format=syslog" \
| nc -u siem-collector.example.com 514
# ArcSight CEF для ingestion существующим SIEM-парсером
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/admin/audit/export?format=cef" \
> audit.cef
Поддерживаемые фильтры: user_id, action, resource_type, resource_id, namespace, from, to, limit.
CLI
# Почасовой дамп syslog для SIEM
mockarty-cli audit export \
--format syslog \
--from $(date -u -d '1 hour ago' +%s000) \
--to $(date -u +%s000) \
> audit-$(date +%s).log
# CEF в файл
mockarty-cli audit export --format cef --output audit.cef
# Фильтр по пользователю
mockarty-cli audit export --format json --user-id u-42 --action login
Формат записей
- Syslog (RFC 5424) — одна запись на строку, facility 13 (security/authorization). Structured-data блок
[audit@<PEN> key="value" ...]содержит полную запись. Значение private-enterprise number по умолчанию — placeholder; фактический PEN задаётся на этапе сборки для production-развёртываний. - CEF 0 —
CEF:0|Mockarty|Mockarty|<версия>|<action>|<name>|<severity>|<ext>. Поля расширения используют CEF-словарь (suser,src,act,rt,requestMethod,requestUrl,externalIdплюс customcs1/cs2/cs3с label’ами для namespace/resource).
Оба SIEM-формата экранируют служебные символы (|, =, \, ", ], переводы строк), гарантируя одну запись на строку и безопасный ingestion в любой RFC- или CEF-совместимый парсер.
RBAC: экспорт аудита требует роли
adminилиsupport. Рольsupportможет экспортировать, но не изменять записи.
Срок хранения журналов аудита
Срок хранения журнала аудита задаётся расписанием audit_log_cleanup в Админ-панели → Политики очистки. Значение по умолчанию настраивается под конкретное развёртывание; записи старше этого срока жёстко удаляются, чтобы таблица не разрасталась бесконтрольно.
Для регулируемых развёртываний (банки по 719-П ЦБ РФ §6.4, государственные системы по ФСТЭК приказ №17 п.4.2) Mockarty поддерживает минимальный порог соответствия, заданный переменной окружения. Если переменная установлена, любое меньшее значение, сохранённое оператором через UI, автоматически поднимается до порога — оператор не может случайно сократить срок хранения ниже законодательно установленного минимума.
| Переменная | По умолчанию | Пример | Описание |
|---|---|---|---|
MOCKARTY_AUDIT_RETENTION_MIN_DAYS |
не задана | 1095 |
Минимальный срок хранения аудита (дни). UI-значение ниже порога округляется вверх. |
Типовые значения: 1095 для 719-П ЦБ РФ (3 года), 1825 для расширенных политик ФСТЭК (5 лет). Для нерегулируемых развёртываний переменную оставляют неустановленной.
Порог применяется на каждом тике планировщика очистки и логируется на уровне WARN, когда он поднял эффективный срок хранения.
Юридические блокировки журнала аудита (legal hold)
Юридическая блокировка — это удержание, замораживающее журнал аудита на время нормативной проверки, расследования инцидента или судебного разбирательства. Пока активна хотя бы одна блокировка, задача очистки сохраняет каждую запись аудита, чья метка времени попадает в окно блокировки, даже если штатный срок хранения уже истёк.
Блокировки закрывают сразу три требования:
- SOX §802 / 18 USC §1519 — уничтожение документов под действующим judicial preservation notice в США является уголовным преступлением.
- 719-П ЦБ РФ §6.4 — банковский оператор обязан иметь возможность заморозить журналы аудита по запросу ЦБ.
- ФСТЭК приказ №17 п.4.2 — целостность журналов в ходе расследования инцидентов ИБ.
Каждая блокировка — это диапазон от метки from_time до опциональной to_time (открытые блокировки допускаются) — и может быть ограничена одним пространством имён или применена глобально. Установка и снятие блокировки сами попадают в аудит через verbs audit_legal_hold_applied и audit_legal_hold_released.
REST API
# Заморозить последние 7 дней для пространства имён "prod"
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"reason": "INC-42 preservation",
"from_time": "2026-04-12T00:00:00Z",
"to_time": "2026-04-19T23:59:59Z",
"namespace": "prod",
"filter_summary": {"ticket": "INC-42"}
}' \
"$MOCKARTY_URL/api/v1/admin/audit/legal-holds"
# Список блокировок (status: active|released, limit 1..1000)
curl -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/admin/audit/legal-holds?status=active"
# Снять блокировку (идемпотентно — повторные вызовы возвращают 200 со снятой записью)
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
"$MOCKARTY_URL/api/v1/admin/audit/legal-holds/<hold-id>"
Поведение
- Пока активна хотя бы одна блокировка, планировщик очистки пропускает попадающие в её окно строки. При отсутствии блокировок план запроса DELETE не меняется — нерегулируемые развёртывания не платят накладных расходов.
- Блокировка, ограниченная namespace, защищает только строки этого namespace. Блокировка без поля
namespaceпокрывает все пространства имён. - Открытая блокировка (без
to_time) покрывает все строки отfrom_timeи далее без верхней границы. - Снятые блокировки не удаляются — они остаются в таблице
audit_log_legal_holdsкак доказательная база того, что было заморожено, когда и кем. - RBAC: POST и DELETE доступны только роли
admin. Рольsupportможет просматривать список блокировок (SOC-видимость), но не устанавливать и не снимать их.
Безопасность
Если на момент очистки БД недоступна, планировщик прерывает текущий тик, а не рискует удалить защищённые строки. Повтор будет на следующем интервале.
Сборка для соответствия требованиям: SQLite на чистом Go
Mockarty поддерживает два драйвера SQLite, выбираемых на этапе сборки через Go build tags:
| Флаг сборки | Драйвер | Примечания |
|---|---|---|
CGO_ENABLED=0 (по умолчанию для релизов) |
modernc.org/sqlite (чистый Go) |
Требуется для distroless / scratch-образов и аудита закрытых контуров — без libc. |
CGO_ENABLED=1 |
github.com/mattn/go-sqlite3 |
Только для удобства разработки. В официальных образах не используется. |
Все продуктовые Dockerfile (Dockerfile.mockarty, Dockerfile.runner, Dockerfile.resolver, Dockerfile.operator, Dockerfile.server-generator, Dockerfile.mockarty-license-server) собираются с CGO_ENABLED=0. Аудитор может проверить, какой драйвер связан в релизной сборке:
go tool nm mockarty | grep -E 'sqlite3?' | head
Сборка, соответствующая требованиям, содержит только символы modernc.org/sqlite и ни одной ссылки на github.com/mattn/go-sqlite3.
Шифрование ПДн на уровне полей (at-rest)
Для регулируемых установок под требования 152-ФЗ «О персональных данных» (УЗ-3 / УЗ-4) и 719-П ЦБ РФ §6.5 (защита ПДн у оператора) Mockarty умеет шифровать высокочастотные PII-колонки на уровне приложения. Защищены: колонка user_agent журнала аудита (стабильный PII-отпечаток клиента, пишется на каждый аутентифицированный запрос), email и full_name (ФИО) пользователей.
Функция выключена по умолчанию — если переменные окружения не установлены, колонки хранятся в открытом виде, что корректно для dev- и нерегулируемых окружений. Включение — нулевой даунтайм: существующие plaintext-строки продолжают читаться через прозрачный passthrough, а новые записи ложатся уже зашифрованными конвертами.
| Переменная | По умолчанию | Пример | Описание |
|---|---|---|---|
MOCKARTY_PII_ENCRYPTION_KEY |
(не задана) | base64(32 случайных байт) |
Включает шифрование PII-полей. Декодированная длина должна быть ровно 32 байта. |
MOCKARTY_PII_HMAC_PEPPER |
(не задана) | base64(32+ случайных байт) |
Pepper для детерминированных поисковых индексов, используемых при логине и поиске в админке. Требуется для включения шифрования email и ФИО. Обязательно другой секрет, чем MOCKARTY_PII_ENCRYPTION_KEY — эшелонированная защита. |
MOCKARTY_PII_DECRYPT_CACHE_ENTRIES |
10000 |
50000 / disabled |
Размер in-memory LRU для повторных чтений (пагинация аудита, SIEM-экспорт). disabled — выключить. |
Генерация секретов (на доверенной рабочей станции; оба значения отдельными записями в секрет-менеджер):
# AES-256 ключ шифрования (ровно 32 байта)
openssl rand -base64 32
# HMAC pepper для blind-индекса (минимум 32 байта; длиннее — допустимо)
openssl rand -base64 32
Почему два разных секрета. Ключ шифрования защищает конфиденциальность конвертов; pepper ключует детерминированные хеши для equality-запросов (логин по email, привязка OAuth/SAML-аккаунтов) и подстрочного поиска. Компрометация одного не должна автоматически компрометировать другой — оба хранятся как отдельные записи в секрет-менеджере и ротируются независимо.
Что шифруется. При включении обеих переменных шифруются: user_agent аудита, email и full_name пользователя. Все операции, необходимые системе (логин по email, привязка OAuth/SAML-аккаунтов, поиск в админке), продолжают работать прозрачно — Mockarty поддерживает детерминированные поисковые индексы, поэтому функциональность сохраняется полностью. Атакующий, получивший копию базы данных, не сможет восстановить email или ФИО без pepper.
Ротация:
- Ключ нельзя подменять «на живую» в работающем кластере, пока существуют строки, зашифрованные старым ключом. Процедура: развернуть новый ключ параллельно со старым, выполнить backfill для пересохранения всех строк, снять старый ключ после завершения backfill.
Backfill legacy-plaintext строк
После первого включения шифрования строки, записанные ранее, остаются в открытом виде. Путь чтения обрабатывает их прозрачно, простоев нет; чтобы перевести их в зашифрованные конверты, запустите backfill-субкоманду в окно обслуживания:
# audit_logs.user_agent — посчитать кандидатов (без записи)
./mockarty --pii-backfill audit_logs --pii-backfill-dry-run
# audit_logs.user_agent — зашифровать пакетами по 1000 строк
./mockarty --pii-backfill audit_logs --pii-backfill-batch 1000
# users.email + users.full_name + hmac + триграммы (требует MOCKARTY_PII_HMAC_PEPPER)
./mockarty --pii-backfill users --pii-backfill-dry-run
./mockarty --pii-backfill users --pii-backfill-batch 500
# Ограничить объём работы для репетиции на большой таблице (10 батчей по 500)
./mockarty --pii-backfill audit_logs --pii-backfill-max-batches 10
Таргет users шифрует email и full_name вместе со связанными поисковыми индексами. При ошибке на отдельной записи прерывается только эта запись — остальной батч продолжается без изменений.
Свойства:
- Идемпотентность. Уже зашифрованные строки пропускаются, поэтому повторные запуски после падения пода или перезапуска безопасны.
- Без блокировок. Батчи коммитятся независимо — чтения и записи продолжаются с обычной пропускной способностью в течение всего backfill.
- Корректная реакция на сигналы.
SIGINT/SIGTERMпрерывает работу после текущего батча; следующий запуск продолжит с того же места. - Требует оба ключа. Субкоманда немедленно завершается с ошибкой, если
MOCKARTY_PII_ENCRYPTION_KEYне задан или некорректен. Таргетusersдополнительно требуетMOCKARTY_PII_HMAC_PEPPER.
Запускается на основной БД (те же DB_DSN, DB_USE, что у админ-ноды). Возвращает код 0 при успехе и печатает итог: PII backfill complete: table=audit_logs column=user_agent scanned=... encrypted=... skipped=... batches=... dry_run=false.
Источник ключевого материала: software или HSM (PKCS#11)
Для установок госсектора (ФСТЭК приказ №17 п.21, УЗ-2 и выше) и банковского сектора (ЦБ РФ 719-П §5.1) хранить долгоживущие AES- и HMAC-ключи в переменных окружения недостаточно — регулятор требует хранения ключевого материала на сертифицированном оборудовании (ФСТЭК КС2/КС3 или FIPS 140-2 Level 2+). Mockarty абстрагирует источник ключей через единый интерфейс KeyStore с двумя взаимозаменяемыми бэкендами.
| Переменная | По умолчанию | Значения | Описание |
|---|---|---|---|
MOCKARTY_KEYSTORE |
software |
software | pkcs11 |
Бэкенд ключевого материала. Не задана = software (исторический env-var путь). |
MOCKARTY_PKCS11_LIB |
(не задана) | /usr/lib/softhsm/libsofthsm2.so |
Абсолютный путь к shared object PKCS#11-библиотеки HSM-вендора. Требуется для pkcs11. |
MOCKARTY_PKCS11_SLOT |
(не задана) | 0 |
Номер слота с KEK. Требуется для pkcs11. |
MOCKARTY_PKCS11_PIN |
(не задана) | 1234 |
User PIN. В production предпочитайте MOCKARTY_PKCS11_PIN_FILE (env-переменные утекают в ps). |
MOCKARTY_PKCS11_PIN_FILE |
(не задана) | /run/secrets/hsm-pin |
Путь к файлу с PIN. Приоритетнее, чем MOCKARTY_PKCS11_PIN. |
MOCKARTY_PKCS11_KEK_LABEL |
(не задана) | mockarty-pii-kek |
CKA_LABEL симметричного KEK (key-encryption key) на HSM. |
MOCKARTY_PKCS11_WRAPPED_PII_KEY |
(не задана) | base64 шифротекста | DEK (AES-256) в обёртке под KEK. Распаковывается один раз на старте. |
MOCKARTY_PKCS11_WRAPPED_PEPPER |
(не задана) | base64 шифротекста | HMAC-pepper в обёртке под KEK. |
MOCKARTY_PKCS11_UNWRAP_MECHANISM |
aes-cbc-pad |
aes-cbc-pad | aes-gcm |
Механизм обёртки, использованный при генерации wrapped-значений. |
Как это работает. Ключ шифрования ключей (KEK) никогда не покидает HSM. При старте Mockarty аутентифицируется к PKCS#11-токену и использует KEK для распаковки ключа шифрования данных из значения MOCKARTY_PKCS11_WRAPPED_PII_KEY — распакованный материал хранится только в памяти процесса и обнуляется при корректном выключении. Отзыв доступа к HSM (смена PIN, блокировка пользователя, выключение токена) достаточен, чтобы заблокировать все работающие и будущие экземпляры Mockarty от зашифрованных данных.
Сборка с поддержкой PKCS#11. Стандартный бинарник Mockarty собирается без CGO (совместим с distroless-образами) и не линкует PKCS#11-библиотеку. Операторы, которым нужна HSM-интеграция, собирают собственный образ с build-tag pkcs11:
# Требует CGO и наличие PKCS#11 shared library от HSM-вендора в путях поиска библиотек.
# Для сборки с поддержкой PKCS#11 обратитесь к вашей CI/CD-документации или
# к поставщику Mockarty — необходим build-flag -tags pkcs11 и CGO_ENABLED=1.
Выбор MOCKARTY_KEYSTORE=pkcs11 на бинаре, собранном без тега, сразу падает на старте с сообщением keystore: PKCS#11 backend is not compiled in — rebuild with -tags pkcs11 — некорректно настроенный деплой никогда не «откатится» тихо на software-ключи.
Провижининг ключей (пример для SoftHSMv2 в staging — в production замените на сертифицированный HSM):
# 1. Инициализировать токен и задать user PIN (один раз на HSM/слот).
softhsm2-util --init-token --slot 0 --label mockarty --pin 1234 --so-pin 5678
# 2. Сгенерировать KEK на HSM — ключ никогда не покинет токен.
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --slot 0 --login --pin 1234 \
--keygen --key-type AES:32 --label mockarty-pii-kek --usage-wrap --usage-decrypt
# 3. Сгенерировать свежий DEK вне HSM, обернуть его под KEK, выгрузить base64:
openssl rand 32 > /tmp/dek.bin
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --slot 0 --login --pin 1234 \
--encrypt --mechanism AES-CBC-PAD --iv $(printf '%.0s00' {1..16}) \
--input-file /tmp/dek.bin --output-file /tmp/dek-wrapped.bin --label mockarty-pii-kek
base64 -w0 /tmp/dek-wrapped.bin # → значение для MOCKARTY_PKCS11_WRAPPED_PII_KEY
# 4. Повторить для HMAC-pepper (32 случайных байта, обёрнутые под тем же KEK).
# 5. Удалить plaintext DEK и pepper с рабочей станции оператора.
shred -u /tmp/dek.bin
Мониторинг. Эндпоинт /health включает раздел keystore с активным бэкендом (software или pkcs11), флагом pkcs11_compiled_in и результатом проверки PKCS#11-сессии (C_GetSessionInfo). Потерянная HSM-сессия выставляет pod в unhealthy — оператор пересоздаёт деплой для повторной аутентификации.
Соответствие требованиям. ФСТЭК приказ №17 п.21 (УЗ-2+ аппаратная защита ключей), ЦБ РФ 719-П §5.1 (HSM-требование для платёжной инфраструктуры), 152-ФЗ УЗ-3 (разделение владельца ключа и владельца данных — HSM хранит KEK, Mockarty хранит данные).
Смотрите также
- Быстрый старт — Запуск за 20 минут
- Установка и развёртывание — Docker-развёртывание, переменные окружения и настройка TLS
- Руководство по интеграциям — Настройка resolver-нод, runner-агентов и webhooks
- Контрактное тестирование — Валидация моков по OpenAPI-спецификациям и обнаружение дрейфа моков
- Chaos Engineering — Эксперименты с инъекцией сбоев для тестирования устойчивости (PRO)
- Руководство по веб-интерфейсу — Подробное руководство по веб-интерфейсу
- Справочник API — Полная документация REST API для программного доступа