9. Приложение Б «Настройка и Установка Сервиса проверки полномочий Prohibitor» (опционально)
9.1. Описание конфигурационных файлов Сервиса проверки полномочий
9.1.1. Состав и содержание дистрибутивного пакета
Состав дистрибутива Сервиса проверки полномочий.
/distr/prohibitor– Сервис проверки полномочий:/distr/prohibitor/customLogLevels.xml– файл описания настроек логирования;/distr/prohibitor/conf/*.yml– заготовки конфигурационного файла;
В директории conf/ пакета находятся типовые заготовки конфигурационного файла.
Необходимо взять заготовку конфигурационного файла в соответствии с потребностями:
шаблон конфигурационного файла Сервиса проверки полномочий для продуктивной среды (2-х ЦОДовая конфигурация: ФЦОД, РЦОД):
conf/prod-prohibitor-application.yml.
шаблон конфигурационного файла Сервиса проверки полномочий для продуктивной среды (1-на ЦОДовая конфигурация: ФЦОД):
conf/prod-singleDC-prohibitor-application.yml.
шаблон конфигурационного файла Сервиса проверки полномочий для тестовой среды:
conf/test-prohibitor-application.yml.
Скопировать выбранный файл в каталог /distr/prohibitor под именем application.yml.
В скопированном конфигурационном файле application.yml задать необходимые параметры
(в заготовке обозначены звездочками *). Более подробное описание необходимых настроек
файла application.yml указаны в разделах ниже.
9.1.2. Реестр изменений конфигурационного файла
Таблица 9.1 содержит реестр изменений.
Версия |
Перечень изменений (относительно предыдущей версии) |
|---|---|
3.5.4 |
Добавлен компонент Prohibitor |
3.8.1 |
|
3.14.0 |
Исключены параметры:
|
3.15.0 |
Изменений нет |
3.16.0 |
Добавлены параметры:
|
3.17.0 |
Изменений нет |
9.2. Настройка и запуск Сервиса проверки полномочий
Prohibitor - Сервис проверки полномочий предназначен для контроля и блокировки Поставщиком обращений к данным своей Витрины с использованием Регламентированных SQL-запросов (РЗ).
Установка Prohibitor опциональна, если Агент СМЭВ4 используется исключительно в качестве ПО, обеспечивающего доступ к данным посредством СМЭВ.
Действия (успешные и неуспешные), совершенные пользователями Сервиса проверки полномочий, логируются для передачи в систему сбора событий Аудита (SIEM) на стороне Поставщика данных. Перечень логируемых действий:
создание пользователя;
удаление пользователя;
блокировка и разблокировка пользователя;
блокировка и подтверждение полномочия на выполнение РЗ.
Внимание
Для соблюдения требований безопасности к сертифицированному Агенту СМЭВ4 в контуре Поставщика рекомендуется:
развернуть систему сбора событий Аудита (SIEM);
хранить во внешней системе сбора событий Аудита (SIEM) данные аудита Сервиса проверки полномочий минимум один год.
9.2.1. Порядок загрузки данных и программ
Администратор УВ осуществляет развёртывание, запуск и настройку Prohibitor с помощью данного руководства.
9.2.1.1. Состав и содержание дистрибутивного пакета
Состав дистрибутива Сервиса проверки полномочий (/distr/prohibitor):
/distr/prohibitor/app/app.jar– исполняемый файл;/distr/prohibitor/prohibitor-cli/prohibitor-cli.jar– исполняемый файл;/distr/prohibitor/totp-cli/totp_cli– исполняемый файл утилиты двухфакторной аутентификации;
Путь /distr/prohibitor указан в качестве примера. Есть возможность использовать любой другой путь,
скорректировав соответствующим образом приведенные ниже команды.
9.2.2. Предварительные операции (установка «пре-реквизитов»)
В случае, если Prohibitor устанавливается на машине, отличной от той где установлен Агент, перед запуском Prohibitor необходимо выполнить действия, описанные в разделе Раздел 3.2.2:
Внимание
Не требуется устанавливать отдельный экземпляр CryptoPro CSP для сервиса проверки полномочий, в следующих случаях:
если Сервис проверки полномочий установлен на том же сервере, что и Агент СМЭВ4 в варианте «без использования Docker», в такой ситуации на данном сервере уже имеется установленная CryptoPro CSP;
если Сервис проверки полномочий настроен на использование Агента СМЭВ4 для проверки подписи, согласно Раздел 9.2.6.3.
Выложить в каталог /distr/prohibitor конфигурационный файл application.yml, подготовленный согласно Раздел 9.2.6, в /distr/prohibitor/config выложить подготовленный файл logback.xml.
Доступ к админ-консоли Prohibitor необходимо проксировать с помощью внешних инфраструктурных решений. Указанный прокси должен поддерживать работу клиента с ним только по ГОСТ TLS. Прямой доступ к порту админ-консоли Prohibitor необходимо ограничить средствами ОС или инфраструктуры, для недопущения прямого доступа к нему пользователей по нешифрованному протоколу.
Установить СУБД Postgres 15
9.2.3. Настройка БД для работы Сервиса проверки полномочий
1. Подключится к БД PostgreSQL с административным аккаунтом и выполнить SQL команды ниже. Используйте собственные имя БД, имя пользователя и пароль, эти же данные должны быть указаны в конфигурационном файле сервиса Prohibitor: (см. Раздел 9.2.6)
CREATE DATABASE prohibitor;
CREATE USER dbadmin_prohibitor WITH ENCRYPTED PASSWORD '<postgres_pass>' NOSUPERUSER CREATEROLE CREATEDB INHERIT LOGIN NOREPLICATION;
ALTER DATABASE prohibitor OWNER TO dbadmin_prohibitor;
Следующие команды следует выполнять от имени пользователя, подключенного к БД Prohibitor с административным аккаунтом:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dbadmin_prohibitor;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dbadmin_prohibitor;
9.2.4. Создание пользователя для работы с Сервисом проверки полномочий
Для создания пользователя в Сервисе проверки полномочий используется консольная утилита prohibitor-cli.jar входящая в состав дистрибутивного пакета.
Для этого необходимо выполнить на сервере команду:
java -jar /distr/prohibitor/prohibitor-cli/prohibitor-cli.jar -l {{user_login}} -p {{user_password}} --db_host {{db_host}} --db_port {{db_port}} --db_user {{db_user}} --db_password {{db_password}} --db_name {{db_name}}
Где:
{{user_login}} - логин создаваемого пользователя;
{{user_password}} - пароль создаваемого пользователя;
{{db_host}} - IP адрес СУБД Postgres для Сервиса проверки полномочий;
{{db_port}} - порт СУБД Postgres для Сервиса проверки полномочий;
{{db_user}} - пользователь БД от Сервиса проверки полномочий;
{{db_password}} - пароль для БД от Сервиса проверки полномочий;
{{db_name}} - имя БД от Сервиса проверки полномочий.
9.2.5. Запуск Сервиса проверки полномочий
Убедитесь, что пользователь {{user}} имеет доступ к директориям, в которой установлен Prohibitor: /distr/prohibitor.
Пример раздела конфигурации скрипта для запуска Prohibitor с использованием сервиса systemd
Данный файл, с названием prohibitor.service, необходимо сохранить в каталог /etc/systemd/system/, скорректировав, при необходимости, пути к файлам
[Unit]
Description="Service for prohibitor"
After=syslog.target
[Service]
Type=simple
WorkingDirectory=/distr/prohibitor
User={{user}} #указать пользователя
Group={{user_group}} #указать группу
Environment="JAVA_HOME=/usr/lib/jdk/axiomjdk-java17.x86_64"
Environment="JDK_JAVA_OPTIONS=--add-exports=java.base/sun.security.util=ALL-UNNAMED \
--add-exports=java.base/sun.security.x509=ALL-UNNAMED \
--add-exports=java.base/sun.security.pkcs=ALL-UNNAMED \
--add-exports=java.base/sun.security.provider=ALL-UNNAMED \
--add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED \
--add-exports=java.base/sun.net=ALL-UNNAMED \
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.nio=ALL-UNNAMED \
--add-opens=java.xml/org.w3c.dom=ALL-UNNAMED \
-Dsaffron.default.charset=UTF-16LE \
-Dsaffron.default.collation.name='UTF-16LE$en_US' \
-Dsaffron.default.nationalcharset=UTF-16LE \
-XX:MaxRAMPercentage=80.0 \
-XX:+UnlockExperimentalVMOptions \
-XX:InitiatingHeapOccupancyPercent=16 \
-XX:+UseStringDeduplication \
-XX:+G1EagerReclaimHumongousObjects \
-XX:+G1EagerReclaimHumongousObjectsWithStaleRefs \
-XX:G1HeapWastePercent=2 \
-XX:G1MaxNewSizePercent=25 \
-XX:G1MixedGCLiveThresholdPercent=15 \
-XX:+UseG1GC"
ExecStart=/usr/lib/jdk/axiomjdk-java17.x86_64/bin/java -jar app/app.jar
[Install]
WantedBy=multi-user.target
Далее от имени пользователя root необходимо выполнить команду по включению, запуску сервиса и проверке его статуса:
systemctl daemon-reload
systemctl enable prohibitor
systemctl start prohibitor
systemctl -l status prohibitor
9.2.6. Формирование конфигурационного файла Сервиса проверки полномочий
9.2.6.1. Общие настройки конфигурационного файла
В конфигурационном файле application.yml задать:
идентификатор агента (мнемоника ИС);
ОГРН Агента
тип используемого транспорта, параметр use-ca: прогрессивный, RSocket (true) либо традиционный, pulsar (false).
Идентификатор ключа CryptoPro: алиас контейнера CryptoPro. Необходимо использовать тот же ключ, что и на Агенте, с которым работает данный сервис проверки полномочий;
Эти значения должны совпадать с параметрами в конфигурационном файле Агента СМЭВ4 (Раздел 4.3.1)
# Общие настройки агента
agent:
# Идентификатор агента
id: '*** ИДЕНТИФИКАТОР (МНЕМОНИКА) АГЕНТА ***'
ogrn: '*** ОГРН АГЕНТА ***'
# использовать традиционный транспорт обмена с Ядром (pulsar, значение false)
# либо прогрессивный вариант транспорта (rsocket, значение true)
use-ca: true
keys:
alias: '*** ИДЕНТИФИКАТОР КЛЮЧА CryptoPro ***'
password: '*** ПАРОЛЬ КЛЮЧА CryptoPro ***'
Примечание
Указывать параметр password не требуется, если используется сервис подписания и верификации сообщений (см. Раздел 9.2.6.3:)
9.2.6.2. Настройка подключения к базе данных:
Переменные db.* указываются в разделе настроек подключения к PostgreSQL:
# параметры подключения к базе и настройки пулла коннектов
db:
host: '*** hostname ***'
port: '*** port ***'
user: '*** username ***'
password: '*** password ***'
database: '*** database name ***'
9.2.6.3. Настройка подключения к сервису криптографии (Опционально)
Сервис проверки полномочий может работать как с локально установленным CryptoPro, так и без него,
в этом случае за подписанием и верификацией сообщений он обращается к Агенту СМЭВ4. Для этого необходимо
скопировать блок notarius в файл application.yml и заполнить параметер notarius.target-host.
Пример раздела конфигурации:
notarius:
target-host: '*** IP АДРЕС СЕРВЕРА Агента СМЭВ4 ***'
target-port: 8696
9.2.6.4. Настройка параметров, связанных с настройками времени жизни и блокировки пользовательских учетных записей
Пример раздела конфигурации:
user:
# Задание повторного логина невозможно в течении конфигурируемого периода
login-uniq-period: P3Y
# Время бездействия пользователя, после которого, он будет разлогинен
inactive-timeout: 5m
password:
# Максимальное время жизни пароля пользователя
max-password-lifetime: 60d
# Минимальное время жизни пароля пользователя
min-password-lifetime: 1d
# Период, в который нужно уведомлять пользователя об истечения срока действия пароля
password-expire-notification-period: 5d
block:
# Количество попыток аутентификации, после превышения которого пользователь временно блокируется
max-failed-login-attempts: 3
# Время блокировки при превышении разрешенного числа попыток аутентификации
block-period: 60m
# Период не активности, после которого пользователь блокируется
inactive-period: 45d
# Частота актуализации статусов пользователей в БД
status-actualize-period: 1m
totp:
# Размер секрета в байтах, на основе которого генерируется дополнительный код.
# Размер секрета и алгоритм хэширования связаны:
# - для SHA1 рекомендуется размер не менее 20 байт (160 бит);
# - для SHA256 рекомендуется размер не менее 32 байт (256 бит);
# - для SHA512 рекомендуется размер не менее 64 байт (512 бит).
secretSize: 20
# Алгоритм хэширования. Возможные значения: SHA1, SHA256, SHA512.
hashingAlgorithm: SHA1
# Количество цифр дополнительного кода (длина дополнительного кода).
digits: 8
# Период актуальности дополнительного кода.
period: PT30S
9.2.6.5. Настройка передачи информации аудита в ГосТех (Опционально)
Для активации передачи информации аудита при работе Агента СМЭВ4 на платформе ГосТех, необходимо скопировать данный блок в файл application.yml и
заполнить параметры gostech.audit.* актуальными данными:
gostech:
enabled: true
audit:
host: '*** audit_server_host ***'
port: '*** audit_server_port ***'
9.3. Запуск консольной утилиты TOTP
TOTP CLI - это консольная утилита, предназначенная для генерации одноразовых паролей (TOTP, Time-based One-Time Passwords)
на основе секретного ключа и текущего времени. Эта утилита необходима для аутентификации в сервисе проверки полномочий (Prohibitor).
9.3.1. Порядок загрузки данных и программ
Администратор УВ осуществляет развёртывание и настройку totp_cli с помощью данного руководства.
9.3.1.1. Состав и содержание дистрибутивного пакета
Состав дистрибутива Сервиса проверки полномочий (/distr/prohibitor/totp-cli):
/distr/prohibitor/totp-cli/totp_cli– исполняемый файл;
Путь /distr/prohibitor/totp-cli указан в качестве примера. Есть возможность использовать любой другой путь,
скорректировав соответствующим образом упоминаемые ниже команды.
9.3.2. Предварительные операции
Перед запуском totp_cli выполнить от имени пользователя root следующие действия:
Создать пользователя {{user}} и группу {{user_group}}, под которым будет запускаться totp_cli.
В домашней директории пользователя {{user}} создать поддиректорию local/bin
Переместить исполняемный файл totp_cli в /home/{{user}}/local/bin/
mkdir -p /home/{{user}}/local/bin
cp /distr/prohibitor/totp-cli/totp_cli /home/{{user}}/local/bin/totp_cli
chmod +x /home/{{user}}/local/bin/totp_cli
9.3.3. Запуск TOTP CLI
Для запуска TOTP CLI необходимо предварительно получить URL от Сервиса проверки полномочий. После получения URL запустить totp_cli утилиту командой представленной ниже. Выполнять запуск необходимо от ранее созданного пользователя {{user}}
totp_cli "{{URL}}"
9.4. Настройка и запуск Сервиса проверки полномочий с использованием Docker
Действия, требуемые для запуска Prohibitor под Docker, аналогичны действиям описанным в разделе Раздел 3.3, за исключением следующих отличий:
В качестве базового каталога используется
/distr/prohibitor, либо любой другой, не совпадающий с уже используемым/distr/einfahrtФайл
application.ymlдолжен быть подготовлен согласно раздела Раздел 9.2.6Загружается подготовленный согласно раздела Раздел 11 образ Prohibitor
В файле
run_agent.shуказываются следующие значения:
# Название docker image указать здесь
IMAGE=prohibitor:latest
# Список используемых портов приложения, указывается в круглых скобках
PORT_LIST=(8692)
В файле
log-save.shуказывается
NAME="prohibitor"
В командах
docker start|stopуказываетсяprohibitorвместоeinfahrt