内容提要
Supabase Vault是一个新的Postgres扩展,提供安全的加密秘密存储和数据加密功能。用户可以通过简单的界面管理秘密和加密密钥,支持环境变量和API密钥等存储。Vault采用透明列加密(TCE)确保数据安全,密钥存储在数据库外部,增强了安全性。未来,Supabase计划实现端到端加密和公共密钥管理等功能。
延伸解读
密钥外置:安全模型的关键
Vault 将加密密钥存储在数据库外部,数据库中只保留密钥 ID。即使攻击者获取完整数据库转储,也只能看到加密数据和密钥 ID,无法获得原始密钥。这种设计避免了将密钥与加密数据一同存储的风险,类似于锁门后不把钥匙留在锁上。Supabase 在内部后端系统管理根密钥,并提供备用仪表板端点供用户在 Supabase 外部解密数据。
透明列加密:不止于 Vault
Vault 基于 pgsodium 的透明列加密(TCE),但 TCE 也可用于用户自己的表。在仪表板中创建或修改列时,可指定 text 或 bytea 列加密并选择密钥。加密后,插入数据会自动加密存储,同时自动生成解密视图(如 decrypted_<表名>),按行解密。这为多表多列加密提供了灵活性,不局限于 Vault 的预建表。
认证加密与关联数据
TCE 使用基于 libsodium 的认证加密与关联数据(AEAD)算法。认证加密意味着数据除加密外还被签名,解密前会验证签名,防止伪造。关联数据允许将同一行中的其他列纳入签名计算,确保这些列的真实性。因此,即使数据库转储被恢复,秘密和关联列都能验证未被篡改。
未来方向:端到端与群组加密
Supabase 计划利用 pgsodium 暴露的 libsodium 加密流 API 实现端到端加密,让用户加密个人数据,开发者也无法访问。群组加密旨在简化多方可加密消息,可能使用 signcryption 等新算法。公钥管理将简化公钥加密,无需运行 GPG 脚本或处理 SSL 库。这些功能目前已在 Supabase 平台提供。
Q&A
Supabase Vault是什么?
Supabase Vault是一个新的Postgres扩展,提供安全的加密秘密存储和数据加密功能。
Supabase Vault如何管理秘密和加密密钥?
Vault通过简单的用户界面管理秘密和加密密钥,支持环境变量和API密钥等存储。
透明列加密(TCE)在Supabase Vault中有什么作用?
TCE确保数据安全,防止数据泄露到日志和备份中,并提供行级认证加密。
Supabase Vault的加密密钥存储在哪里?
加密密钥存储在数据库外部,只有密钥ID存储在数据库中,增强了安全性。
Supabase未来有哪些计划来增强Vault的功能?
未来计划实现端到端加密和公共密钥管理等功能,以增强隐私保护。
如何在Supabase Vault中存储秘密?
用户可以通过Vault的界面输入秘密,选择加密密钥并提交,秘密将被安全存储。