8. Приложение Б «Настройка и Установка Сервиса проверки полномочий Prohibitor» (опционально)

8.1. Описание конфигурационных файлов Сервиса проверки полномочий

8.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 указаны в разделах ниже.

8.1.2. Реестр изменений конфигурационного файла

Таблица 8.1 содержит реестр изменений.

Таблица 8.1 Реестр изменений конфигурационного файла

Версия

Перечень изменений (относительно предыдущей версии)

3.5.4

Добавлен компонент Prohibitor

3.8.1

  • удалены параметры подключения к pulsar:

    • data-center.default-node.pulsar.auth.keycloak-oauth.realm

    • data-center.default-node.pulsar.auth.keycloak-oauth.grant_type

    • data-center.default-node.pulsar.auth.keycloak-oauth.client_id

  • добавлены параметры (Раздел 4.3.12.1) выбора способа аутентификации:

    • data-center.default-node.pulsar.auth.keycloak-oauth.auth-typee

    • data-center.default-node.pulsar.auth.keycloak-oauth.auth-protocol

  • добавлен параметр (Раздел 8.2.6) выбора транспорта (pulsar/RSocket)

3.14.0

Исключены параметры:

  • trust-store.path

  • trust-store.password

  • data-center.default-node.pulsar.auth.keycloak-oauth.auth-type

  • data-center.default-node.pulsar.auth.keycloak-oauth.auth-protocol

3.15.0

Изменений нет

3.16.0

Добавлены параметры:

  • notarius.target-host

  • notarius.target-port

3.17.0

Изменений нет

3.18.0

Исключен параметр:

  • agent.use-ca

3.19.0

Добавлены параметра:

  • agent.host

  • agent.port

8.2. Настройка и запуск Сервиса проверки полномочий

Prohibitor - Сервис проверки полномочий предназначен для контроля и блокировки Поставщиком обращений к данным своей Витрины с использованием Регламентированных SQL-запросов (РЗ).

Установка Prohibitor опциональна, если Агент СМЭВ4 используется исключительно в качестве ПО, обеспечивающего доступ к данным посредством СМЭВ.

Действия (успешные и неуспешные), совершенные пользователями Сервиса проверки полномочий, логируются для передачи в систему сбора событий Аудита (SIEM) на стороне Поставщика данных. Перечень логируемых действий:

  • создание пользователя;

  • удаление пользователя;

  • блокировка и разблокировка пользователя;

  • блокировка и подтверждение полномочия на выполнение РЗ.

Внимание

Для соблюдения требований безопасности к сертифицированному Агенту СМЭВ4 в контуре Поставщика рекомендуется:

  • развернуть систему сбора событий Аудита (SIEM);

  • хранить во внешней системе сбора событий Аудита (SIEM) данные аудита Сервиса проверки полномочий минимум один год.

8.2.1. Порядок загрузки данных и программ

Администратор УВ осуществляет развёртывание, запуск и настройку Prohibitor с помощью данного руководства.

8.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 указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом приведенные ниже команды.

8.2.2. Предварительные операции (установка «пре-реквизитов»)

В случае, если Prohibitor устанавливается на машине, отличной от той где установлен Агент, перед запуском Prohibitor необходимо выполнить действия, описанные в Раздел 3.2.2:

Внимание

Не требуется устанавливать отдельный экземпляр CryptoPro CSP для сервиса проверки полномочий, в следующих случаях:

  • если Сервис проверки полномочий установлен на том же сервере, что и Агент СМЭВ4 в варианте «без использования Docker», в такой ситуации на данном сервере уже имеется установленная CryptoPro CSP;

  • если Сервис проверки полномочий настроен на использование Агента СМЭВ4 для проверки подписи, согласно Раздел 8.2.6.3.

Выложить в каталог /distr/prohibitor конфигурационный файл application.yml, подготовленный согласно Раздел 8.2.6, в /distr/prohibitor/config выложить подготовленный файл logback.xml.

Доступ к админ-консоли Prohibitor необходимо проксировать с помощью внешних инфраструктурных решений. Указанный прокси должен поддерживать работу клиента с ним только по ГОСТ TLS. Прямой доступ к порту админ-консоли Prohibitor необходимо ограничить средствами ОС или инфраструктуры, для недопущения прямого доступа к нему пользователей по нешифрованному протоколу.

Установить СУБД Postgres 15

8.2.3. Настройка БД для работы Сервиса проверки полномочий

1. Подключится к БД PostgreSQL с административным аккаунтом и выполнить SQL команды ниже. Используйте собственные имя БД, имя пользователя и пароль, эти же данные должны быть указаны в конфигурационном файле сервиса Prohibitor: (см. Раздел 8.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;

8.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}} - имя БД от Сервиса проверки полномочий.

8.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

8.2.6. Формирование конфигурационного файла Сервиса проверки полномочий

8.2.6.1. Общие настройки конфигурационного файла

В конфигурационном файле application.yml задать:

  • идентификатор агента (мнемоника ИС);

  • ОГРН Агента

  • Идентификатор ключа CryptoPro: алиас контейнера CryptoPro. Необходимо использовать тот же ключ, что и на Агенте, с которым работает данный сервис проверки полномочий;

  • Хост и порт Агента СМЭВ4, с которым работает данный сервис проверки полномочий;

Значения agent.id, agent.ogrn должны совпадать с параметрами в конфигурационном файле Агента СМЭВ4 (Раздел 4.3.1) agent.port должен иметь значение 8192, если не был переопределен в конфигурационном файле Агента СМЭВ4 (Таблица 2.4)

# Общие настройки агента
agent:
  # Идентификатор агента
  id: '*** ИДЕНТИФИКАТОР (МНЕМОНИКА) АГЕНТА ***'
  ogrn: '*** ОГРН АГЕНТА                    ***'
  host: '*** Адрес инстанса агента СМЭВ4    ***'
  port: '*** Порт инстанса агента СМЭВ4     ***'

keys:
  alias: '*** ИДЕНТИФИКАТОР КЛЮЧА CryptoPro ***'
  password:  '*** ПАРОЛЬ КЛЮЧА CryptoPro ***'

Примечание

Указывать параметр password не требуется, если используется сервис подписания и верификации сообщений (см. Раздел 8.2.6.3:)

8.2.6.2. Настройка подключения к базе данных:

Переменные db.* указываются в разделе настроек подключения к PostgreSQL:

# параметры подключения к базе и настройки пулла коннектов
db:
  host: '*** hostname ***'
  port: '*** port ***'
  user: '*** username ***'
  password: '*** password ***'
  database: '*** database name ***'

8.2.6.3. Настройка подключения к сервису подписания и верификации сообщений (Опционально)

Сервис проверки полномочий может работать как с локально установленным CryptoPro, так и без него, в этом случае за подписанием и верификацией сообщений он обращается к Агенту СМЭВ4. Для этого необходимо скопировать блок notarius в файл application.yml и заполнить параметр(ы) notarius.endpoints.target-host.

Пример раздела конфигурации:

notarius:
  enabled: true
  endpoints:
    - target-host: '*** IP АДРЕС СЕРВЕРА Агента СМЭВ4, либо Серера подписания и верификации сообщений (notarius) СМЭВ4 ***'
      target-port: 8696

8.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

8.2.6.5. Настройка передачи информации аудита в ГосТех (Опционально)

Для активации передачи информации аудита при работе Агента СМЭВ4 на платформе ГосТех, необходимо скопировать данный блок в файл application.yml и заполнить параметры gostech.audit.* актуальными данными:

gostech:
  enabled: true
  audit:
    host: '*** audit_server_host ***'
    port: '*** audit_server_port ***'

8.3. Запуск консольной утилиты TOTP

TOTP CLI - это консольная утилита, предназначенная для генерации одноразовых паролей (TOTP, Time-based One-Time Passwords) на основе секретного ключа и текущего времени. Эта утилита необходима для аутентификации в сервисе проверки полномочий (Prohibitor).

8.3.1. Порядок загрузки данных и программ

Администратор УВ осуществляет развёртывание и настройку totp_cli с помощью данного руководства.

8.3.1.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Сервиса проверки полномочий (/distr/prohibitor/totp-cli):

  • /distr/prohibitor/totp-cli/totp_cli – исполняемый файл;

Путь /distr/prohibitor/totp-cli указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды.

8.3.2. Предварительные операции

Перед запуском totp_cli выполнить от имени пользователя root следующие действия:

  1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет запускаться totp_cli.

  2. В домашней директории пользователя {{user}} создать поддиректорию local/bin

  1. Переместить исполняемный файл 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

8.3.3. Запуск TOTP CLI

Для запуска TOTP CLI необходимо предварительно получить URL от Сервиса проверки полномочий. После получения URL запустить totp_cli утилиту командой представленной ниже. Выполнять запуск необходимо от ранее созданного пользователя {{user}}

totp_cli "{{URL}}"

8.4. Настройка и запуск Сервиса проверки полномочий с использованием Docker

Действия, требуемые для запуска Prohibitor под Docker, аналогичны действиям описанным в Раздел 3.3, за исключением следующих отличий:

  • В качестве базового каталога используется /distr/prohibitor, либо любой другой, не совпадающий с уже используемым /distr/einfahrt

  • Файл application.yml должен быть подготовлен согласно Раздел 8.2.6

  • Загружается подготовленный согласно Раздел 10 образ Prohibitor

  • В файле run_agent.sh указываются следующие значения:

# Название docker image указать здесь
IMAGE=prohibitor:latest
# Список используемых портов приложения, указывается в круглых скобках
PORT_LIST=(8692)
  • В файле log-save.sh указывается

NAME="prohibitor"
  • В командах docker start|stop указывается prohibitor вместо einfahrt