【发布时间】:2020-09-25 15:25:41
【问题描述】:
大家好,
我们正在构建一个解决方案,在第一阶段之后,我们被要求保护数据库中的用户 PI。至此,我们的用户数据已达到 1000 万。 我们探索了几个选项:
- 应用程序端(Spring Boot 端)加密 - 具有强大的三重加密技术。
- 数据库端的加密 - 让 DB 处理加密和解密的难题,我们不会为此烦恼。我们使用 JPA 注释来简化自己。
我们采用了第二种方法,因为加密数据会出现通配符搜索。如果我们在应用端使用 AES 技术做,是不可能得到结果集的。
现在我们可以实施并且一切都按预期正常工作。我们现在面临很多查询性能问题。所以我们去创建索引。但是由于我们已经加密了,我们必须使用解密函数创建索引,否则索引没有任何作用。
在包含解密信息的列上创建索引是否安全。该索引将具有解密的数据。加密数据的全部目的没有意义。
Data Type is BYTEA and used
pgp_sym_encrypt 用于加密。
类似使用
pgp_sym_decrypt 用于通过密钥解密
为了创建索引,我们必须将索引创建为
在表上创建索引 index_1(pgp_sym_decrypt(, 'key') VARCHAR_pattern_ops);
上述索引在可见性方面是否存在任何问题。另外还有其他替代方法可以为 Postgres 表查找列级加密并通过创建索引来执行查询优化。
是否还有其他选项,例如保护表空间。请给我一些启发
【问题讨论】:
标签: postgresql spring-boot encryption cryptography