Описание технической архитектуры ПО «ИДГОС»*
Описание технической архитектуры ПО «ИДГОС»*
Описание
технической архитектуры программного обеспечения «ИДГОС»
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.
- Работа
с логами, системами мониторинга и процедурами резервного копирования.
