使用pgcrypto加密Postgresql数据库中的列数据

问题描述

我有一个postgres数据库,其中一些表的列包含一些敏感数据,我使用了 PGCRYPTO 扩展名(pgp_pub_encrypt / pgp_pub_decrypt)进行加密,并使用了 gpg 生成公共和私有数据密钥对。

我有两个问题:

  • 这对密钥应该在哪里存储,因为我知道我应该使用相同的生成的私钥来解密列(我尝试将其放入postgresql.conf文件中,但这是行不通的)

  • 我们可以为每个会话生成密钥对以使系统更安全吗?

解决方法

公钥可以存储在任何地方。您可以将其存储在数据库中。

私钥属于您的应用程序。它应该存储在应用程序服务器上,以便应用程序可以提供它来解密数据库中的数据。