Перейти к основному содержимому

Установка системы

Развёртывание системы состоит из следующих этапов:

  • получение дистрибутива приложения в виде Docker-образов компонентов;
  • создание базы данных на существующем сервере СУБД;
  • подготовка конфигурации;
  • запуск Docker-контейнера веб-приложения;
  • запуск Docker-контейнера транспортного сервера.

Предварительные требования:

  • машина или сервер с установленной системой контейнеризации для запуска веб-приложения;
  • отдельная машина или сервер с установленной системой контейнеризации для запуска транспортного сервера, если он используется;
  • сервер СУБД и учётная запись.

Системные требования описаны в статье Системные требования.

Получение дистрибутива

Дистрибутив приложения «ФинГрад — Корпоративное казначейство» поставляется в виде Docker-образов отдельных компонентов:

  • веб-приложение;
  • транспортный сервер.

Каждый компонент загружается и разворачивается отдельно на соответствующих целевых серверах. Для загрузки Docker-образов на сервере должна быть установлена система контейнеризации, например Docker.

Команда для загрузки Docker-образа:

docker pull registry.fingrad.com/{component}:{version}

где:

  • {component} – имя компонента дистрибутива. Допустимые значения:
    • web – веб-приложение;
    • transport-server – транспортный сервер.
  • {version} – номер версии дистрибутива.

Например, для загрузки версии 6.0.0.41569 используются команды:

docker pull registry.fingrad.com/web:6.0.0.41569
docker pull registry.fingrad.com/transport-server:6.0.0.41569

Выполнение команд требует сетевого доступа к ресурсам:

Передача дистрибутива в сеть без доступа в Интернет

Для установки «ФинГрад — Корпоративное казначейство» в изолированном контуре без доступа к Интернету необходимо выполнить следующие действия:

  1. на любой машине с доступом в Интернет и установленной системой контейнеризации скачать Docker-образы компонентов дистрибутива (см. Получение дистрибутива);

  2. на этой же машине выполнить команды в терминале для сохранения образов в виде файлов-архивов:

    docker save registry.fingrad.com/{component}:{version} | gzip > fingrad-{component}.tar.gz
  1. перенести сформированные .tar.gz файлы на соответствующие целевые машины в изолированном контуре. Например, при помощи инструментов scp, cp или rsync;

  2. на целевой машине выполнить команду в терминале для загрузки образа из соответствующего файла-архива:

    docker load -i {archive-name}.tar.gz

    Например, для веб-приложения:

    docker load -i fingrad-web.tar.gz

    Для транспортного сервера:

    docker load -i fingrad-transport-server.tar.gz

База данных

ПО «ФинГрад — Корпоративное казначейство» в своей работе использует базу данных определённой структуры. Создать её можно при помощи утилиты, входящей в дистрибутив приложения. Требуется существующий сервер СУБД и его учётная запись.

Шаблон команды терминала для создания БД:

docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:{version} \
../DbManager.dll /action=create /dbms={dbms} /server={server} [/port={port}] /user={user} /password={password} /database={database}

где:

  • {version} – номер версии дистрибутива;
  • {dbms} – тип используемой СУБД:
    • postgresql – PostgreSQL;
    • mssql – Microsoft SQL Server;
  • {server} – адрес сервера СУБД;
  • {port} – порт подключения к СУБД, указывается при необходимости;
  • {user} – имя учётной записи СУБД;
  • {password} – пароль учётной записи СУБД;
  • {database} – имя создаваемой базы данных.

Параметр {port} указывать необязательно, если он стандартный для СУБД.

Пример команд для создания БД с названием MyCompany на сервере СУБД с IP-адресом 10.0.0.123 под учётной записью login / pass.

Для PostgreSQL:

docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:6.0.0.41569 \
../DbManager.dll /action=create /dbms=postgresql /server="10.0.0.123" /port=5432 /user=login /password=pass /database=MyCompany

Для Microsoft SQL Server:

docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:6.0.0.41569 \
../DbManager.dll /action=create /dbms=mssql /server="10.0.0.123" /user=login /password=pass /database=MyCompany

В результате успешного создания БД окончание вывода команды будет иметь вид:

Создание базы данных...
Завершение работы...

Настройка ОС Astra Linux

Компоненты приложения «ФинГрад — Корпоративное казначейство» при аварийных завершениях формируют дампы и отчёты для дальнейшего анализа нештатных ситуаций и инцидентов. Операционная система Astra Linux по умолчанию запрещает необходимую для этого трассировку процессов. При активном запрете запуск приложения невозможен.

Чтобы разрешить трассировку, на каждом хосте, где запускаются Docker-контейнеры приложения, необходимо отключить блокировку командой:

sudo astra-ptrace-lock disable

После выполнения команды перезагрузите машину. В результате параметр kernel.yama.ptrace_scope примет значение 1 (разрешена трассировка дочерних процессов родительским).

Проверить текущее значение параметра можно командой:

cat /proc/sys/kernel/yama/ptrace_scope

Подробнее об ограничении использования системного вызова ptrace см. официальную документацию Astra Linux по управлению параметрами ядра.

Конфигурация компонентов

Подготовка рабочих каталогов

Перед запуском компонентов необходимо создать рабочие каталоги для хранения конфигурации, сертификатов и данных КриптоПро. Рабочие каталоги создаются на серверах, где будут запускаться соответствующие Docker-контейнеры.

Пути к рабочим каталогам можно выбрать самостоятельно. В примерах ниже используются следующие пути:

  • веб-приложение: ~/fingrad/app;
  • транспортный сервер: ~/fingrad/ts.

Структура рабочего каталога:

<рабочий-каталог>/
├── config/ # конфигурационные файлы
├── certs/ # сертификаты для взаимодействия с банками
└── crypto/
├── keys/ # ключевые контейнеры клиентских сертификатов
└── data/ # данные КриптоПро, сохраняемые между перезапусками контейнера

Важно! Владельцем директорий, предназначенных для работы с КриптоПро CSP, должен быть пользователь app с UID 1654, от имени которого запускается сервис в контейнере. Данное требование необходимо, так как под этим пользователем в контейнере устанавливаются сертификаты. Права остальных пользователей целевой машины должны быть ограничены на доступ к криптоконтейнерам с приватными ключами:

Для назначения владельца и ограничения прав доступа необходимо выполнить команды:

sudo chown 1654:1654 <рабочий-каталог>/crypto/data
sudo chown 1654:1654 <рабочий-каталог>/crypto/keys
sudo chmod 744 <рабочий-каталог>/crypto/data
sudo chmod 700 <рабочий-каталог>/crypto/keys

где 1654 – идентификатор пользователя внутри Docker-контейнера.

Строка подключения к БД

В конфигурационных файлах компонентов указывается строка подключения к базе данных.

Ниже приведены примеры, где:

  • 10.0.0.123 – IP-адрес сервера СУБД;
  • 5432 – порт сервера СУБД;
  • MyCompany – имя базы данных;
  • login – имя учётной записи СУБД;
  • pass – пароль учётной записи СУБД.

PostgreSQL:

Driver={PostgreSQL Unicode};Server=10.0.0.123;Port=5432;Database=MyCompany;Uid=login;Pwd=pass;sslmode=prefer;timeout=15;commlog=1;persist security info=True;

В примере приведена типовая строка подключения к БД через PostgreSQL ODBC Driver (psqlODBC). Краткая справка: https://www.connectionstrings.com/postgresql-odbc-driver-psqlodbc/.

Microsoft SQL Server:

Driver={ODBC Driver 18 for SQL Server};language=Russian;server=10.0.0.123;connection timeout=30;network library=dbmssocn;packet size=16384;encrypt=yes;trustservercertificate=yes;uid=login;pwd=pass;Failover_Partner=;Database=MyCompany

В примере приведена типовая строка подключения к БД через Microsoft ODBC Driver for SQL Server. Описание параметров строки подключения приведено в документации Microsoft: https://learn.microsoft.com/sql/connect/odbc/dsn-connection-string-attribute.

Конфигурация веб-приложения

Перед запуском веб-приложения необходимо создать файл appsettings.json по пути:

<рабочий-каталог>/config/appsettings.json

Папка с этим файлом в дальнейшем будет примонтирована к Docker-контейнеру.

Пример содержимого appsettings.json:

{
"DbSettings": {
"ConnectionString": "{connection-string}"
}
}

где {connection-string} – строка подключения к БД (см. Строка подключения к БД).

Запуск веб-приложения

При наличии БД для подключения и файла конфигурации веб-приложение «ФинГрад — Корпоративное казначейство» запускается как Docker-контейнер. Шаблон команды:

docker container run --name fingrad \
-v <рабочий-каталог>/config/:/app/Fingrad/web/config/ \
-v <рабочий-каталог>/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v <рабочий-каталог>/crypto/data/:/var/opt/cprocsp/users/app/ \
-v <рабочий-каталог>/certs/:/home/app/certs/ \
--init \
--restart unless-stopped \
--detach \
-p <порт-хоста>:8080 \
registry.fingrad.com/web:{version}

В шаблоне необходимо заменить:

  • <рабочий-каталог> на путь к папке с файлом appsettings.json на хосте;
  • <порт-хоста> на порт хоста, по которому приложение будет доступно.

Пример команды для запуска приложения с рабочим каталогом по пути ~/fingrad/app/ на 80-м порту (HTTP):

docker container run --name fingrad \
-v ~/fingrad/app/config/:/app/Fingrad/web/config/ \
-v ~/fingrad/app/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v ~/fingrad/app/crypto/data/:/var/opt/cprocsp/users/app/ \
-v ~/fingrad/app/certs/:/home/app/certs/ \
--init \
--restart unless-stopped \
--detach \
-p 80:8080 \
registry.fingrad.com/web:6.0.0.41569

При успешном выполнении всех этапов установки системы приложение будет доступно на хосте по адресу http://localhost.

Конфигурация транспортного сервера

Перед запуском транспортного сервера необходимо создать файл appsettings.json по пути:

<рабочий-каталог>/config/appsettings.json

Файл должен содержать строку подключения к БД и секретный ключ транспортного сервера.

Секретный ключ формируется пользователем самостоятельно. Такое же значение необходимо будет указать в настройках банковских шлюзов в веб-интерфейсе приложения.

Пример содержимого appsettings.json:

{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionSettings": {
"DbConnectionString": "{connection-string}"
},
"AuthSettings": {
"TransportServerToken": "{token}"
}
}

где:

Запуск транспортного сервера

При наличии БД для подключения и файла конфигурации транспортный сервер «ФинГрад — Корпоративное казначейство» запускается как Docker-контейнер. Шаблон команды:

docker container run --name fingrad-transport-server \
-v <рабочий-каталог>/config/:/app/config/ \
-v <рабочий-каталог>/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v <рабочий-каталог>/crypto/data/:/var/opt/cprocsp/users/app/ \
-v <рабочий-каталог>/certs/:/home/app/certs/ \
--init \
--restart unless-stopped \
--detach \
-p <порт-хоста>:8080 \
registry.fingrad.com/transport-server:{version}

Пример команды для запуска приложения с конфигурацией по пути ~/fingrad/ts/ на 80-м порту (HTTP):

docker container run --name fingrad-transport-server \
-v ~/fingrad/ts/config/:/app/config/ \
-v ~/fingrad/ts/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v ~/fingrad/ts/crypto/data/:/var/opt/cprocsp/users/app/ \
-v ~/fingrad/ts/certs/:/home/app/certs/ \
--restart unless-stopped \
--init \
--detach \
-p 80:8080 \
registry.fingrad.com/transport-server:6.0.0.41569

Первый вход

Вход в систему сразу после развёртывания возможен по учётной записи администратора, имеющейся в новой БД по умолчанию: root / root.

Далее см. Вход в систему.

Примечание:

Если используется транспортный сервер, после входа в систему необходимо указать параметры подключения к нему.

Для этого в веб-интерфейсе откройте раздел Настройки шлюзов, выберите Транспортный сервер и заполните поля:

  • Адрес – URL транспортного сервера. Если при запуске контейнера транспортного сервера был указан нестандартный порт, его также необходимо указать в адресе, например http://10.0.0.124:8081 или https://ts.company.local:8443.
  • Секретный ключ – значение, указанное в параметре TransportServerToken в файле конфигурации транспортного сервера (см. Конфигурация транспортного сервера).