在Postgres中存储加密数据

时间:2011-11-08 17:22:03

标签: postgresql encryption

我要求在Postgres中以加密形式存储某些数据。显然,我需要加密,存储它,并能够读取和解密它。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:36)

最佳方式是在客户端或应用程序服务器上执行加密,因此数据库不知道密钥是什么,也无法解密数据。如果客户端/应用服务器位于不同的主机上,那就更好了。

如果您的数据库正在为您加密和解密数据,则很容易将密钥与数据库一起窃取。

如果你使用pgcrypto的数据库内加密函数,你可以让应用程序发送密钥和数据,这至少有点帮助。如果一个有用的系统管理员打开激进的语句记录或自动计划转储,它仍然有可能在日志中暴露密钥,并且最后如果密钥进入数据库机器,它们比它们不是它们更容易受到攻击。控制数据库计算机的攻击者还可以更改日志设置,替换postgresql二进制文件或嗅探流量以捕获密钥和数据。

如果appserver和db在同一台机器上并由相同的角色管理,那么关注隔离它们就不那么令人担心了,只使用pgcrypto可能是明智的。

无论哪种方式,记得加盐!