Перейти к содержанию

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/*Название файла*

Возвращает запрошенный файл без изменений.

integration#

examples#