Описание технической архитектуры ПО «ИДГОС»*

Описание технической архитектуры ПО «ИДГОС»*

Описание технической архитектуры программного обеспечения «ИДГОС»

1. Общие сведения

1.1. Наименование программы

Полное наименование программы: «ИДГОС».

Программное обеспечение «ИДГОС» является российской разработкой, организация-разработчик: ООО «СИНТЕГРА».

Сайт разработчика-правообладателя: «https://idgos.ru».

1.2. Назначение и область применения

«ИДГОС» предназначено для подписания документов через авторизацию на портале Госуслуг (ЕСИА). Сервис позволяет автоматизировать рабочие процессы обработки документов, исключить ручное заполнение документов.

Подписание документов в «ИДГОС» гарантирует согласие сторон, что помогает избежать претензий, а также является подтверждением в суде.

1.3. Основные функции

Основной функцией «ИДГОС» является подписание документов через авторизацию на портале Госуслуг с использованием квалифицированной электронной подписи через интеграцию с ЕСИА с применением средств криптографической защиты информации «КриптоПро».

2. Общая архитектура системы

Приложение «ИДГОС» построено по клиент-серверной архитектуре. Система состоит из двух взаимодействующих компонентов: клиентской части и серверной части.

2.1. Клиентская часть (веб)

-    Model: локальное состояние, кэширование, сущности интерфейса.

-    View-Веб: интерфейс администратора: формы, таблицы, кнопки.

-    ViewModel: обработка команд администратора, подготовка запросов к API.

-    Шаблоны: Interactor/Command для управления бизнес-процессами.

2.2. Клиентская часть (веб по ссылке)

-    Model: хранение токена ссылки, данных документа, состояния подписания.

-    View-Веб: адаптивный веб-интерфейс: просмотр документа, кнопка «Подписать через Госуслуги».

-    ViewModel: обработка навигации, запуск авторизации ЕСИА, обновление UI.

Особенности:

-    Не требует установки, регистрации или входа в аккаунт.

-    Работает в любом современном браузере (мобильном/десктопном).

2.3. Серверная часть (Backend)

-    Model: бизнес-сущности, работа с СУБД, интеграция с ЕСИА, генерация документов, отправка SMS.

-    View-Веб: шаблоны TWIG для веб-интерфейса; JSON-ответы для API.

-    ViewModel: маршрутизация запросов, валидация токенов, координация бизнес-логики.

3. Технический стек реализации

3.1. Клиентская часть

-    Язык программирования: JavaScript.

-    Библиотека интерфейса: React 18.2.0.

-    Архитектурный паттерн: MVVM.

-    Формат выходных данных: оптимизированные бандлы (JS, CSS), готовые к размещению.

3.2. Серверная часть

-    Язык программирования: PHP 7.4 / 8.x.

-    Шаблонизатор: TWIG.

-    Веб-сервер: Nginx.

-    СУБД: PostgreSQL.

-    ОС сервера: Linux Debian 11+.

3.3. Криптографические компоненты

ПО «ИДГОС» использует сторонние средства криптографической защиты информации «КриптоПро» через интеграцию со специализированным аппаратным носителем (защищённая флешка с ключами), имеющим разрешение на взаимодействие с ЕСИА.

Порядок работы с криптокомпонентами:

1.     После авторизации пользователя через портал Госуслуг (ЕСИА) система обращается к аппаратному носителю.

2.     Ключи, хранящиеся на носителе, авторизуют получение верифицированных данных пользователя из ЕСИА для формирования документа.

3.     Подписание документа осуществляется ключами того же аппаратного носителя.

Особенности обработки данных:

-    Персональные данные пользователя не хранятся в ПО «ИДГОС» — они используются только в момент формирования и подписания документа.

-    Подписанный документ сохраняется в архиве сервиса на срок не более 72 часов, после чего автоматически удаляется.

Функционирование криптографических компонентов осуществляется в соответствии с документацией производителя ООО «КРИПТО-ПРО» и требованиями регуляторов (ФСТЭК, ФСБ).

4. Средства хранения кода и версионирование

4.1. Система контроля версий

Для хранения исходного текста и объектного кода ПО «ИДГОС» используется локальная система контроля версий Git.

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

-    Исходный код клиентской части (JavaScript, React-компоненты, стили, конфигурации сборки).

-    Исходный код серверной части (PHP-скрипты, шаблоны TWIG, конфигурации маршрутизации).

-    Объектный код (артефакты сборки: оптимизированные бандлы, скомпилированные ресурсы).

-    Конфигурационные файлы окружения и скрипты автоматизации.

4.2. Организация ветвления

В репозитории поддерживаются две основные ветки:

-    main — продуктивная версия

-    dev — стабильная разработка

Разработка ведётся в ветке dev, после проверки изменения переносятся в main. При необходимости создаются временные ветки для изоляции задач.

4.3. Версионирование

ПО «ИДГОС» использует схему версионирования major.minor.patch:

-    major — изменения, нарушающие обратную совместимость;

-    minor — добавление новой функциональности с сохранением совместимости;

-    patch — исправление ошибок и незначительные улучшения.

Релизные версии фиксируются в системе контроля версий тегами в формате vX.Y.Z.

5. Средства компиляции и сборки

В связи с веб-архитектурой ПО «ИДГОС», под «компиляцией» понимаются процессы транспиляции, минификации, бандлинга и подготовки кода к развёртыванию.

5.1. Сборка клиентской части

Процесс сборки клиентской части включает:

-    выполнение команды сборки через пакетный менеджер (npm run build);

-    генерацию оптимизированных файлов в директорию сборки;

-    размещение файлов сборки на веб-сервере в директории, доступной для публикации.

5.2. Подготовка серверной части

Подготовка серверной части к развёртыванию включает:

-    проверку синтаксиса PHP-кода;

-    валидацию шаблонов TWIG;

-    генерацию autoload-карт зависимостей (Composer);

-    применение миграций базы данных;

-    настройку прав доступа и конфигураций окружения.

5.3. Стандартный процесс сборки

1.     Получение актуальной версии кода из репозитория (по тегу или ветке);

2.     Установка зависимостей (npm install / composer install);

3.     Сборка клиентской части (npm run build);

4.     Валидация PHP-кода и шаблонов TWIG;

5.     Генерация autoload-карт зависимостей и применение миграций БД;

6.     Сохранение артефактов сборки в репозиторий (при наличии изменений);

7.     Размещение файлов на веб-сервере в директории домена.

5.4. Развёртывание в продуктивную среду

Развёртывание осуществляется администратором веб-сервера и включает:

1.     Резервное копирование текущей версии;

2.     Замену файлов в директории домена;

3.     Применение миграций базы данных;

4.     Проверку работоспособности ключевых сценариев после обновления.

6. Требования к техническому окружению

6.1. Аппаратные требования (серверная часть)

-    ЦП: 4+ ядра;

-    ОЗУ: 8+ ГБ;

-    Дисковое пространство: 100+ ГБ (с учётом логов и бэкапов);

-    Сетевой интерфейс: 1 Гбит/с.

6.2. Программные требования (сервер)

-    ОС: Linux Debian 11+;

-    Веб-сервер: Nginx 1.18+;

-    PHP: 7.4 или 8.0+;

-    СУБД: PostgreSQL 12+;

-    Git: 2.20+;

-    КриптоПро CSP 5.0+ для Linux;

-    TLS-сертификаты от доверенного УЦ.

6.3. Пользовательские устройства (для подписания)

-    Мобильные устройства: Android 5.0+, iOS 12+.

-    ПК: Windows, macOS (доступ через современный браузер).

-    Экран: цветной сенсорный экран от 4.5 дюймов (HD и выше) для мобильных устройств.

6.4. Рабочие места разработчиков

Допустимые ОС: Windows 10/11, macOS 12+, Linux (Debian/Ubuntu).

Обязательные инструменты:

-    редактор кода / IDE (VS Code, PhpStorm и др.);

-    Node.js 16+ (для сборки frontend);

-    PHP CLI и Composer;

-    Git-клиент;

-    доступ к тестовому стенду и репозиторию.

7. Управление доступом к компонентам архитектуры

7.1. Доступ к репозиторию

-    Руководитель проекта: полный доступ;

-    Разработчики (JavaScript, PHP, Python): доступ на чтение/запись в ветки dev и временные ветки;

-    Администратор веб-сервера: доступ на чтение для целей развёртывания;

-    Специалист по тестированию: доступ на чтение для получения сборок.

Аутентификация в системе контроля версий осуществляется с использованием ключей SSH или токенов доступа с обязательным двухфакторным подтверждением. Все операции с кодом фиксируются в логах.

7.2. Ролевая модель приложения

-    Владелец аккаунта / Оператор: полный доступ к личному кабинету, управлению шаблонами, операторами, конфигурацией и архиву документов.

-    Подписывающий пользователь: одноразовый доступ по ссылке без создания учётной записи.

8. Безопасность, логирование и резервное копирование

8.1. Логирование и контроль

Все операции с исходным кодом, артефактами сборки и развёртыванием выполняются с обязательным логированием. Фиксируются успешные и неуспешные попытки входа, изменения конфигураций, создание и удаление шаблонов, отправка документов на подпись. Логи защищены от несанкционированной модификации.

8.2. Резервное копирование

-    Исходный код: обеспечивается средствами Git (распределённое хранение);

-    Объектный код и конфигурации: еженедельное полное копирование на выделенное хранилище;

-    Базы данных: ежедневное инкрементальное копирование с ежемесячной проверкой восстановления.

8.3. Хранение чувствительных данных

-    Токены API, ключи доступа хранятся в зашифрованном виде;

-    Доступ предоставляется по принципу минимальных привилегий;

-    При компрометации токен подлежит немедленному отзыву и перевыпуску.

8.4. Контроль сроков действия сертификатов и лицензий

-    Сроки действия лицензий КриптоПро и сертификатов ЭП отслеживаются с уведомлением не менее чем за 30 дней до истечения.

-    Сроки действия TLS-сертификатов отслеживаются с уведомлением за 30 дней.

-    Сертификат интеграции с ЕСИА контролируется с уведомлением за 60 дней до истечения.

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

9. Мониторинг и отказоустойчивость

-    Организован круглосуточный мониторинг доступности сервиса и внешних зависимостей.

-    Настроено автоматическое оповещение ответственных лиц при превышении пороговых значений времени ответа или частоты ошибок.

-    Наличие резервных каналов связи с пользователями.

-    Регламент переключения на резервные мощности при аппаратных сбоях.

-    Ежемесячная проверка работоспособности процедуры восстановления из резервной копии.

10. Требования к персоналу

10.1. Разработчик

-    Кроссбраузерная и адаптивная вёрстка.

-    Программирование на JavaScript, PHP 7/8.

-    Опыт работы с библиотекой React JS и архитектурой MVVM.

-    Навыки работы с Git.

-    Опыт интеграции с внешними API (ЕСИА, КриптоПро, биллинговые системы).

10.2. Администратор

-    Администрирование ОС Linux Debian.

-    Настройка и сопровождение веб-сервера Nginx и PHP-FPM.

-    Администрирование СУБД PostgreSQL.

-    Управление TLS-сертификатами.

-    Установка и настройка КриптоПро CSP на серверах Linux.

-    Работа с логами, системами мониторинга и процедурами резервного копирования.