Мы завершили аудит по GDPR. Вот что мы фактически закрыли.
Пару недель назад мы писали, что "соответствие GDPR" на главной странице видеоинструмента значит меньше, чем вы думаете — что GDPR — это набор обязательств, лежащих на вас, как на контролере данных, которые вендор либо помогает вам выполнить, либо тихо оставляет вам. Честный способ подкрепить это утверждение — проделать работу на своей стороне и показать ее строка за строкой.
И мы это сделали. Мы провели полный аудит кодовой базы InterMIND на соответствие обязательствам, которые ложатся на нас как на обработчика данных, исправили каждый пробел, за которым стоял код, и проверили каждый из них на работающем продукте. Этот пост — итоговый отчет: не бейдж, а чек-лист с нашими ответами.
Мы намеренно не заявляем «100% сертификация GDPR». GDPR — это не сертификат, который вы сдаете, — и мы не будем размахивать бейджем ISO, которого у нас еще нет. Что мы можем сказать: архитектурные и процессные обязательства, которые DPO проходит, теперь имеют конкретные, проверяемые ответы, каждый из которых проверен на работающем коде.
Что мы закрыли
Право на удаление (Ст. 17) — каскад действительно срабатывает
Удаление аккаунта не просто его деактивирует. POST /api/user/delete-account запускает реальный каскад: он уничтожает ваши встречи → участников, сообщения, конференции, транскрипции; он вычищает ваши BLOB-объекты из хранилища Tigris до каскада базы данных, так что ничего не остается висящим — вложения из чата и файлы видеозаписей, оба столбца; и он отменяет ваши подписки Stripe и удаляет клиента Stripe. Удаление по запросу тоже есть — удалите канал или сообщение из UI, и они исчезнут. Анонимные (гостевые) аккаунты получают собственную конечную точку удаления плюс фоновую очистку каждые 6 часов под контролируемым cron. Аудит выявил здесь один пробел — BLOB-объекты записей, которые каскад базы данных удалял, но хранилище сохраняло — и мы его закрыли: теперь удаление не оставляет ничего в объектном хранилище.
Хранение (Ст. 5(1)(e)) — задокументированный критерий
Ст. 5(1)(e) не требует автоматического срока жизни (time-to-live). Она требует заданного критерия хранения. Наш критерий теперь прописан в Политике конфиденциальности: данные хранятся, пока вы или владелец вашей команды не удалите их, а удаление аккаунта стирает все. Это та же модель, на которой работают инструменты для совместной работы, такие как Slack и Notion, — персистентность — это ожидаемое поведение, и вы сохраняете контроль над ней. Критерий заявлен, а не подразумевается.
Согласие на аналитику (Ст. 6/7) — opt-out по умолчанию
Баннер согласия Usercentrics (показываемый посетителям из ЕС) блокирует аналитику, а PostHog поставляется с opt_out_capturing_by_default: true — ничего не фиксируется, пока не дано согласие, а не наоборот.
Портативность данных (Ст. 20) — реальный экспорт
GET /api/user/export создает ZIP-архив ваших встреч, сообщений, записей и переводов с окном загрузки в 7 дней и автоматической очисткой. Доступ, удаление и портативность — это работающие инструменты, а не обещания в политике.
Контент встреч направляется в единый AI-шлюз в ЕС — выбранный организацией
Самый большой поток контента встреч — живой перевод голоса и чата — работает на нашем собственном движке во Франции, а не на сторонней LLM. Шаги AI, которые действительно используют модель общего назначения (дайджест, резюме документов, генеративные действия редактора заметок, Ask AI), работают на AI-шлюзе, который выбирает организация — Azure OpenAI в EU Data Zone по умолчанию, Vertex AI EU или Amazon Bedrock Frankfurt по выбору, каждый в нашем собственном тенанте с нулевым удержанием данных и без обучения на контенте клиента, или на собственной конечной точке организации; один резолвер в коде выбирает шлюз для каждого места вызова, поэтому второго пути нет. Мы также вычистили имена участников и текст высказываний из логов конференций в браузере, которые в противном случае могла бы захватить запись сессий PostHog. Полная карта по каждому вендору находится в статье Где фактически работает одна встреча InterMIND.
Прозрачность — субпроцессоры и записи обработки, опубликованы
Список субпроцессоров опубликован: с указанием того, что делает каждый вендор и где он зарегистрирован, — а не «доступно по запросу». За ним стоит Реестр операций обработки данных (ROPA), созданный на основе живой схемы: 11 операций обработки, меры безопасности для каждой и пути удаления / портативности. Наша Политика конфиденциальности и Условия теперь действуют под нашим собственным юридическим лицом с описанием реальной цепочки обработки.
Среда выполнения в ЕС — зафиксирована, а не обещана
Каждый переход среды выполнения, совершаемый встречей, находится в ЕС: приложение и API на Vercel Frankfurt, сервер встреч на Fly Paris, данные приложения в Neon Postgres (AWS Frankfurt), ошибки на Sentry EU, аналитика на PostHog EU, электронная почта через Resend Ireland. Объектное хранилище на Tigris теперь привязано к регионам ЕС (Frankfurt + Amsterdam) — каждая новая запись попадает в ЕС независимо от того, где находится пользователь. Полная архитектура описана на нашей странице безопасности.