.. _annex_b: Приложение Б Настройка и Установка Сервиса проверки полномочий ============================================================== Описание конфигурационных файлов Сервиса проверки полномочий ------------------------------------------------------------ Состав и содержание дистрибутивного пакета ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Состав дистрибутива Сервиса проверки полномочий. - ``/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` содержит реестр изменений. Фиксация изменений ведется с версии 3.5.4 .. _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 | | | | | | - добавлены параметры (:ref:`auth_type_set`) выбора способа аутентификации: | | | - data-center.default-node.pulsar.auth.keycloak-oauth.auth-typee | | | - data-center.default-node.pulsar.auth.keycloak-oauth.auth-protocol | | | | | | - добавлен параметр (:ref:`prohibitor_config`) выбора транспорта (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`` | | | | | | Добавлены параметры: | | | | | | - ``notarius.target-host`` | | | | | | - ``notarius.target-port`` | +--------+-----------------------------------------------------------------------------------+ .. _prohibitor_config: Формирование конфигурационного файла Сервиса проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Общие настройки конфигурационного файла ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ В конфигурационном файле ``application.yml`` задать: - идентификатор агента (мнемоника ИС); - ОГРН Агента - тип используемого транспорта, параметр use-ca: прогрессивный, RSocket (true) либо традиционный, pulsar (false). - Идентификатор ключа КриптоПро: алиас контейнера КриптоПро. Необходимо использовать тот же ключ, что и на Агенте, с которым работает данный сервис проверки полномочий; Эти значения должны совпадать с параметрами в конфигурационном файле Агента СМЭВ4 (:numref:`common_settings`) .. code-block:: yaml # Общие настройки агента agent: # Идентификатор агента id: '*** ИДЕНТИФИКАТОР (МНЕМОНИКА) АГЕНТА ***' ogrn: '*** ОГРН АГЕНТА ***' # использовать традиционный транспорт обмена с Ядром (pulsar, значение false) # либо прогрессивный вариант транспорта (rsocket, значение true) use-ca: true keys: alias: '*** ИДЕНТИФИКАТОР КЛЮЧА КриптоПро ***' password: '*** ПАРОЛЬ КЛЮЧА КриптоПро ***' Настройка подключения к базе данных: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Переменные ``db.*`` указываются в разделе настроек подключения к PostgreSQL: .. code-block:: yaml # параметры подключения к базе и настройки пулла коннектов db: host: '*** hostname ***' port: '*** port ***' user: '*** username ***' password: '*** password ***' database: '*** database name ***' .. _prohibitor_no_cryptopro_config: Настройка подключения к сервису криптографии (Опционально) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Сервис проверки полномочий может работать как с локально установленным КриптоПро, так и без него, в этом случае за подписанием и верификацией сообщений он обращается к Агенту СМЭВ4. Для этого необходимо скопировать блок ``notarius`` в файл application.yml и заполнить параметер ``notarius.target-host``. Пример раздела конфигурации: .. code-block:: yaml notarius: target-host: '*** IP АДРЕС СЕРВЕРА Агента СМЭВ4 ***' target-port: 8192 Настройка параметров, связанных с настройками времени жизни и блокировки пользовательских учетных записей ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Пример раздела конфигурации: .. 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** - Сервис проверки полномочий предназначен для контроля и блокировки Поставщиком обращений к данным своей Витрины с использованием Регламентированных SQL-запросов (РЗ). Установка Prohibitor опциональна, если Агент СМЭВ4 используется исключительно в качестве ПО, обеспечивающего доступ к данным посредством СМЭВ. Действия (успешные и неуспешные), совершенные пользователями Сервиса проверки полномочий, логируются для передачи в систему сбора событий Аудита (SIEM) на стороне Поставщика данных. Перечень логируемых действий: - создание пользователя; - удаление пользователя; - блокировка и разблокировка пользователя; - блокировка и подтверждение полномочия на выполнение РЗ. .. attention:: Для соблюдения требований безопасности к сертифицированному Агенту ПОДД в контуре Поставщика рекомендуется: - развернуть систему сбора событий Аудита (SIEM); - хранить во внешней системе сбора событий Аудита (SIEM) данные аудита Сервиса проверки полномочий минимум один год. Порядок загрузки данных и программ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Администратор УВ осуществляет развёртывание, запуск и настройку prohibitor с помощью данного руководства. Состав и содержание дистрибутивного пакета ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Состав дистрибутива Сервиса проверки полномочий (``/distr/prohibitor``): - ``/distr/prohibitor/app/app.jar`` – исполняемый файл; - ``/distr/prohibitor/prohibitor-cli/prohibitor-cli.jar`` – исполняемый файл; - ``/distr/einfahrt/csp-5.0.11455.tar.gz`` – дистрибутив CryptoPro CSP; - ``/distr/einfahrt/bellsoft-jdk17.0.7-linux-amd64.tar.gz`` – дистрибутив Java. .. attention:: Присутствующий в пакете дистрибутив CryptoPro CSP предназначен для установки в ОС CentOS, RedOS, ALT SP Server 10. Для Astra Linux, необходимо загрузить с сайта производителя https://cryptopro.ru/sites/default/files/private/csp/50/11455/linux-amd64_deb_astrasign.tgz дисрибутив CryptoPro CSP, соответствующий используемой операционной системе. Путь ``/distr/prohibitor`` указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды. Предварительные операции (установка «пре-реквизитов») ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В случае, если prohibitor устанавливается на машине, отличной от той где установлен Агент, перед запуском **prohibitor** следует выполнить от имени пользователя **root** следующие действия: 1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать prohibitor. 2. Установить java: .. code-block:: bash cd /distr/einfahrt tar zxvf bellsoft-jdk17.0.7-linux-amd64.tar.gz 3. Установить системные переменные: .. code-block:: bash export JAVA_HOME=/distr/einfahrt/jdk-17.0.7 export PATH=$PATH:$JAVA_HOME/bin Переменные должны устанавливаться автоматически также после перезагрузки сервера. Для этого рекомендуется внести данную настройку в **profile** пользователя либо в настройки ОС. 4. Установить CryptoPro CSP (Опционально): .. attention:: Не требуется устанвливать отдельный экземпляр CryptoPro CSP для сервиса проверки полномочий, в следующих случаях: - Если Сервис проверки полномочий установлен на том же сервере, что и Агент СМЭВ4 в варианте "без использования docker", в такой ситуации на данном сервре уже имеется установленная CryptoPro CSP; - Если Сервис проверки полномочий настроен на использование Агента СМЭВ4 для проверки подписи, согласно :numref:`prohibitor_no_cryptopro_config`. При установке на CentOS, RedOS: .. code-block:: bash cd /distr/prohibitor tar -xzvf csp-5.0.11455.tar.gz rm -f csp-5.0.11455.tar.gz cd csp-5.0.11455 yum -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm ./install.sh cd .. При установке на Astra Linux: .. code-block:: bash cd /distr/prohibitor tar -xzvf linux-amd64_deb_astrasign.tgz rm -f linux-amd64_deb_astrasign.tgz cd linux-amd64_deb apt -y install lsb-cprocsp-base*.deb lsb-cprocsp-rdr-64*.deb lsb-cprocsp-kc1-64*.deb lsb-cprocsp-capilite-64*.deb lsb-cprocsp-devel*.deb lsb-cprocsp-kc2-64*.deb cprocsp-curl-64*.deb ./install.sh cd .. При установке на ALT SP Server 10: .. code-block:: bash cd /distr/prohibitor tar -xzvf csp-5.0.11455.tar.gz rm -f csp-5.0.11455.tar.gz cd csp-5.0.11455 apt-get -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm ./install.sh cd .. При наличии лицензионного кода CryptoPro CSP выполнить команду: .. code-block:: bash sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set {{cprocsp_license_code}} В случае отсутствия лицензионного кода, CryptoPro CSP будет работать в режиме пробной лицензии. .. attention:: Срок действия пробной лицензии – 90 дней с момента установки CryptoPro CSP. Для сохранения работоспособности по окончании данного периода, необходимо приобрести лицензию на CryptoPro CSP и внести её в систему как указано выше. 5. Установить контейнер ключа CryptoPro в директорию ``/var/opt/cprocsp/keys/{{user}}/``. Пользователь {{user}} должен быть владельцем данной директории и файлов в ней. 6. Выложить в каталог ``/distr/prohibitor`` конфигурационный файл ``application.yml``, подготовленный согласно :numref:`prohibitor_config`, в ``/distr/prohibitor/config`` выложить подготовленный файл ``logback.xml``. 7. В файл ``/etc/hosts`` добавить следующие записи: .. code-block:: 172.20.59.5 podd.gosuslugi.ru 172.20.59.5 podd-cross.gosuslugi.ru 109.207.15.26 podd1.gosuslugi.ru 109.207.15.58 podd2.gosuslugi.ru 109.207.15.154 podd3.gosuslugi.ru 109.207.15.186 podd4.gosuslugi.ru 109.207.15.26 podd1-cross.gosuslugi.ru 109.207.15.58 podd2-cross.gosuslugi.ru 109.207.15.154 podd3-cross.gosuslugi.ru 109.207.15.186 podd4-cross.gosuslugi.ru 8. Доступ к админ-консоли Сервиса проверки полномочий (**prohibitor**) необходимо проксировать с помощью внешних инфраструктурных решений. Указанный прокси должен поддерживать работу клиента с ним только по ГОСТ TLS. Прямой доступ к порту админ-консоли **prohibitor** необходимо ограничить средствами ОС или инфраструктуры, для недопущения прямого доступа к нему пользователей по нешифрованному протоколу. Настройка БД для работы Сервиса проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Установить СУБД Postgres 15 2. Подключится к БД 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; Создание пользователя для работы с Сервисом проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для содания пользователя в Сервисе проверки полномочий используется консольная утилита ``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}} - имя БД от Сервиса проверки полномочий Запуск Сервиса проверки полномочий ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Убедитесь, что пользователь {{user}} имеет доступ к директориям, в которой установлен prohibitor: ``/distr/prohibitor``. Пример раздела конфигурации скрипта для запуска **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=/distr/prohibitor/jdk-17.0.7" 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=/distr/einfhrt/jdk-17.0.7/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 Запуск консольной утилиты TOTP ------------------------------ **TOTP CLI** - это консольная утилита, предназначенная для генерации одноразовых паролей (TOTP, Time-based One-Time Passwords) на основе секретного ключа и текущего времени. Эта утилита необходима для аутентификации в сервисе проверки полномочий (``Prohibitor``). Порядок загрузки данных и программ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Администратор УВ осуществляет развёртывание и настройку totp_cli с помощью данного руководства. Состав и содержание дистрибутивного пакета ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Состав дистрибутива Сервиса проверки полномочий (``/distr/totp-cli``): - ``/distr/totp-cli/totp_cli`` – исполняемый файл; Путь ``/distr/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/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}}"