PostgreSQL静态数据库加密

jtjikinw  于 2023-01-12  发布在  PostgreSQL
关注(0)|答案(4)|浏览(202)

如何加密静态的PostgreSQL数据库。
我找不到关于如何实现这一目标的良好文档?

nwsw7zdq

nwsw7zdq1#

威胁模型在这种情况下非常重要,因为高效加密数据库不是一件容易的任务,这可以在3个不同的层(客户端应用程序、存储设备、数据库本身)完成。注意,在所有情况下,如果客户端应用程序受到损害,加密将毫无用处,自数据库加密解决方案涵盖的威胁模型最少,如下所列。

  • 恶意用户窃取存储设备并直接读取数据库文件。
  • 恶意备份操作员获取备份。
  • 保护静态数据(持久性数据)
    数据库加密解决方案1:

系统磁盘加密(cryptsetup/luks)...在这种情况下,不需要修改Postgres设置。这也使clog和文本日志加密(静态)。如果您使用的是谷歌云虚拟机this guide可能会有用。

数据库加密解决方案2:

PostgreSQL TDE(透明数据加密)这个postgres特性实现了整个数据库的静态透明数据加密。一个示例被演示为here

数据库加密解决方案3:

Pgcrypto可以用来加密数据库的一部分,而不是加密所有内容的解决方案。here演示了一个示例。

9udxz4iz

9udxz4iz2#

我也没有找到关于EncryptionAtRest for Postgres的文档,想了解更多EncrAtRest的人应该去看看AWS RDS或MongoDB Enterprise,它们提供了这个功能。
我的回答是对那些遵循“认可”答案的人的一个警告!说“只使用文件系统加密”忽略了加密静态数据库的目的。当你加密文件系统时,这可以防止有人复制驱动器备份或窃取物理驱动器。除此之外,没有别的。
网络上的攻击者已经获得了对您安装的文件系统的访问权限,因此它已经被解密,使操作系统、应用程序等可以访问它。

ie3xauqp

ie3xauqp3#

如果你想加密整个数据库,只需要使用文件系统加密,你可能也想加密事务日志和数据库日志,所以只需要加密它们所在的文件系统。
如果您只想加密几列,那么pgcrypto模块是完成此操作的标准方法。

qgzx9mmu

qgzx9mmu4#

创建扩展页加密;
创建表用户信息(用户名varchar(20),密码bytea);
以加密格式插入数据
插入用户信息值(“suman”,加密(“111222”,“密码”,“aes”));
从用户信息中选择 *;

相关问题