我们完成了 GDPR 审计。以下是我们实际完成的整改项。
几周前,我们曾在文章中指出:视频工具主页上标注的"符合 GDPR",含义远比您想象的要少——GDPR 是一系列强加于您(数据控制者)身上的义务,供应商既可能帮助您履行,也可能悄悄地将其留在您的桌上不管。要证明这一点,最诚实的方式就是在自己这一侧把这些工作做好,并逐项呈现出来。
于是我们这样做了。我们对照数据处理者所应承担的义务,对 InterMIND 代码库进行了全面审计,修复了每一个涉及代码层面的缺口,并针对正在运行的产品逐一进行了验证。这篇文章就是结项报告——不是一枚徽章,而是一份附有我们答案的检查清单。
我们刻意不宣称"100% 通过 GDPR 认证"。GDPR 不是一张可以"通过"的证书——我们也不会挥舞一个自己尚未取得的 ISO 徽章。我们可以说的是:DPO 需要梳理的架构与流程义务,现在都有具体、可验证的答案,并且每一项都对照正在运行的代码进行了核实。
我们完成的整改
删除权(第 17 条)——级联删除确实在执行
删除您的账户不只是停用它。POST /api/user/delete-account 会执行一次真正的级联删除:清空您的会议 → 参与者、消息、会议实例(conferences)、转录文本;在数据库级联删除之前,先从 Tigris 中清除您的存储对象,确保不留下孤立数据——聊天附件和视频录制文件,两个字段均涉及;并取消您的 Stripe 订阅并删除 Stripe 客户记录。按需删除功能同样存在——在界面中删除一个频道或一条消息,它就会立即消失。匿名(访客)账户拥有独立的删除接口,并配有每 6 小时运行一次的后台清理任务,由受监控的定时任务(cron)驱动。审计过程中发现了一个缺口——数据库级联删除已清除但存储中仍保留的录制文件对象——我们已将其修复:现在删除操作不会在对象存储中留下任何残留。
数据留存(第 5(1)(e) 条)——一项有明文规定的标准
第 5(1)(e) 条并不要求设置自动的存活时间(TTL)。它要求的是一项明确规定的留存标准。我们的标准现已写入隐私政策:数据会一直保留,直到您或您的团队所有者将其删除;删除账户即会清除全部数据。这与 Slack、Notion 等协作工具所采用的模式相同——持久保存是预期行为,而控制权始终掌握在您手中。这项标准是明确写明的,而不是隐含的。
分析同意(第 6/7 条)——默认关闭采集
一条 Usercentrics 同意横幅(面向欧盟访客展示)对分析功能进行了把关,PostHog 的配置中设置了 opt_out_capturing_by_default: true——在获得同意之前不会采集任何数据,而不是反过来先采集再等待用户拒绝。
数据可携权(第 20 条)——真正可用的导出功能
GET /api/user/export 会将您的会议、消息、录制内容和翻译打包成一个 ZIP 文件,下载窗口为 7 天,并会自动清理。访问权、删除权与可携权都是切实可用的工具,而不仅仅是政策中的承诺。
会议内容只流向一个位于欧盟的 AI 网关——由组织自行选择
会议内容中体量最大的部分——实时语音与聊天翻译——运行在我们位于法国的自研引擎之上,从不经过第三方 LLM。真正会用到通用模型的 AI 环节(摘要、文档总结、笔记编辑器中的生成式操作、Ask AI)运行在由组织自行选择的 AI 网关之上——默认使用位于欧盟数据区(EU Data Zone)的 Azure OpenAI,也可选择 Vertex AI EU 或法兰克福的 Amazon Bedrock,均在我们自己的租户内运行,零数据留存、不会用客户内容进行训练;组织也可以选择接入自己的端点。代码中由一个统一的解析器(resolver)为每个调用点选定网关,因此不存在第二条路径。我们还从 PostHog 会话录制可能捕获的会议浏览器日志中清除了参与者姓名和发言文本。完整的逐一供应商清单参见《一场 InterMIND 会议实际经过哪些环节》。
透明度——已公开的次级处理者名单与处理记录
次级处理者名单已上线,列明了每个供应商的用途及所在地——而不是"如需可提供"。在其背后,是基于实时数据结构(schema)构建的处理活动记录(ROPA):包含 11 项处理操作、各自的安全措施,以及删除/可携权的实现路径。我们的隐私政策与服务条款现已置于我们自己的法律主体之下运行,并描述了真实的处理链路。
欧盟运行环境——固定落地,而非空口承诺
会议数据流经的每一个运行环节都在欧盟境内:应用与 API 运行在法兰克福的 Vercel 上,会议服务器运行在巴黎的 Fly.io 上,应用数据存储在 Neon Postgres(法兰克福,AWS)中,错误信息发送至欧盟的 Sentry,分析数据发送至欧盟的 PostHog,邮件通过爱尔兰的 Resend 发送。Tigris 上的对象存储现已固定于欧盟区域(法兰克福 + 阿姆斯特丹)——无论用户身处何地,每一次新写入都会落地在欧盟境内。完整架构详见我们的安全页面。