如何对PostgreSQL数据库进行安全加密?
我无法找到一个好的文档来解释如何实现这一点。
数据库加密解决方案1:
系统磁盘加密(cryptsetup/luks)... 在这种情况下,Postgres设置不需要进行任何修改。这也使clog和文本日志在静态状态下加密。如果您正在使用Google Cloud VM 此指南可能会有帮助。
数据库加密解决方案2:
PostgreSQL TDE(透明数据加密)是 PostgreSQL 的一个特性,实现了对整个数据库的静态数据加密。这里有一个示例。
数据库加密解决方案3:
我还没有找到有关Postgres的EncryptionAtRest文档。来这里了解更多关于EncrAtRest的信息的人可以查看AWS RDS或MongoDB Enterprise,它们提供了此功能。
我的回复是对那些遵循“批准”答案的人的警告!说“只需使用文件系统加密”是忽略了加密数据库静止的目的。当你加密文件系统时,这会保护你免受某人复制驱动备份或窃取物理驱动器的伤害。除此之外什么都不起作用。
攻击者通过网络获得了访问您挂载的文件系统的权限,因此它已经被解密以使其可访问于操作系统、应用程序等。
如果您想加密整个数据库,只需使用文件系统加密即可。您可能还希望加密事务日志和数据库日志,因此只需加密这些日志所在的文件系统即可。
如果您只想加密几列数据,则pgcrypto模块是标准的解决方案。
CREATE EXTENSION pgcrypto;
CREATE TABLE userinfo (username varchar(20), password bytea);
以加密格式插入数据:
INSERT INTO userinfo VALUES(' suman ',encrypt('111222','password','aes'));
select * from userinfo ;
文件系统加密可以提供对大多数攻击的保护,但无法解决“斯诺登问题”,即当数据库管理员使用数据库权限窃取数据时。