我需要加密PostgreSQL 9.6数据库中的一些列。加密的数据本质上是敏感的;但是,这些数据不是密码或其他身份验证凭据。这些数据需要解密,供用户进行统计分析和消费。
在阅读了几个问题和答案之后:
..。考虑到这些评论:

..。使用pgcrypto模块的最大问题似乎是密钥存储在同一个数据库中。
这就引出了一个问题:
将密钥存储在不同的数据库中并通过外部数据包装器(如Postgresql_FDW )访问它是否符合最佳实践?
发布于 2018-01-10 13:11:56
在使用密码机制时,秘密存储是常见的问题。
pgcrypto不提供povide密钥存储,您可以自由地将密钥存储在您想要的位置,并尽可能地保护它。
如果由同一个DBA管理,则将密钥存储在另一个数据库中并不能提供很大的安全性,因为DBA可能以相同的方式访问它。
理想情况下,您应该将密钥存储在一个安全的保险库中,并从您的应用程序中请求它,以便构造查询。在请求通过select * from pg_stat_activity运行时,DBA仍然可以看到它。
您可以通过set session my.vars.cryptokey = 'secret';为SQL会话的广泛使用设置键,然后使用以下语法将其用于查询:current_setting('my.vars.cryptokey')::text
从应用程序的角度来看,为了(几乎)透明,PostgreSQL规则可能有助于将secure_column转换为具有会话存储密钥的解密函数调用。插入时,需要一个预插入触发器。
https://stackoverflow.com/questions/42428360
复制相似问题