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

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

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

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.
  • Работа с логами, системами мониторинга и процедурами резервного копирования.