加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL:使用pgcrypto加密列

发布时间:2020-12-13 16:14:15 所属栏目:百科 来源:网络整理
导读:我需要加密PostgreSQL 9.6数据库中的一些列.被加密的数据本质上是敏感的;但是,数据不是密码或其他身份验证凭据.需要对这些数据进行解密,以供用户进行统计分析和消费. 看完几个问题和答案后: Storing encrypted data in Postgres https://dba.stackexchange.
我需要加密PostgreSQL 9.6数据库中的一些列.被加密的数据本质上是敏感的;但是,数据不是密码或其他身份验证凭据.需要对这些数据进行解密,以供用户进行统计分析和消费.

看完几个问题和答案后:

> Storing encrypted data in Postgres
> https://dba.stackexchange.com/questions/24370/how-to-use-aes-encryption-in-postgresql
> https://dba.stackexchange.com/questions/59942/secure-postgresql-database-encryption

……并考虑以下评论:

…使用pgcrypto模块似乎最大的问题是在同一个数据库中存储密钥.

这引出了一个问题:

是否与将密钥存储在不同数据库中并通过外部数据包装器(如Postgresql_FDW)访问它的最佳实践一致?

使用加密机制时,秘密存储是一个常见问题.

pgcrypto不提供密钥存储,您可以随意将密钥存储在您想要的位置并保护它.

将密钥存储在另一个数据库中,如果由同一个DBA管理,则不会提供太多安全性,因为DBA可能以相同的方式访问它.

理想情况下,您可以将密钥存储在安全保管库中,并从应用程序中请求它以构建查询.当请求通过select * from pg_stat_activity运行时,DBA仍然可以看到它.

您可以通过set session my.vars.cryptokey =’secret’设置SQL会话广泛使用的密钥;然后使用以下语法将其用于您的查询:current_setting(‘my.vars.cryptokey’):: text

从应用程序的角度来看(几乎)透明,PostgreSQL规则可以帮助将secure_column转换为使用会话存储密钥的解密函数调用.对于插入,将需要预插入触发器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读