Ми завершили наш GDPR-аудит. Ось що ми насправді закрили.
Кілька тижнів тому ми писали, що "GDPR-compliant" на головній сторінці відеоінструменту означає менше, ніж ви думаєте — що GDPR — це набір зобов'язань для вас, контролера даних, які постачальник або допомагає вам виконати, або тихо перекладає на ваші плечі. Чесний спосіб обґрунтувати це твердження — виконати роботу з нашого боку і показати її, рядок за рядком.
І ми це зробили. Ми провели повний аудит кодової бази InterMIND на відповідність зобов'язанням, які лежать на нас як на обробнику даних, виправили кожен розрив, за яким стояв код, і перевірили кожен із них на запущеному продукті. Цей пост — звіт про завершення, не бейдж, а чеклист із нашими відповідями.
Ми навмисно не стверджуємо "100% GDPR-сертифіковано". GDPR — це не сертифікат, який ви складаєте — і ми не будемо махати бейджем ISO, якого у нас ще немає. Що ми можемо сказати: архітектурні та процесні зобов'язання, які опрацьовує DPO, тепер мають конкретні, перевірювані відповіді, кожна з яких перевірена на запущеному коді.
Що ми закрили
Право на видалення (Art. 17) — каскад дійсно працює
Видалення вашого облікового запису не просто його деактивує. POST /api/user/delete-account запускає реальний каскад: він знищує ваші зустрічі → учасників, повідомлення, конференції, транскрипції; він вичищає ваші blob-об'єкти зі сховища Tigris до каскадного видалення в базі даних, щоб нічого не залишилося осиротілим — вкладення чату і файли відеозаписів, в обох стовпцях; і він скасовує ваші підписки Stripe та видаляє клієнта Stripe. Видалення за запитом також доступне — видаліть канал або повідомлення з UI, і воно зникне. Анонімні (гостьові) облікові записи мають власну кінцеву точку видалення, а також фонове очищення кожні 6 годин під моніторингом cron. Аудит виявив тут один розрив — blob-об'єкти записів, які каскад бази даних видалив, але сховище зберегло — і ми його закрили: тепер видалення не залишає нічого в об'єктному сховищі.
Зберігання (Art. 5(1)(e)) — задокументований критерій
Art. 5(1)(e) не вимагає автоматичного time-to-live. Він вимагає визначеного критерію зберігання. Наш тепер прописаний у Privacy Policy: дані зберігаються, поки ви або власник вашої команди їх не видалите, а видалення облікового запису стирає все. Це та ж модель, на якій працюють інструменти для співпраці, такі як Slack і Notion — персистентність — це очікувана поведінка, і ви зберігаєте контроль над нею. Критерій прямо заявлений, а не мається на увазі.
Згода на аналітику (Art. 6/7) — opt-out за замовчуванням
Банер згоди Usercentrics (який показується відвідувачам з ЄС) контролює аналітику, а PostHog постачається з opt_out_capturing_by_default: true — нічого не фіксується до надання згоди, а не навпаки.
Портативність даних (Art. 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 операцій обробки, заходи безпеки для кожної та шляхи видалення / портативності. Наші Privacy Policy та Terms тепер працюють під нашою власною юридичною особою, з описом реального ланцюга обробки.
Робоча інфраструктура в ЄС — зафіксована, а не обіцяна
Кожен робочий перехід під час зустрічі відбувається в ЄС: додаток та API на Vercel Frankfurt, сервер зустрічей на Fly Paris, дані додатку в Neon Postgres (AWS Frankfurt), помилки на Sentry EU, аналітика на PostHog EU, email через Resend Ireland. Об'єктне сховище на Tigris тепер прив'язане до регіонів ЄС (Frankfurt + Amsterdam) — кожен новий запис потрапляє в ЄС, незалежно від того, де знаходиться користувач. Повна архітектура знаходиться на нашій сторінці безпеки.