Политика обработки персональных данных
последнее обновление: 2026-07-20 · действует для сайта labs.graywrk.ru
общие положения
Платформа labctl (далее — Сервис) обрабатывает минимально необходимый набор персональных данных для регистрации пользователей, хранения прогресса и авторизации. Обработка ведётся в соответствии с Федеральным законом № 152-ФЗ «О персональных данных».
Оператор: graywrk@gmail.com. Сайт не является общедоступным государственным ресурсом и не передаёт данные третьим лицам.
какие данные мы собираем
- username
- отображаемое имя (3–32 символа). Видно другим пользователям в рейтинге.
- адрес электронной почты. Используется только для входа как альтернатива username. На данный момент письма не отправляются.
- password
- хранится исключительно как хеш по алгоритму argon2id (RFC 9106). Открытый текст пароля нигде не сохраняется и не логируется.
- cookie сессии
- HttpOnly + SameSite=Strict + Secure (по HTTPS) токен ~256 бит.
Хранится в таблице
sessionsс датой истечения. - тема оформления
- выбор из 4 тем (dark/light/solarized/nord). Хранится в аккаунте
и в
localStorageбраузера. - прогресс по лабораторным
- список решённых лаб, попытки, открытые подсказки — для подсчёта рейтинга и отображения вашего прогресса.
- команды терминала
- каждая Enter-завершённая команда, введённая в терминале лабы,
сохраняется в отдельной таблице
audit_logс привязкой к user_id, IP, session-токену и метке времени. Назначение: anti-abuse (защита от использования Сервиса для атак на сторонние ресурсы), forensic-доказательная база для случаев, когда действия пользователя подлежат разбирательству. См. раздел «аудит команд» ниже.
аудит команд терминала
Каждый интерактивный терминал в Сервисе работает внутри изолированного Docker-контейнера. Чтобы предотвратить использование Сервиса для противоправных действий и оператор мог при необходимости доказать «действия конкретного пользователя», выполняется:
- Запись команд: после нажатия Enter в журнале
audit_logпоявляется запись с текстом команды, идентификатором пользователя, IP-адресом входящего запроса, идентификатором сессии и временем с точностью до микросекунды. - Отключение исходящего интернета из контейнера
лабораторной (
network_mode: none): контейнер не может выполнитьcurl,wget,ncили любую другую сетевую команду во внешний мир. Сеть доступна только на короткое время установки зависимостей (setup.sh), после чего контейнер пересоздаётся без сети. - Сохранение аудита при удалении аккаунта: записи
audit_logне имеют FK-каскада кusersи переживают удаление аккаунта — это сделано осознанно для возможного судебного разбирательства.
Записи audit_log не содержат паролей или секретов
как таковых — только то, что пользователь осознанно вводил в командной
строке. Однако содержимое команды может включать PII (например,
переданные аргументы) — поэтому доступ к audit_log имеет
только оператор.
как хранится
- База данных PostgreSQL, развёрнутая на том же сервере, что и Сервис. Шифрования на диске нет — данные защищены сетевой изоляцией и паролем СУБД.
- Логи запросов содержат HTTP-методы, пути, статус-коды и
request_id. Никаких паролей, email-ов и сессионных токенов в логах нет. - Резервные копии БД (pg_dump) создаются ежедневно, хранятся
7 дней в отдельном volume — вместе с ними сохраняются и записи
audit_log. - Метрики Prometheus содержат агрегированные счётчики (запросы/длительности), без персональных данных.
сколько храним
- Аккаунт — пока вы не запросите удаление.
- Сессия — 30 дней с момента последней активности (продлевается автоматически при входе).
- Открытые подсказки — бессрочно (используются для корректного рейтинга: «решал ли с подсказками»).
- Команды терминала (
audit_log) — 90 дней. По истечении этого срока записи автоматически удаляются фоновой задачей. - Логи доступа — 7 дней (ротация).
ваши права
По 152-ФЗ вы вправе:
- Получить копию своих данных (username, email, прогресс) — напишите на email ниже.
- Исправить неточные данные (например, сменить email).
- Удалить аккаунт и все связанные данные — пишите на email оператора, обработка в течение 7 рабочих дней. Каскадное удаление: сессии, прогресс, записи в рейтинге.
- Отозвать согласие — равнозначно удалению аккаунта.
Внимание: удаление аккаунта не удаляет
записи audit_log за предыдущие 90 дней. Они сохраняются
для возможного разбирательства и автоматически удаляются по истечении
retention-периода.
куки и localStorage
labctl_user— сессионная cookie, требуется для авторизации. Без неё Сервис работает в режиме гостя (только чтение каталога).labctl-theme— вlocalStorage, выбор темы оформления. Не передаётся на сервер.
Баннеров и аналитики (Google Analytics, Яндекс.Метрика, и т.п.) на Сервисе нет.
передача третьим лицам
Сервис не передаёт персональные данные третьим лицам в коммерческих целях. Исключения:
- Правоохранительным органам по законному запросу
(ст. 6 ч. 1 152-ФЗ — обработка без согласия допускается для исполнения
закона). В этом случае оператор предоставляет записи
audit_logи сопутствующие метаданные сессии. cdn.jsdelivr.net— единственный внешний ресурс, к которому обращается браузер (для загрузки библиотеки терминала xterm.js). CDN видит ваш IP и URL-реферер; персональных данных (email, username) он не получает.
правовые основания обработки (GDPR Art.6 / 152-ФЗ)
Каждая цель обработки имеет своё правовое основание:
- Регистрация и вход
- GDPR Art.6(1)(b) (выполнение договора) — без этих данных мы не можем предоставить Сервис. 152-ФЗ: обработка necessary для исполнения договора (ст.6 ч.1 п.5).
- Прогресс и рейтинг
- Art.6(1)(b) + ваше согласие (1)(a)
при регистрации (чекбокс). Согласие записано в
consent_recordsс версией privacy/tos, IP и UA. - Аудит команд терминала
- Art.6(1)(c) (законное обязательство) + Art.6(1)(f) (legitimate interest — защита оператора от злоупотреблений). 152-ФЗ ст.6 ч.1 п.5: осуществление прав и обязанностей оператора.
- Передача в правоохранительные органы
- Art.6(1)(c) — исполнение закона. 152-ФЗ ст.6 ч.1 п.5.
- Тема оформления, cookies
- Art.6(1)(a) (consent) — даётся через баннер или выбор темы, отзывается в любой момент.
уведомление Роскомнадзора (152-ФЗ ст.22)
Оператор пользуется исключением по ст.22 ч.2 152-ФЗ: обрабатываются только персональные данные, не относящиеся к специальным категориям (ст.10) и не касающиеся судимости (ст.11). Сеть камер видеонаблюдения, биометрия, медицинские данные, религия, национальность — не обрабатываются. Объём — в пределах категорий, подпадающих под exemption от обязательного уведомления.
При расширении категорий обработки оператор подаст уведомление в установленном порядке.
права по GDPR (глава III)
Если вы — резидент ЕС/Великобритании, вам дополнительно доступны:
- Art.15 право доступа — через
GET /api/me/dataили email ниже. - Art.16 право на исправление — email оператору.
- Art.17 право на удаление — через
POST /api/me/deleteили email. audit_log и consent_records сохраняются 90 дней по Art.17(3)(b). - Art.18 право на ограничение обработки.
- Art.20 право на переносимость данных — экспорт
в JSON через
GET /api/me/data. - Art.21 право возразить против обработки по legitimate interest (аудит) — напишите, мы прекратим, если основания для обработки не перевешивают.
- Art.7(3) право отозвать согласие в любой момент — равнозначно удалению аккаунта.
Срок ответа на запрос — 1 месяц (Art.12(3)).
трансграничная передача (GDPR глава V)
Сервер Сервиса находится в юрисдикции, не обеспечивающей адекватный уровень защиты по решению Комиссии (Art.45). Поэтому любые передачи за пределы юрисдикции размещения регулируются Standard Contractual Clauses (Art.46(2)(c)):
- cdn.jsdelivr.net — загружает библиотеку терминала xterm.js. Передаётся: IP-адрес, URL-реферер, информация о браузере. Email, username и идентификационные данные не передаются. jsdelivr действует как processor; их privacy policy применяется как DPA (Data Processing Agreement).
Внутренняя обработка в части audit_log/consent_records/sessions остаётся в той же юрисдикции, что и сервер.
records of processing activities (GDPR Art.30)
Оператор ведёт реестр операций в виде этой политики + исходного кода Сервиса (репозиторий open-source). Каждая таблица БД соответствует одной или нескольким целям обработки:
users— идентификация.sessions— аутентификация, IP/UA/срок.attempts,solved,hint_views— прогресс.audit_log— команды терминала, 90 дней.consent_records— доказательство согласия.
уведомление о нарушении (GDPR Art.33-34)
При обнаружении персональных данных breach (несанкционированный доступ, утрата, изменение):
- В течение 72 часов с момента обнаружения оператор уведомляет надзорный орган (если breach вероятна риска для прав и свобод субъектов).
- При высоком риске — уведомляет затронутых субъектов без чрезмерной задержки.
- Доказательство breach (логи, время, объём) сохраняется для отчёта регулятору.
Для 152-ФЗ — оператор уведомляет Роскомнадзор и ФСТЭК по процедуре Постановления Правительства РФ №1119.
приватность по дизайну и по умолчанию (GDPR Art.25)
- Данные собираются минимально: только то, что нужно для предоставления Сервиса (Art.5(1)(c) data minimisation).
- Контейнеры лабораторных физически изолированы от интернета
(
network_mode: none) — случайная или намеренная утечка через сеть исключена. - Пароли хранятся как argon2id hash (RFC 9106), никогда не логируются.
- Cookie
HttpOnly+SameSite=Strict+Secureпо HTTPS. - CSP, HSTS, X-Frame-Options применены edge-Caddy.
- Регистрация требует явного согласия (consent checkbox) + подтверждения возраста (13+).
children's data (GDPR Art.8)
Сервис не предназначен для лиц младше 13 лет. При регистрации
пользователь подтверждает возрастной порог чекбоксом
(age_confirm); запись сохраняется в
consent_records.age_confirmed. При выявлении обработки
данных лица младше 13 без parental consent — данные удаляются без
задержки.
изменения политики
Любые изменения публикуются на этой странице с обновлённой датой «последнее обновление» в шапке. Существенные изменения (новые типы данных, новые получатели) дополнительно анонсируются.
контакты и жалобы
Вопросы по обработке данных, запросы на доступ/исправление/удаление, отзыв согласия — graywrk@gmail.com.
Вы имеете право подать жалобу в надзорный орган (Art.77 GDPR / Роскомнадзор по 152-ФЗ), если считаете, что обработка нарушает ваши права.