NPS.gov (National Poll System) — это серверная часть национальной системы опросов Республики Казахстан. Проект обеспечивает сбор и аналитику мнений граждан и сотрудников госорганов, гарантируя юридическую значимость данных через проверку Электронной Цифровой Подписи (ЭЦП).
Основным инструментом безопасности системы является NCANode — кроссплатформенный сервер для работы с ЭЦП РК. В данном проекте он выступает в роли криптографического шлюза.
Что это дает проекту:
- Валидация по стандартам РК: Проверка подписей в форматах CMS и XML (xmldsig) с поддержкой ГОСТ 2015.
- Проверка статуса сертификатов: Взаимодействие с сервисами OCSP и CRL для проверки отозванных ключей.
- Цепочка доверия: Автоматическая верификация сертификатов НУЦ РК (Национальный удостоверяющий центр).
- Извлечение данных: Динамическое получение ИИН, БИН и ФИО подписанта напрямую из бинарных данных подписи.
Система построена на принципе Multi-tenancy (многоарендность) с привязкой к государственным структурам:
- Изоляция по БИН: Все данные (опросы, ответы, статистика) строго изолированы на уровне организаций. Пользователи одного ведомства не имеют доступа к данным другого.
- Ролевая модель: Реализована логика автоматического назначения прав. Первый пользователь, авторизовавшийся от конкретного БИН, получает статус Администратора ведомства.
- Микросервисная топология: Архитектура разделена на основной бизнес-узел (NestJS) и специализированный криптографический узел (NCANode), что обеспечивает отказоустойчивость при проверке ЭЦП.
- Core: NestJS (Node.js), TypeScript.
- Database: PostgreSQL (TypeORM) — хранение структуры опросов и связей организаций.
- Crypto-worker: NCANode (Java/Docker) — валидация ЭЦП.
- DevOps: Docker & Docker Compose — для быстрой развертки всей инфраструктуры.
Для запуска локальной среды (Backend + NCANode) при использовании удаленных баз данных:
#Настройка окружения:
Создайте файл .env в корне проекта и укажите параметры подключения к удаленному хосту
# Запуск инфраструктуры через Docker
docker-compose up -d[!TIP] Запуск сервисов: Поскольку база данных и Redis развернуты на удаленном сервере, Docker-compose запустит только ядро системы и криптографический воркер
[!IMPORTANT] Убедитесь, что на удаленном хосте открыты соответствующие порты (5432 для Postgres, 6379 для Redis) для IP-адреса, с которого запускается Docker.