Введение

PayControl (далее PC) – программный комплекс, предназначенный для подтверждения и подписания пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота (e-docflow). Основная цель PC - повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.
При помощи PC могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определенной информацией.

Состав

PC состоит следующих компонентов:

Наименование Описание
Серверная часть PC Server PC Server это приложение для установки на серверную часть. Доступ к функциям PC Server осуществляется через вызовы веб-сервисов PC Server по REST API. Это позволяет интегрировать его с любыми платформами приложений.
PC Server должен быть установлен в пределах периметра безопасности прикладной системы.
Этот компонент интегрируется с серверной частью системы цифрового банкинга или электронного документооборота и выполняет следующие функции:
  • регистрация пользователей в PC;
  • генерация и обновление ключевой информации пользователей PC;
  • управление процессом подтверждения транзакций;
  • формирование биллинговых и информационных отчётов.
  • PC External PC External это приложение, устанавливаемое в демилитаризованной зоне (DMZ) бэкенда. Функции PC External не доступны для вызова со стороны прикладной системы. Оно взаимодействует с PC Server с одной стороны и с клиентским приложением — с другой.
    Включает следующие функции:
  • регистрацию устройств пользователей;
  • предоставление информации о транзакциях для подтверждения пользователем;
  • прием и проверку при помощи PC Server подтверждения транзакций (электронной подписи)
  • PC Pusher PC Pusher это приложение, устанавливаемое в бэкенде или DMZ. Функции PC Pusher не доступны для вызова со стороны прикладной системы. Оно взаимодействует только с PC Server.
    Отправляет push-уведомления в мобильное приложение о том, что доступна транзакция для подтверждения.
    PC Server Signer PC Server Signer это приложение для установки в бэкенде. Работает в качестве клиентского приложения — хранит ключи, подтверждает транзакции и т.п., но управляется прикладной системой. Этот компонент используется для сценариев подписания, полностью управляемых бэкендом прикладной системы.
    АРМ Разбора конфликтных ситуаций (PC CRT) PC CRT - это приложение для установки в бэкенде. Предоставляет веб-интерфейс для получения детальной информации о пользователях PC, транзакциях, подтверждениях, устройствах и т.д. Также формирует отчёты, предоставляемые комиссиям по разрешению конфликтов в качестве доказательных материалов.
    Клиентская часть PC Mobile SDK / PC App Представляет собой приложение для мобильных платформ iOS (13 и выше) и Android (7 и выше), выполняющее следующие функции:
  • управление пользователями и их ключами в рамках мобильного приложения (считывание, хранение, использование, обновление, удаление);
  • получение данных транзакций от серверной части для подтверждения в режиме онлайн или офлайн;
  • отображение подтверждаемой информации на экране мобильного телефона;
  • выработка электронных подписей на основе данных транзакции, ключей пользователя, времени выработки и (опционально) отпечатка устройства;
  • отправка электронных подписей в серверную часть в режиме онлайн или отображение пользователю кода подтверждения в режиме офлайн.
  • Клиентская часть поставляется в виде встраиваемых библиотек для интеграции в мобильное приложение или отдельного приложения.

    alt text

    Рисунок 1 — Схема взаимодействия компонентов.

    Форма поставки серверной части

    Серверные компоненты PC представляют собой Spring Boot Java-приложения, поставляемые в виде JAR-файлов, либо образов контейнеров для их запуска, либо в формате дистрибутива под ОС Linux.

    JAR-файлы запускают веб-сервер (Tomcat) и сам компонент PC внутри него.

    Конфигурация осуществляется через файлы конфигурации и базу данных (только для PC Server).

    Рекомендуемый вариант — установка Java-приложения сервера на виртуальные машины, подготовленные заказчиком с учётом внутренних требований организации, либо запуск в среде контейнеризации. Подобная реализация также является лучшим вариантом в части масштабирования, резервного копирования и восстановления в случае сбоев системы.

    Типовой состав машины

    Типовой состав виртуальной машины предполагает следующие установленные компоненты:

    Компонент Значение
    Операционная система На базе Linux
    Среда функционирования сервера приложений Java версии 17 и выше
    СУБД PostgreSQL версии 12 и выше

    Все компоненты PC запускаются автоматически при старте операционной системы. Ручных действий при загрузке/выключении не требуется.

    Контейнеры, содержащие Java-приложения сервера PC формируются на базе Alpine Linux и OpenJDK 17.

    Если ни физические, ни виртуальные серверы не поставляются, подготовка операционной системы осуществляется заказчиком. Подготовка включает в себя:

    • установка операционной системы;
    • корректная настройка DNS-записей;
    • установка Java Runtime Environment;
    • подготовка TLS-сертификатов (при необходимости).

    В качестве альтернативных, могут быть использованы следующие компоненты:

    Компонент Значение
    Операционная система Microsoft Windows
    Среда функционирования сервера приложений Java версии 17 и выше
    СУБД Microsoft SQL Server 2012/2014/2016, Oracle DB 11g/12c/18c

    Лицензии на ОС и СУБД, а также подготовка СУБД, в том числе из списка альтернативных, обеспечивается заказчиком.

    Обеспечение масштабирования и отказоустойчивости БД обеспечивается средствами СУБД. При использовании СУБД, отличной от PostgreSQL, необходимо согласование параметров подключения и типа СУБД.

    Компоненты сервера PC

    Серверная часть PC логически разделена на следующие части:

    • PC Server предназначен для взаимодействия с прикладной системой внутри контролируемой зоны безопасности.
    • (Опционально) PC Pusher предназначен для отправки push-уведомлений на серверы Google, Apple и Huawei через Интернет (инициирует внешние https-соединения). Пуш-уведомления необязательны для функционирования PC, и служат лишь для уведомления пользователя о наличии неподтверждённой транзакции.
    • PC External предназначен для взаимодействия клиентской части c серверной через сеть Интернет (принимает извне https-соединения).
    • (Опционально) PC Server Signer эмулирует действия от имени пользователя PC для создания подписи на стороне сервера без мобильного устройства.
    • (Опционально) PC CRT Это веб-интерфейс для разбора конфликтных ситуаций и получения подробной информации об объектах и событиях в PC.

    Каждый компонент серверной части PC может быть установлен как самостоятельно, так и в объединении с каким-либо другим компонентом.

    Схема взаимодействия компонентов, а также рекомендованная логическая конфигурация приведена на Рисунке 2.

    Адреса для отправки Push-уведомлений

    Для возможности отправки push-уведомлений потребуется предоставить серверу PC Pusher сетевой доступ к:

    Сервис DNS имена и порты
    Apple Push Notification Services
    (iOS push-уведомления)
    https://api.push.apple.com
    Google Firebase
    (Android push-уведомления)
    https://fcm.googleapis.com
    https://www.googleapis.com
    https://oauth2.googleapis.com
    https://accounts.google.com
    Huawei Messaging Services
    (Huawei push-уведомления)
    https://push-api.cloud.huawei.com
    https://oauth-login.cloud.huawei.com/oauth2/v3/token

    Схемы включения

    Соединения, обозначенные на схемах как HTTP, могут быть заменены на HTTPS при необходимости.

    На схемах указаны используемые по умолчанию номера входящих TCP портов. При необходимости они могут быть изменены.

    Адрес обратного вызова прикладной системы (callback) можно указать в настройках PC или сгенерировать прикладной системой на этапе создания транзакции. Актуальные значения параметров можно запросить у разработчиков прикладной системы, либо у подрядной организации сопровождающей прикладную систему.

    Раздельная

    На Рисунке 2 приведена рекомендованная схема включения компонентов в инфраструктуру с полным их разделением.

    alt text

    Рисунок 2 — Схема взаимодействия компонентов PC при раздельной схеме включения

    Совмещённая

    PC Server и PC Pusher на одной машине

    Если требованиями к организации инфраструктуры не запрещается доступ из серверного сегмента сети к сети Интернет, в частности к ресурсам, определённым ограниченным перечнем DNS-имён, то возможно размещение серверов PC Server и PC Pusher на одной машине, внутри периметра. Таким образом схема размещения компонентов будет выглядеть как показано на Рисунке 3.

    Основное требование ­— должен обеспечиваться доступ к серверам отправки Push-уведомлений (Apple Push Notification Services, Google Firebase, Huawei Mobile Services).

    alt text

    Рисунок 3 — Схема взаимодействия компонентов при совмещении PC Server и Pusher на одном сервере

    PC Pusher и PC External на одной машине

    Возможен запуск PC Pusher и PC External на одном сервере, если перед ними со стороны сети Интернет заказчиком будет установлен и настроен URL-фильтр входящих запросов, в том числе обеспечивающий и TLS-offloading (Рисунок 4).

    alt text

    Рисунок 4 — Схема взаимодействия при совмещении PC Pusher и External на одном сервере

    Тестовая

    Для целей тестирования, если подразумевается работа с только с вымышленными (тестовыми) данными, возможно размещение всех трёх компонентов сервера и PC CRT на одной машине (Рисунок 5).

    alt text

    Рисунок 5 — Схема взаимодействия компонентов PC при совмещении всех компонентов

    Взаимодействие с прикладными системами

    Взаимодействие прикладной системы осуществляется путём обращения на REST-API эндпоинты PC Server по HTTP. Порт по умолчанию — 8080.

    При использовании HTTPS — порт по умолчанию 8443.

    Возможности по кастомизации

    В качестве БД для хранения информации может выступать СУБД, располагаемая на машине с сервером приложений компонента PC, или удалённая СУБД.

    Обеспечение отказоустойчивости и масштабируемости

    Резервирование Сервера приложений

    Отказоустойчивость

    Для обеспечения отказоустойчивости необходимо продублировать экземпляры компонентов сервера PC. При этом обязательными к дублированию являются PCS и PCE, при недоступности которых будет недоступен весь сервис PC. Обеспечение отказоустойчивости БД PC также является обязательным и выполняется в соответствии с руководством СУБД. При недоступности других компонентов PC сервис будет доступен с ограничениями.

    Схема резервирования приведена на Рисунке 6.

    alt text

    Рисунок 6 — Работоспособность и доступность СУБД в данной схеме обеспечивается средствами СУБД.

    Масштабирование

    Масштабирование может осуществляться двумя способами:

    1. Путём наращивания вычислительной мощности виртуальной или реальной машины серверной части PC;
    2. Путем увеличения количества виртуальных или реальных машин, обрабатывающих запросы к функциональным веб-сервисам. Балансировку нагрузки между машинами, а также контроль доступности каждой машины, должен выполнять балансирующий компонент, предоставляемый и конфигурируемый заказчиком.

    Полное резервирование

    Отказоустойчивость

    При использовании внутренней СУБД обеспечение отказоустойчивости должно обеспечиваться наличием горячего или холодного резервирования полностью всей виртуальной или реальной машины компонента PC. При этом обработка запросов к функциональным веб-сервисам должна выполняться единовременно только на одной машине.

    С целью поддержания актуальности резервной копии реплицирование должно производиться с необходимой частотой.

    Схема резервирования приведена на Рисунке 7.

    alt text

    Рисунок 7 — Схема резервирования при использовании внутренней СУБД

    Масштабирование

    В данном случае масштабирование возможно путем наращивания вычислительной мощности виртуальной или реальной машины.