PostgreSQL 加密备份

PostgreSQL 加密备份

是否可以确保从 PostgreSQL 数据库获取的转储是总是加密?

数据库中的数据高度敏感,我们不能让未经授权的人员(包括需要备份数据库的系统管理员)访问实际数据。

答案1

PostgreSQL 中没有内置任何内容。最好的办法是使用外部程序对其进行加密。

pg_dump ... | encrypt  > mydump.pg.enc

答案2

是否可以确保从 PostgreSQL 数据库获取的转储始终是加密的?

是的。您需要创建一个机制(可能是脚本或程序)来执行备份并提供加密的转储。然后,管理员将运行脚本并观察该过程,但无法推断转储的内容。

您还需要以某种方式保护原始数据,使其无法被看到,可能将其放在一个加密卷上,该卷具有只能由特定人员输入的密码。然后,对该卷的访问将被限制在一组非常特定的用户和服务中,实际上关闭了复制数据以供其他地方检查的任何手段。这意味着在 Windows 计算机上,他们将不是是域管理员(可以绕过安全性);在 Linux/BSD 上,他们会不是能够“成为 root”(这也会绕过安全性)。这会对您所使用的机器的管理造成巨大负担,因为许多管理功能都需要该级别的访问权限。 这并不是说做不到,但这会给它们执行任务带来巨大的开销。您需要找到创造性的方法让脚本运行具有提升权限的其他脚本(等等)。

最简单的解决方案是物理隔离服务器,只让特定的、可信赖的人员通过运行创建加密转储文件的脚本来执行备份序列。访问数据将通过正常的(端口 5432)PostgreSQL 连接进行,但不允许其他网络访问。 这也意味着您的系统管理员将不被允许访问相关服务器。

数据库中的数据高度敏感,我们不能让未经授权的人员(包括需要备份数据库的系统管理员)访问实际数据。

那么你就陷入了一个根本性的困境。你的管理员是你应该信任的人。这是因为计算机上的大多数管理访问都会绕过安全检查,以便管理员能够履行其职责。

当然,您可以创建工具和方法,让他们无法直接访问数据,但坦率地说,聪明的管理员可以轻而易举地解决这个问题。这就是信任发挥作用的地方。

请记住,诚信和信任是系统管理员的真正价值以及他们与其他用户的区别。他们有责任确保数据的完整性,并保持用户对他们系统的信任。如果没有其中任何一个,那么……你最好自己履行职责。

答案3

在我看来,备份数据库的系统管理员始终能够查看表格,因此必须锁定表格内容本身。实现此目的的唯一方法是在将数据存储到数据库之前对其进行加密,但这可能会增加查询复杂性和索引创建。

相关内容