Supabase 宣布推出可搜索加密技术
速览
Supabase 正式发布可搜索加密技术,用户可以在不解密的情况下对加密数据进行搜索和查询,大幅提升数据隐私保护与可用性。该功能基于新的加密索引方案,解决了传统加密无法搜索的痛点。对依赖云数据库的开发者而言,这是一项重要的安全升级。
AI 深度解读
背景
传统上,处理受监管数据(如医疗、金融、个人隐私)的团队在数据库加密上面临两难选择:要么使用传统字段级加密,但加密后的值在 Postgres 眼中只是随机字节,导致 WHERE email = ? 无法匹配、索引失效、JOIN 失败,唯一搜索方式是把所有行拉回应用层解密后内存过滤,成本高昂且功能受限;要么跳过加密,保持应用性能,但一旦发生数据泄露,明文敏感数据会成为审计问责的焦点。Supabase 作为流行的开源 Firebase 替代方案,其 Postgres 数据库被广泛用于快速开发,但同样面临这一矛盾。CipherStash 提供的 Data Level Access Control (DLAC) 平台为这一难题提供了第三种选择。
核心内容
CipherStash 与 Supabase 的集成现已正式可用。CipherStash 是一个基于 Postgres 构建的数据级访问控制(DLAC)平台。DLAC 将传统访问控制(通常作用于行或表级别)扩展到单个加密值级别,使得策略在解密时执行,而非在查询层强制执行。
通过 CipherStash,团队可以在应用层使用每个值独立的密钥加密敏感字段,对加密数据执行搜索和 JOIN 操作而无需解密,并通过 CipherStash 的零知识密钥管理服务 ZeroKMS 将密钥完全掌握在自己手中。由于密钥永远不会离开用户控制,CipherStash 和 Supabase 都无法访问明文数据。
Supabase 集成允许团队在不修改 Schema 的情况下,通过加密的 Supabase SDK 包装器为任何 Supabase 项目添加字段级加密。设置仅需一行 CLI 命令:npx stash init --supabase。
DLAC 工作原理
加密发生在数据到达数据库之前的应用层。每个值存储为单个 JSON 载荷,包含密文和可搜索加密元数据(Searchable Encrypted Metadata,SEM)。SEM 足以让 Postgres 进行过滤、排序和 JOIN,但不足以恢复原始值。查询进入时被转换为 SEM,Postgres 与存储的 SEM 进行匹配,仅返回应用有权解密的密文。每个加密值都携带一个策略,指明谁可以在什么条件下读取它,该策略在解密时而非查询层执行。
集成方式
在现有 TypeScript 应用中添加 DLAC 通过 CipherStash Stack 实现,原生支持 Supabase.js、Drizzle 和 Prisma Next。加密和解密在应用中透明发生。标记为加密的列通过 SDK 处理,而其他所有操作(WHERE 子句、模糊文本匹配、ORDER BY、甚至 JSON 查询)继续在加密数据上正常工作。
加密密钥通过 ZeroKMS 管理。每个加密值拥有自己的密钥,按需派生,且密钥可跨区域分割以满足数据驻留要求(包括 FedRAMP 和 IL4 等框架)。
对于 SDK 不适用的场景(如分析作业、管理工具、其他语言的背景工作器,或任何需要直接数据库访问的情况),CipherStash Proxy 提供安全的逃生口。该代理使用 Postgres 线协议,透明地处理加密和解密,使现有工具和 SQL 客户端无需修改代码即可处理加密数据。
关键要点
- CipherStash 为 Supabase 提供字段级可搜索加密,避免传统字段级加密导致搜索、JOIN 失效的问题。
- DLAC 将访问控制下沉到单个加密值,策略在解密时执行,而非查询层。
- 每个加密值附带各自的密钥(通过 ZeroKMS 管理),密钥永不离开用户控制,CipherStash 和 Supabase 均无法访问明文。
- 加密在应用层完成,数据到达数据库前已是密文;存储为 JSON 载荷,包含密文和可搜索加密元数据(SEM)。
- Postgres 可基于 SEM 进行过滤、排序、JOIN,但无法恢复原始值。
- 集成通过加密 SDK 包装器实现,一行 CLI 命令即可启用,无需修改 Schema。
- 原生支持 TypeScript 应用中的 Supabase.js、Drizzle、Prisma Next。
- 支持跨区域密钥分割,满足 FedRAMP、IL4 等数据驻留合规要求。
- CipherStash Proxy 提供直接数据库访问场景的透明加密解密,无需改动代码。
- 适用于 HIPAA、GDPR、SOC 2 等受监管工作负载,缩短合规审查并缩小泄露面。
意义与影响
这一集成标志着数据库加密领域一项关键突破:在保持 Postgres 原生查询能力的同时,实现了应用层可控的字段级加密。对于采用 Supabase 的团队,无需再在“加密但无法搜索”和“不加密但面临风险”之间痛苦抉择。CipherStash 的 DLAC 方案使得加密数据可以像普通数据一样被索引、筛选和关联,大幅降低了实现端到端加密的工程复杂度。
从合规角度看,该方案提供了明确的审计路径:每个加密值都携带细粒度的访问策略,密钥由用户完全控制,且数据泄露时密文无法被直接利用。这对于需要满足 HIPAA、GDPR 或 SOC 2 的组织尤为重要,可以直接缩短合规审查周期并缩小潜在泄露面。
此外,CipherStash 的架构设计体现了模块化思维:通过 SDK 实现透明加密,同时通过 Proxy 支持非标准访问场景,兼顾了灵活性和安全性。密钥管理上采用零知识设计和跨区域分割,进一步增强了数据主权和区域合规能力。
总体而言,这一整合不仅提升了 Supabase 在企业级数据安全场景中的竞争力,也为整个 Postgres 生态在可搜索加密领域树立了新的实践标杆。对于任何需要处理敏感数据并希望保持 Postgres 全功能查询能力的开发团队,这都是一项不可忽视的技术进展。
