Перейти к основному содержимому

Безопасность competitions

Зачем нужно

Олимпиадный домен работает с детскими данными, внешними преподавателями, фактами участия и наградными документами. Документ описывает требования безопасности поверх ../../platform/security-baseline.md.

Чувствительные данные

КатегорияЗащита
детские данные участниковминимум PII, доступ через семью или учителя
official data package для ГИРтолько официальный сценарий; raw values в identity protected attributes; competitions хранит только requirement/status/ref/audit
submissions/attempt refs, ответы, сканыruntime data в LMS/adapter или приватный S3, signed URLs
ключи проверкине канонически в БД competitions; используются через task-bank/LMS/runtime, temporary adapter хранит только locked snapshot
персональные данные внешнего преподавателяcanonical data в identity EducatorProfile, hash в логах competitions
наградные документыподпись и проверка целостности

Доступ к работам

  • участник видит свои submissions;
  • родитель видит submissions своих детей через семейный доступ;
  • преподаватель видит submissions только через teacher mode, выбранную организацию и Learning Group snapshot/projection;
  • помощник видит только выданные действия: ввод ответов, загрузка файлов или ограниченный список;
  • куратор видит submissions с PII только при разрешении (анонимная проверка по умолчанию).

teacher_name_text из анкеты участника не является доступом. Оно не связывает участника с преподавателем и не должно использоваться в permission checks.

Анонимная проверка

  • проверяющий видит submission без ФИО участника;
  • участники идентифицируются псевдонимом;
  • идентификация раскрывается только после публикации;
  • для апелляции — отдельный workflow с обоснованием.

Тур и доступ к задачам

  • доступ к activity structure и закрытым материалам тура — только в окне тура;
  • LMS/adapter attempts открываются только через проверку TourParticipation, окна тура и delivery mode;
  • задачи закрытых туров — доступ только service tokens task-bank;
  • аудит каждого открытия задач за пределами окна.
  • материалы финального тура открываются по времени даже если финал является единственным туром сезона.

Внешние преподаватели

  • регистрация преподавателя требует подтверждения email и телефона;
  • преподаватель работает через Learning Workspace / Learning Group; competitions не хранит canonical список его учеников;
  • competition_group верифицируется как снимок регистрации сезона;
  • максимальное число участников в snapshot — параметр платформы;
  • санкции за нарушения блокируют competition-specific projection/access record, а не canonical EducatorProfile.

Родитель и детский режим

  • родитель может создать и дозаполнить регистрацию ребёнка;
  • отправка олимпиадных ответов ребёнком выполняется в child mode;
  • любые исключения, где родитель отправляет материалы за ребёнка, должны быть явно разрешены регламентом и отражены в audit.

Площадки и фотоотчёты

  • площадочный подслой видит только участников, назначенных на эту площадку;
  • публикация площадки на карте не должна раскрывать персональные данные участников;
  • изменение вместимости ниже текущего числа активных назначений требует административного процесса;
  • статус фотоотчёта unconfirmed требует комментарий, а повторная отправка сохраняет историю.

Наградные документы

  • генерация документа — атомарная операция с записью в audit;
  • цифровая подпись на каждом документе;
  • проверка подписи доступна по публичному API без авторизации;
  • документ имеет уникальный verification token.

Rate limits

EndpointЛимит
POST /registrations30 / min / user
POST /submissions20 / min / participant
GET /events/{ref}/results600 / min / IP
POST /access-claims10 / min / teacher

Защита от утечек до публикации

  • черновики результатов недоступны публично;
  • удержанные результаты исключаются из публикаций и экспортов до release action;
  • watermarking сканов с user_id и временем;
  • алерты на массовые скачивания submissions.

Апелляции и арбитраж

  • MVP-апелляция работает только с несогласием по проверке/результату;
  • подозрительные работы и санкции идут в отдельный arbitration workflow;
  • арбитражные evidence refs не раскрываются участнику публично без отдельного решения;
  • все решения appeal/arbitration требуют actor, reason и audit.

Audit

  • открытие закрытых задач;
  • ручная переоценка submission;
  • удаление submission;
  • отправка ответов преподавателем или помощником за ученика;
  • поздняя загрузка файлов/zip/изображений;
  • изменение статуса фотоотчёта;
  • доступ или изменение official data package refs/status;
  • удержание или release результата;
  • решение appeal/arbitration;
  • выдача наградных документов;
  • управление публикациями.

Что запрещено

  • хранить submissions без шифрования at-rest;
  • строить competition-owned task runtime вместо LMS activity runtime или approved temporary adapter;
  • отдавать неподписанные дипломы;
  • передавать списки участников наружу без разрешения;
  • использовать competition_group как источник истины для учебных групп;
  • принимать raw СНИЛС, дату рождения ребёнка или родительские контакты в competitions API вместо identity protected flow;
  • связывать текстовое поле «учитель» с аккаунтом преподавателя без подтверждённого flow;
  • использовать прод-данные участников вне prod-окружения.

Связанные документы