单租户推理隔离:当共享缓存、微调模型和嵌入在客户间泄露时
多租户 SaaS 在十年前就解决了数据隔离问题。Postgres 中的行级安全性(Row-level security)、每个租户的加密密钥、范围限定为租户前缀的 S3 存储桶策略——到 2018 年,这套方案已经非常成熟,以至于当审计员询问“向我展示客户 A 的数据如何无法触及客户 B 的数据”时,只需要提供一份一页纸的回答,并在每一层附上引用即可。AI 功能悄然重新引入了这个问题,而现在的答案不再只有一页纸。
有趣的部分并不是 AI 破坏了隔离。有趣的是它在 哪里 破坏了隔离:不是审计团队守卫了十年的数据层,而是没有人画在图表上的四个新层级。提示词缓存前缀(Prompt cache prefixes)以跨请求共享 KV 状态的方式,将首字生成时间(time-to-first-token)变成了一个侧信道。在聚合客户数据上训练的微调模型会记住特定租户的措辞,并将其反馈给错误的客户。当威胁模型要求物理分离时,嵌入索引(Embedding indexes)却通过查询过滤器进行逻辑分区。跨请求的 KV 缓存重用创建了时间信道,而当“共享推理没问题”被视为一种合理的捷径时,没有人对此进行过威胁建模。
本篇文章讨论了发生了哪些变化,以及当你认真对待这个问题时,这种规范看起来是什么样子的。
