Описание технической архитектуры ПО «ИДГОС»
Описание технической архитектуры ПО «ИДГОС»
Описание технической архитектуры программного обеспечения «ИДГОС»
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. Криптографические компоненты
ПО «ИДГОС» использует сторонние средства криптографической защиты информации «КриптоПро» через интеграцию со специализированным аппаратным носителем (защищённая флешка с ключами), имеющим разрешение на взаимодействие с ЕСИА.
Порядок работы с криптокомпонентами:
- После авторизации пользователя через портал Госуслуг (ЕСИА) система обращается к аппаратному носителю.
- Ключи, хранящиеся на носителе, авторизуют получение верифицированных данных пользователя из ЕСИА для формирования документа.
- Подписание документа осуществляется ключами того же аппаратного носителя.
Особенности обработки данных:
- Персональные данные пользователя не хранятся в ПО «ИДГОС» — они используются только в момент формирования и подписания документа.
- Подписанный документ сохраняется в архиве сервиса на срок не более 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. Стандартный процесс сборки
- Получение актуальной версии кода из репозитория (по тегу или ветке);
- Установка зависимостей (npm install / composer install);
- Сборка клиентской части (npm run build);
- Валидация PHP-кода и шаблонов TWIG;
- Генерация autoload-карт зависимостей и применение миграций БД;
- Сохранение артефактов сборки в репозиторий (при наличии изменений);
- Размещение файлов на веб-сервере в директории домена.
5.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.
- Работа с логами, системами мониторинга и процедурами резервного копирования.
