.. _annex_b: Приложение Б "Настройка и Установка Сервиса проверки полномочий Prohibitor" (опционально) ============================================================================================== Описание конфигурационных файлов Сервиса проверки полномочий ------------------------------------------------------------ Состав и содержание дистрибутивного пакета ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Состав дистрибутива Сервиса проверки полномочий. - ``/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`` указаны в разделах ниже. Реестр изменений конфигурационного файла ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :numref:`tab_config_prohibitor` содержит реестр изменений. .. _tab_config_prohibitor: .. table:: Реестр изменений конфигурационного файла +--------+-----------------------------------------------------------------------------------+ | Версия | Перечень изменений (относительно предыдущей версии) | +========+===================================================================================+ | 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 | Изменений нет | +--------+-----------------------------------------------------------------------------------+ | 3.24.0 | Изменений нет | +--------+-----------------------------------------------------------------------------------+ | 3.25.0 | Изменений нет | +--------+-----------------------------------------------------------------------------------+ Настройка и запуск Сервиса проверки полномочий ---------------------------------------------- **Prohibitor** - Сервис проверки полномочий предназначен для контроля и блокировки Поставщиком обращений к данным своей Витрины с использованием Регламентированных SQL-запросов (РЗ). Установка Prohibitor опциональна, если Агент СМЭВ4 используется исключительно в качестве ПО, обеспечивающего доступ к данным посредством СМЭВ. Действия (успешные и неуспешные), совершенные пользователями Сервиса проверки полномочий, логируются для передачи в систему сбора событий Аудита (SIEM) на стороне Поставщика данных. Перечень логируемых действий: - создание пользователя; - удаление пользователя; - блокировка и разблокировка пользователя; - блокировка и подтверждение полномочия на выполнение РЗ. .. attention:: Для соблюдения требований безопасности к сертифицированному Агенту СМЭВ4 в контуре Поставщика рекомендуется: - развернуть систему сбора событий Аудита (SIEM); - хранить во внешней системе сбора событий Аудита (SIEM) данные аудита Сервиса проверки полномочий минимум один год. Порядок загрузки данных и программ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Администратор УВ осуществляет развёртывание, запуск и настройку Prohibitor с помощью данного руководства. Состав и содержание дистрибутивного пакета ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Состав дистрибутива Сервиса проверки полномочий (``/distr/prohibitor``): - ``/distr/prohibitor/app/app.jar`` – исполняемый файл; - ``/distr/prohibitor/prohibitor-cli/prohibitor-cli.jar`` – исполняемый файл; - ``/distr/prohibitor/totp-cli/totp_cli`` – исполняемый файл утилиты двухфакторной аутентификации; Путь ``/distr/prohibitor`` указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом приведенные ниже команды. Предварительные операции (установка «пре-реквизитов») ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В случае, если Prohibitor устанавливается на машине, отличной от той где установлен Агент, перед запуском Prohibitor необходимо выполнить действия, описанные в :numref:`pre_requisites`: .. attention:: Не требуется устанавливать отдельный экземпляр CryptoPro CSP для сервиса проверки полномочий, в следующих случаях: - если Сервис проверки полномочий установлен на том же сервере, что и Агент СМЭВ4 в варианте "без использования Docker", в такой ситуации на данном сервере уже имеется установленная CryptoPro CSP; - если Сервис проверки полномочий настроен на использование Агента СМЭВ4 для проверки подписи, согласно :numref:`prohibitor_no_cryptopro_config`. Выложить в каталог ``/distr/prohibitor`` конфигурационный файл ``application.yml``, подготовленный согласно :numref:`prohibitor_config`, в ``/distr/prohibitor/config`` выложить подготовленный файл ``logback.xml``. Доступ к админ-консоли Prohibitor необходимо проксировать с помощью внешних инфраструктурных решений. Указанный прокси должен поддерживать работу клиента с ним только по ГОСТ TLS. Прямой доступ к порту админ-консоли Prohibitor необходимо ограничить средствами ОС или инфраструктуры, для недопущения прямого доступа к нему пользователей по нешифрованному протоколу. Установить СУБД Postgres 15 Настройка БД для работы Сервиса проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Подключится к БД PostgreSQL с административным аккаунтом и выполнить SQL команды ниже. Используйте собственные имя БД, имя пользователя и пароль, эти же данные должны быть указаны в конфигурационном файле сервиса Prohibitor: (см. :numref:`prohibitor_config`) .. code-block:: sql CREATE DATABASE prohibitor; CREATE USER dbadmin_prohibitor WITH ENCRYPTED PASSWORD '' NOSUPERUSER CREATEROLE CREATEDB INHERIT LOGIN NOREPLICATION; ALTER DATABASE prohibitor OWNER TO dbadmin_prohibitor; Следующие команды следует выполнять от имени пользователя, подключенного к БД Prohibitor с административным аккаунтом: .. code-block:: sql GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dbadmin_prohibitor; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dbadmin_prohibitor; Запуск Сервиса проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Убедитесь, что пользователь {{user}} имеет доступ к директориям, в которой установлен Prohibitor: ``/distr/prohibitor``. Создайте каталог ``/distr/prohibitor/tmp``, установите пользователя {{user}} владельцем данного каталога. Необходимость его создания связана с ограничениями, накладываемыми рядом ОС на использование ``/tmp`` для java приложений Пример раздела конфигурации скрипта для запуска **Prohibitor** с использованием сервиса **systemd** Данный файл, с названием ``prohibitor.service``, необходимо сохранить в каталог ``/etc/systemd/system/``, скорректировав, при необходимости, пути к файлам .. code-block:: bash [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 \ -Djava.io.tmpdir=/distr/prohibitor/tmp \ -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** необходимо выполнить команду по включению, запуску сервиса и проверке его статуса: .. code-block:: bash systemctl daemon-reload systemctl enable prohibitor systemctl start prohibitor systemctl -l status prohibitor .. _prohibitor_config: Формирование конфигурационного файла Сервиса проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Общие настройки конфигурационного файла ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ В конфигурационном файле ``application.yml`` задать: - идентификатор агента (мнемоника соответствующей ИС из ЛК УВ); - ОГРН Агента (ОГРН организации владельца ИС из ЛК УВ); - Идентификатор ключа CryptoPro: алиас контейнера CryptoPro. Необходимо использовать тот же ключ, что и на Агенте, с которым работает данный сервис проверки полномочий (:numref:`cryptopro_set`); - Хост и порт Агента СМЭВ4, с которым работает данный сервис проверки полномочий; Значения agent.id, agent.ogrn должны совпадать с параметрами в конфигурационном файле Агента СМЭВ4 (:numref:`common_settings`) agent.port должен иметь значение 8192, если не был переопределен в конфигурационном файле Агента СМЭВ4 (:numref:`tab_connect`) .. code-block:: yaml # Общие настройки агента agent: # Идентификатор агента id: '*** ИДЕНТИФИКАТОР (МНЕМОНИКА) АГЕНТА ***' ogrn: '*** ОГРН АГЕНТА ***' host: '*** Адрес инстанса агента СМЭВ4 ***' port: '*** Порт инстанса агента СМЭВ4 ***' keys: alias: '*** ИДЕНТИФИКАТОР КЛЮЧА CryptoPro ***' password: '*** ПАРОЛЬ КЛЮЧА CryptoPro ***' .. note:: Указывать параметр password не требуется, если используется сервис подписания и верификации сообщений (см. :numref:`prohibitor_no_cryptopro_config`:) Настройка подключения к базе данных: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Переменные ``db.*`` указываются в разделе настроек подключения к PostgreSQL: .. code-block:: yaml # параметры подключения к базе и настройки пулла коннектов db: host: '*** hostname ***' port: '*** port ***' user: '*** username ***' password: '*** password ***' database: '*** database name ***' .. _prohibitor_no_cryptopro_config: Настройка подключения к сервису подписания и верификации сообщений (Опционально) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Сервис проверки полномочий может работать как с локально установленным CryptoPro, так и без него, в этом случае за подписанием и верификацией сообщений он обращается к Агенту СМЭВ4. Для этого необходимо скопировать блок ``notarius`` в файл application.yml и заполнить параметр(ы) ``notarius.endpoints.target-host``. Пример раздела конфигурации: .. code-block:: yaml notarius: enabled: true endpoints: - target-host: '*** IP АДРЕС СЕРВЕРА Агента СМЭВ4, либо Серера подписания и верификации сообщений (notarius) СМЭВ4 ***' target-port: 8696 Настройка параметров, связанных с настройками времени жизни и блокировки пользовательских учетных записей ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Пример раздела конфигурации: .. code-block:: yaml 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 Настройка передачи информации аудита в ГосТех (Опционально) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Для активации передачи информации аудита при работе Агента СМЭВ4 на платформе ГосТех, необходимо скопировать данный блок в файл ``application.yml`` и заполнить параметры ``gostech.audit.*`` актуальными данными: .. code-block:: yaml gostech: enabled: true audit: host: '*** audit_server_host ***' port: '*** audit_server_port ***' Создание пользователя для работы с Сервисом проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для создания пользователя в Сервисе проверки полномочий используется консольная утилита ``prohibitor-cli.jar`` входящая в состав дистрибутивного пакета. Для этого необходимо выполнить на сервере команду: .. code-block:: bash 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}} - имя БД от Сервиса проверки полномочий. Запуск консольной утилиты TOTP ------------------------------ **TOTP CLI** - это консольная утилита, предназначенная для генерации одноразовых паролей (TOTP, Time-based One-Time Passwords) на основе секретного ключа и текущего времени. Эта утилита необходима для аутентификации в сервисе проверки полномочий (``Prohibitor``). Порядок загрузки данных и программ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Администратор УВ осуществляет развёртывание и настройку totp_cli с помощью данного руководства. Состав и содержание дистрибутивного пакета ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Состав дистрибутива Сервиса проверки полномочий (``/distr/prohibitor/totp-cli``): - ``/distr/prohibitor/totp-cli/totp_cli`` – исполняемый файл; Путь ``/distr/prohibitor/totp-cli`` указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды. Предварительные операции ~~~~~~~~~~~~~~~~~~~~~~~~ Перед запуском **totp_cli** выполнить от имени пользователя **root** следующие действия: 1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет запускаться **totp_cli**. 2. В домашней директории пользователя {{user}} создать поддиректорию local/bin 2. Переместить исполняемный файл **totp_cli** в **/home/{{user}}/local/bin/** .. code-block:: bash 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 Запуск TOTP CLI ~~~~~~~~~~~~~~~ Для запуска TOTP CLI необходимо предварительно получить URL от Сервиса проверки полномочий. После получения URL запустить totp_cli утилиту командой представленной ниже. Выполнять запуск необходимо от ранее созданного пользователя {{user}} .. code-block:: bash totp_cli "{{URL}}" Настройка и запуск Сервиса проверки полномочий с использованием Docker -------------------------------------------------------------------------- Действия, требуемые для запуска Prohibitor под Docker, аналогичны действиям описанным в :numref:`start_with_docker`, за исключением следующих отличий: - В качестве базового каталога используется ``/distr/prohibitor``, либо любой другой, не совпадающий с уже используемым ``/distr/einfahrt`` - Файл ``application.yml`` должен быть подготовлен согласно :numref:`prohibitor_config` - Загружается подготовленный согласно :numref:`annex_e` образ Prohibitor - В файле ``run_agent.sh`` указываются следующие значения: .. code-block:: bash # Название docker image указать здесь IMAGE=prohibitor:latest # Список используемых портов приложения, указывается в круглых скобках PORT_LIST=(8692) - В файле ``log-save.sh`` указывается .. code-block:: bash NAME="prohibitor" - В командах ``docker start|stop`` указывается ``prohibitor`` вместо ``einfahrt``