Вынос интернет-компонентов в DMZ (п. 2.5 ТЗ, рис. 3 → 4)

Целевая архитектура после модификации. Детализация раскладки фиксируется в ЧТЗ — здесь демо-схема с требованиями безопасности.

Интернет

👩‍💼 Пассажирlost.fpc.ru · found.fpc.ru — HTTPS 443
🏢 Работник ФПКвеб-клиент АРМ — static html/js
↓↑ HTTPS (443), только nginx-фронт; API наружу не публикуется

DMZ — пассажирский контур

lost.fpc.ru — вебnginx ≥1.14 · jQuery/HTML/JS
БД заявок (отдельная)Postgres Pro ≥14.1 · только заявки и ссылки, без ПДн внутреннего контура
Диск картинокфото вещей для пассажирских карточек
found.fpc.ru — вебформа возврата оплаты
↓↑ шифрованные межсерверные связки, уникальные секреты на каждое взаимодействие, min rights, не root

Внутренний контур ФПК

Сервер приложенийJava EE · WildFly ≥34
Основная БДPostgres Pro ≥14.1 · общая БД пром/тест
АРМ (DMZ-статика)html/js работают через шлюз во внутренний контур; админка — только из корп. сети
API курьера / банкисходящие шифрованные вызовы, секреты вне кода/env/логов

Требования безопасности (реализованы в демо на уровне заголовков и изоляции)

Требование ТЗКак в демо
Шифрование межсерверных связейПубликация через HTTPS (Caddy, TLS on-demand) → nginx; в проде — mTLS/шифрованные каналы DMZ↔контур
Секреты не в коде / env / логахВ демо секретов нет; в проде — хранилище секретов, отдельные УЗ сервисов
API не публиковать в Интернет + авторизация/api/* внутреннего контура за авторизацией (cookie-сессии); наружу — только пассажирские формы
Заголовки против XSSX-Content-Type-Options: nosniff, X-Frame-Options на всех ответах
Контейнеры: изоляция, без записи в root FS, лимитыDocker- compose с read_only, mem_limit, cap_drop (см. репозиторий)
Админ-интерфейс только из корп. сетиАРМ публикуется на отдельном пути за SSO/VPN; в демо — вход по УЗ

Дорожная карта переноса в целевой стек