是否可以确保从PostgreSQL数据库采取的转储总是encryption?
数据库中的数据是高度敏感的,我们不能负担包括需要备份数据库的系统pipe理员在内的未授权人员访问实际数据。
PostgreSQL没有内置的东西。 你最好的select是用外部程序encryption它。
pg_dump ... | encrypt > mydump.pg.enc
一个备份数据库的系统pipe理员是恕我直言,总是能够查看表,所以表内容本身必须被locking。 实现这一目的的唯一方法是在将数据存储在数据库中之前对数据进行encryption,但是这可能会增加查询复杂度并创build索引。
是否可以确保从PostgreSQL数据库采取的转储总是encryption?
是。 您需要创build一个机制(可能是一个脚本或程序)来执行备份,并提供作为结果encryption的转储。 然后,pipe理员将运行该脚本并观察该过程,但无法删除转储的内容。
您还需要保证原始数据不会被看到,可能会将其放在一个encryption的卷上,该卷的密码只能由特定的人员input。 那么访问这个数据库就会被限制在一个非常具体的用户和服务集合中,实际上是closures了复制数据的任何手段在其他地方进行检查。 这意味着在Windows机器上,他们不会是域pipe理员(谁可以绕过安全); 在Linux / BSD上,他们将无法 “成为根”(这也绕过了安全性)。 这对您使用的机器的pipe理造成了巨大的负担,因为许多pipe理function都需要在该级别访问。 这并不是说它不能做到 ,但是这会在如何履行职责上造成巨大的开销。 您需要find创造性的方法来让脚本运行其他具有提升权限的脚本(等等)。
最简单的解决scheme是物理隔离服务器,只有通过运行创buildencryption的转储文件的脚本才可以执行备份序列的特定的可信人员。 访问数据将通过普通的(端口5432)PostgreSQL连接,但是不允许其他networking访问。 这也意味着你的系统pipe理员将不被允许访问有问题的服务器。
数据库中的数据是高度敏感的,我们不能负担包括需要备份数据库的系统pipe理员在内的未授权人员访问实际数据。
那么你有一个基本的困惑。 你的pipe理员是你应该拥有的信任的人。 这是因为计算机上的大多数pipe理访问都会绕过安全检查,以便pipe理员可以执行其职责。
您当然可以创build工具和方法,将它们与数据的直接访问分开,但坦率地说,一个聪明的pipe理员将能够毫不费力地解决这个问题。 这是信任进入的地方。
记住,诚信和信任是一个系统pipe理员的真正价值 ,以及与其他用户的分离。 他们需要确保数据的完整性,并保持用户对其系统的信任。 没有任何一个,那么…你最好自己执行这个任务。