Law/context/16_security_pdn_hardening_plan.md
2026-03-01 17:31:09 +03:00

9.4 KiB
Raw Blame History

План доработки конфигурации безопасности ПДн (РФ)

Дата: 01.03.2026
Статус документа: в работе
Цель: привести техническую конфигурацию платформы к актуальным базовым требованиям по защите ПДн в РФ, с приоритетом на быстрое снижение юридических и эксплуатационных рисков.

Контекст для ИИ-агента

  • Система: FastAPI + Postgres + Redis + MinIO + Celery + frontend nginx + edge nginx.
  • В проекте уже есть: RBAC, OTP/TOTP, шифрование чата/реквизитов, аудит файловых операций, TLS на edge.
  • Критичные текущие риски:
    • secure=False у public cookie.
    • bootstrap-админ включен по умолчанию и дефолтные креды.
    • дефолтные root-учетные данные MinIO в compose.
    • отсутствует полноформатный operational compliance-контур (retention, инциденты, регламенты, проверка загрузок файлов).

Нормативный baseline (для трассировки требований)

Принцип приоритизации

  • P0 — блокеры прод-безопасности и высокой вероятности санкций/инцидентов.
  • P1 — обязательные усиления, закрывающие значимые пробелы.
  • P2 — организационное и эксплуатационное развитие контура.

Backlog задач (для исполнения ИИ-агентом)

ID Приоритет Статус Задача Что сделать Артефакт / DoD
SEC-01 P0 к разработке Secure cookie на проде Вынести флаг PUBLIC_COOKIE_SECURE и ставить secure=True в prod. Добавить PUBLIC_COOKIE_SAMESITE в env. В app/api/public/otp.py и app/api/public/requests.py cookie выставляется через конфиг; тесты на cookie flags проходят.
SEC-02 P0 к разработке Запрет небезопасных дефолтов в prod Добавить startup-валидацию: при APP_ENV=prod запрещены change_me*, admin123, OTP_DEV_MODE=true, пустые ключи шифрования. Фейл старта с понятной ошибкой; документировано в README.
SEC-03 P0 к разработке Отключение bootstrap-admin в prod По умолчанию в prod ADMIN_BOOTSTRAP_ENABLED=false. Разовый безопасный init admin через скрипт. Скрипт scripts/ops/create_admin.py (или аналог), bootstrap отключен на проде.
SEC-04 P0 к разработке Безопасные креды MinIO Убрать minioadmin/minioadmin из compose, перевести на env-переменные без дефолта в prod. В docker-compose*.yml нет хардкод-кредов; добавлена проверка env при старте.
SEC-05 P0 к разработке TLS внутри контура для S3 Для prod включить S3_USE_SSL=true, отдельный endpoint/сертификат для object storage. Загрузка/скачивание работает по TLS; health-check и smoke зафиксированы в runbook.
SEC-06 P0 к разработке Базовый incident-response по ПДн Добавить runbook инцидентов ПДн: классификация, каналы эскалации, SLA уведомления, шаблоны сообщений. Новый файл в context/ + scripts/ops/incident_checklist.sh.
SEC-07 P1 сделано Антивирусная проверка вложений Добавить сервис сканирования (ClamAV container), статус проверки файла (pending/clean/infected), запрет выдачи infected. Реализовано: миграция 0030_attachment_scan, async scan-task, content-policy check, блокировка выдачи при enforcement, тесты tests/test_attachment_scan.py + обновления tests/test_uploads_s3.py.
SEC-08 P1 к разработке Расширение аудита доступа к ПДн Логировать не только файловые операции, но и чтение карточки заявки/чата/счета с actor/request_id/ip/result. Новые события аудита + read-only доступ для ADMIN + тесты deny/allow.
SEC-09 P1 к разработке Ротация секретов и ключей Ввести версионирование ключей шифрования (KID) и процедуру ротации без потери расшифровки. Документ + миграция формата (если нужна) + smoke ротации ключа.
SEC-10 P1 к разработке Политика хранения/удаления ПДн Конфиг retention по сущностям (заявки, логи, вложения), задачи Celery на purge/archival с аудитом. Конфиг retention + job + отчёт по удалению + тесты.
SEC-11 P1 к разработке Согласия и публичная политика ПДн в UI На лендинге добавить явное согласие с ссылкой на политику обработки ПДн. Логировать факт согласия. Новый публичный документ политики + поле/аудит согласия при создании заявки.
SEC-12 P1 к разработке Ужесточение CORS/CSP для prod Разделить dev/prod CORS, ограничить script-src и убрать внешние источники без необходимости. Конфиг профилей + тесты/проверка заголовков.
SEC-13 P2 к разработке Комплект ИСПДн-документов (техчасть) Подготовить техблок: модель угроз, матрица контролей, границы ИСПДн, ответственные роли. Папка docs/security/ с шаблонами и заполненными draft.
SEC-14 P2 к разработке Контроль уязвимостей в CI Добавить SAST/dep-scan и базовый container scan в pipeline. CI job + пороги fail + отчёт в артефактах.
SEC-15 P2 к разработке Регулярный security smoke Набор cron-проверок: cookie flags, TLS, headers, доступность audit/scan сервисов. scripts/ops/security_smoke.sh + запись в runbook.

Последовательность внедрения

  1. SEC-01SEC-05 (закрытие P0 в коде/конфиге).
  2. SEC-06 (операционный минимум на инциденты).
  3. SEC-07SEC-12 (P1, прикладное усиление).
  4. SEC-13SEC-15 (P2, зрелость и устойчивость процесса).

Технические указания ИИ-агенту

  • Любую prod-задачу сопровождать:
    • миграцией (если меняется схема),
    • unit/integration тестом,
    • обновлением README.md и context/11_test_runbook.md.
  • Для security-конфига использовать feature flags/env:
    • изменения должны быть обратимо включаемыми.
  • В PR/коммите фиксировать:
    • риск, который закрыт,
    • как проверить вручную,
    • как откатить.

Минимальный check-list приёмки для каждого SEC-* пункта

  • Есть код/конфиг + тесты.
  • Нет regression по e2e основных ролей.
  • Обновлена документация (README + runbook + context).
  • Указан rollback шаг.

Статус исполнения

  • SEC-01SEC-15: к разработке.
  • После выполнения переводить поштучно в сделано с датой и ссылкой на commit/PR.