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

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

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

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

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

Таблица 7.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

Добавлены параметры выбора способа аутентификации:

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

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

Добавлен параметр выбора транспорта (pulsar/RSocket) agent.use-ca

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

3.20.1

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

3.21.0

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

3.22.0

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

3.23.0

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

  • logging.config

3.23.4

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

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

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

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

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

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

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

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

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

Внимание

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

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

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

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

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

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

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

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

Внимание

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

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

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

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

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

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

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

1. Подключится к БД PostgreSQL с административным аккаунтом и выполнить SQL команды ниже. Используйте собственные имя БД, имя пользователя и пароль, эти же данные должны быть указаны в конфигурационном файле сервиса Prohibitor: (см. Раздел 7.2.5)

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;

7.2.4. Запуск Сервиса проверки полномочий

Убедитесь, что пользователь {{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

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

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

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

  • идентификатор агента (мнемоника соответствующей ИС из ЛК УВ);

  • ОГРН Агента (ОГРН организации владельца ИС из ЛК УВ);

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

  • Хост и порт Агента СМЭВ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 не требуется, если используется сервис подписания и верификации сообщений (см. Раздел 7.2.5.3:)

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

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

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

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

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

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

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

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

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

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

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

7.2.6. Создание пользователя для работы с Сервисом проверки полномочий

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

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

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

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

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

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

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

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

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

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

7.3.3. Запуск TOTP CLI

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

totp_cli "{{URL}}"

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

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

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

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

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

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

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

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