Настройки безопасности
В данном разделе описаны требования безопасности и элементы конфигурации, связанные с функциями безопасности платформы НТБот.
Настройки для серверного развёртывания (Диспетчер)
После установки платформы необходимо заменить значения по умолчанию во всех компонентах.
Файлы конфигурации сервисов хранятся в модуле config-service по пути
config-service/src/main/resources/config/ по схеме <имя-сервиса>-podman.yml.
Keycloak
| Параметр | Где изменить | Описание |
|---|---|---|
KC_BOOTSTRAP_ADMIN_USERNAME / KC_BOOTSTRAP_ADMIN_PASSWORD | docker-compose.yml | Учётные данные первоначального администратора Keycloak. Необходимо изменить пароль сразу после первого входа в Admin Console. |
Пароль пользователя dispatcheradmin | Admin Console → Users | Встроенный пользователь приложения. Заменить пароль при первом входе. |
KEYCLOAK_CLIENT_SECRET | docker-compose.yml (env) → api-gateway-service-podman.yml → spring.security.oauth2.client.registration.ntdispatcher.client-secret | Секрет клиента OAuth2. Сформировать новый в Keycloak Admin Console → Clients → ntdispatcher → Credentials. |
Настройка политик паролей и сессий выполняется в Keycloak Admin Console:
- Realm Settings → Security Defenses — защита от bruteforce-атак
- Realm Settings → Sessions — длительность пользовательской сессии
- Authentication → Policies — сложность пароля
API Gateway (TLS / SSL)
Все подключения к платформе должны осуществляться по HTTPS. В контейнерной поставке API Gateway использует PKCS12-хранилище ключей:
# api-gateway-service-podman.yml
server:
ssl:
key-store: /opt/ssh/ntdispatcher.p12
key-store-type: PKCS12
key-store-password: <пароль> # заменить значение по умолчанию
key-alias: ntdispatcherДля продуктивной среды необходимо:
- Заменить самоподписанный сертификат доверенным (от корпоративного CA или публичного CA).
- Установить надёжный пароль для хранилища ключей вместо значения по умолчанию.
- Поместить файл
.p12в защищённую директорию/opt/ssh/с правами только для пользователя службы.
PostgreSQL
| Параметр | Где изменить | Описание |
|---|---|---|
POSTGRES_PASSWORD | docker-compose.yml | Пароль суперпользователя PostgreSQL. |
spring.datasource.password | <сервис>-podman.yml (все сервисы с БД) | Пароль пользователя nt_dispatcher. Изменить в конфигах всех сервисов, использующих БД (launcher-service, scenario-service, project-service, statistic-service и др.). |
В продуктивной среде порт PostgreSQL (5432) должен быть закрыт для внешнего доступа.
InfluxDB
| Параметр | Где изменить | Описание |
|---|---|---|
app.influx.db.token | application-podman.yml | Токен доступа к InfluxDB. Заменить токен по умолчанию. |
MinIO (хранилище артефактов)
| Параметр | Где изменить | Описание |
|---|---|---|
ntbot.dispatcher.minio.accessKey | application-podman.yml | Логин MinIO. |
ntbot.dispatcher.minio.secretKey | application-podman.yml | Пароль MinIO. |
Порт MinIO (9000) должен быть закрыт для внешнего доступа.
Внутренний секрет сервисов
# application-podman.yml
app:
clientSecret: <значение> # секрет для межсервисных запросов токенов Keycloak — заменитьСетевые порты
В продуктивной среде внешний трафик терминируется на nginx (reverse proxy). Открывать для внешнего доступа следует только необходимые порты:
| Порт | Протокол | Компонент | Назначение | Внешний доступ |
|---|---|---|---|---|
| 4433 | HTTPS | nginx (reverse proxy) | Web-интерфейс + API | Да |
| 3001 | HTTPS | nginx (reverse proxy) | Дополнительная точка входа | Да |
| 8761 | HTTP | Eureka | Реестр сервисов | Нет |
| 8081 | HTTP | Config Service | Центральная конфигурация | Нет |
| 8086 | HTTP | InfluxDB | Метрики | Нет |
| 9200 | HTTP | MinIO (API) | Объектное хранилище | Нет |
| 9201 | HTTP | MinIO (Console) | Консоль управления MinIO | Нет |
| 5432 | TCP | PostgreSQL | СУБД | Нет |
| 9092–9093 | TCP | Kafka | Брокер сообщений | Нет |
| 2181 / 2888 / 3888 | TCP | Zookeeper | Координация Kafka | Нет |
| 8080 / 8443 / 9000 | HTTP / HTTPS | Keycloak | Аутентификация (внутри сети) | Нет |
Проверка состояния сервисов
Для проверки фактического состояния всех компонентов платформы выполните команду
в CLI из директории проекта, где находится docker-compose.yml:
sudo docker ps -aПроверьте колонку STATUS. При штатной работе все сервисы должны иметь статус healthy.

| Контейнер | Ожидаемый статус |
|---|---|
| ntdispatcher-nginx | healthy |
| ntdispatcher-api-gateway | healthy |
| ntdispatcher-keycloak | healthy |
| ntdispatcher-launcher-service | healthy |
| ntdispatcher-generator-service | healthy |
| ntdispatcher-scenario-service | healthy |
| ntdispatcher-schedule-service | healthy |
| ntdispatcher-project-service | healthy |
| ntdispatcher-statistic-service | healthy |
| ntdispatcher-artefact-storage-service | healthy |
| ntdispatcher-license-service | healthy |
| ntdispatcher-config-service | healthy |
| ntdispatcher-eureka-service | healthy |
| ntdispatcher-psql | healthy |
| ntdispatcher-influxdb | healthy |
| ntdispatcher-minio | healthy |
| ntdispatcher-kafka | healthy |
| ntdispatcher-zookeeper | healthy |
Запуск от непривилегированной учётной записи
Keycloak рекомендует запускать сервер от непривилегированной учётной записи операционной системы.
Контейнеры Docker следует запускать без флага --privileged и с явным указанием пользователя
через user: в docker-compose.yml.
Настройки для развёртывания на рабочей станции (Студия НТБот)
Студия НТБот — клиентское настольное приложение. При установке на рабочую станцию применяются следующие требования безопасности.
Учётная запись пользователя
- Студия НТБот должна устанавливаться и запускаться от имени стандартной (непривилегированной) учётной записи пользователя.
- Не требует прав администратора для обычной работы после установки.
Соединение с Диспетчером
- Подключение к Диспетчеру выполняется исключительно по протоколу HTTPS.
- Для корректной работы необходимо, чтобы SSL-сертификат Диспетчера был выпущен доверенным центром сертификации (CA), добавленным в системное хранилище доверенных сертификатов рабочей станции.
- Самоподписанные сертификаты допускаются только в тестовой среде.
Файлы конфигурации
- Файлы конфигурации Студии НТБот, содержащие параметры подключения, хранятся в директории данных приложения пользователя.
- Пароли пользователей не сохраняются в конфигурационных файлах; аутентификация осуществляется через Keycloak (OAuth2 / OIDC).
- Доступ к директории конфигурации ограничивается средствами ОС правами текущего пользователя.
Антивирусная защита
Платформа НТБот совместима с корпоративными системами антивирусной защиты (САВЗ). Установка и работа приложения не требуют изменения политик САВЗ и отключения антивирусного контроля.