config
Сервис конфигурации ecosoft-lexema8-configuration-service#
Сервис выдачи настроек других сервисов
Обращение к сервису из других сервисов для получения настроек идет по адресу config_service:3071
Note
Обязательный элемент системы. API доступно только внутри инфраструктуры серверной части lexema8.
Наследник шаблонного сервиса.
Работа с шифрованными файлами конфигурации#
Функционал шифрования обеспечивает наиболее безопасный способ хранения данных доступа к различным ресурсам (базы данных, почтовые сервера, провайдеры отправки смс-сообщений). Для шифрования файлов конфигурации используется симметричный алгоритм блочного шифрования aes-256-cbc.
Алгоритм действий системного администратора:
- Формирование конфигурационных файлов.
- Шифрование файлов с использованием предоставленного скрипта.
- Подготовка сервиса конфигурации для работы с шифрованными файлами конфигурации.
- Сборка образа с шифрованными файлами и настройками.
Шифрование файлов конфигурации#
Для обеспечения шифрования файлов в составе пакета ecosoft-lexema8-configuration-service присутствует скрипт encryptConfigs.js, который позволяет зашифровать все файлы формата *.js в определенной папке. Для работы скрипта необходима платформа NodeJS. Запуск скрипта осуществляется с помощью следующей команды:
node <путь к файлу скрипта> <путь к папке с конфигурационными файлами> <пароль для шифрования>
Пароль должен удовлетворять правилам безопасности организации, в которую поставляется решение. Держателем пароля является организация потребитель.
В результате выполнения скрипта получаем зашифрованные файлы с расширение .enc.
Примечание: запуск скрипта возможен как в ручном режиме так и с помощью средств автоматизации при сборке образа.
Настройка сервиса для работы с шифрованными файлами#
Для работы сервиса с шифрованными файлами необходимо:
- Настроить переменную окружения CONFIG_CIPHER, которая является флагом работы с шифрованием. Доступные значения true/false.
- Настроить переменную окружения CONFIG_KEY, которая должна содержать пароль, который использовался для шифрования файлов.
В производственном режиме#
Настройка переменных окружения производится в dockerfile сервиса конфигурации:
ENV CONFIG_CIPHER=true CONFIG_KEY=PaSsWoRd
При запуске сервиса в контейнере производится расшифровка файлов конфигурации.
Настройка сервиса#
- protocol - используемый веб-протокол (по умолчанию
'http'
). - host - имя хоста (по умолчанию
'localhost'
). - port - порт для запуска (по умолчанию
'3071'
). - script - путь к модулю, запускающему сервис (по умолчанию
'ecosoft-lexema8-configuration-service'
). - noProxify - настройка проксирования сервиса (по умолчанию
'true'
). - useCredentialVault - флаг использовать хранилища учетных записей windows (по умолчанию
'false'
). - keys - используемые ключи хранилища учетных записей windows (по умолчанию []).
Маршруты#
Маршрут запроса настроек#
По маршруту '/config' через POST запрос можно получить настройки проекта по требуемым ключам (ключи передаются через строковый массив).
post /config
headers: { "content-type": "application/json" } body: { "keys": keys }
где keys - массив ключей, для которых необходимо загрузить настройки. Ключи задаются строками, в которых через точку указан путь до требуемого раздела настроек или конкретного значения настройки. Если раздел находится в корне то пишут только его название.
Примеры:
'applications.data', 'common', 'db', 'applications.gate.ldap.url'
Возвращает объект с настройками в теле ответа на запрос.
Пример запроса#
Запрос:
headers: { "content-type": "application/json" } body: { "keys":["applications.radio","db"] }
Ответ:
body: { "db": { "main": { "host": "HOST", "database": "DATABASE", "dialect": "mssql", "instanceName": "sql", "user": "USER", "password": "PASSWORD", "isolationLevel": "READ_UNCOMMITTED", "requestTimeout": 15000, "applicationName": "ara", "pool": { "max": 20, "min": 0, "idleTimeoutMillis": 10000 } }, "radio": { "dialect": "sqlite", "logging": false }, "session": { "host": "localhost", "port": 6379, "db": 0 } }, "applications": { "radio.channels": { "ecosoft-lexema8-config": [ "messageCreated", "userIsTyping" ], "ecosoft-lexema8-chocolate": [ "kindCreated", "kindSearched" ], "ecosoft-lexema8": [ "legacy" ] } } }
Маршрут запроса файла настроек#
По маршруту '/files' через GET запрос можно получить файл настроек из корневой папки files сервиса конфигурации.
get /files/*Название файла*
Возвращает запрошенный файл без изменений.