数据库转储不会泄露任何信息。

每位用户的个人数据都会使用按租户区分的密钥进行静态加密,这些密钥永远不会接触数据库。即使存储凭据泄露或备份被盗,得到的也只是密文——没有电子邮件地址,没有姓名,也没有电话号码。

工作原理

  • 加密在数据库之外进行。数据的加密与解密均通过 HashiCorp Vault Transit 完成——应用程序从不持有密钥材料,数据库也从未见过密钥。
  • 每个租户都拥有专属密钥。删除租户时会对其密钥进行加密粉碎(crypto-shred),使该租户的所有数据永久无法恢复——无需逐行清除数据。
  • 随机化的 AES-256-GCM保护着每一个数据值,因此相同的输入永远不会生成相同的密文。

加密之后,依然可搜索

加密通常意味着放弃搜索能力,但在这里并非如此。在每个加密值旁边,我们都会存储基于密钥的 HMAC“盲索引”(blind index)令牌——因此按电子邮件登录、管理员按姓名搜索,以及“查找 acme.com 域下的所有用户”等操作,都可以在从未以明文存储的数据上进行精确匹配和前缀查找。索引密钥同样是 HMAC:即使索引表被导出,也不会泄露任何信息。

哪些数据受到保护

电子邮件地址、名和姓、电话号码、公司名称,以及您存储的任何自定义属性——全部进行静态加密。密码从未以可逆方式存储(它们通过现代 KDF 进行单向哈希处理)。角色分配、不透明 ID 和时间戳并非个人数据,会以明文形式保留,以确保系统正常运转。

我们所防范的威胁

我们所设想的场景是:存储凭据泄露,或备份被暴露——有人获取了数据表的原始副本。透明的磁盘级加密(即便使用客户自管密钥)在这种情况下无济于事:只要能够读取存储,数据就会被自动解密,因此导出的内容仍是明文。而应用层加密则真正有效——密钥保存在 Vault 中,与数据相互隔离,因此数据表的副本只是密文的副本。

传输过程同样加密

除了静态加密之外,数据在传输过程中也会加密(TLS 1.2+)。我们很乐意在 NDA(保密协议)的保护下,与企业客户详细介绍我们的安全控制措施。

报告安全漏洞

发现问题?请发送电子邮件至 [email protected]。我们的机器可读联系信息发布在 /.well-known/security.txt