首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为pgcrypto存储密码

为pgcrypto存储密码
EN

Database Administration用户
提问于 2023-03-10 07:37:23
回答 1查看 55关注 0票数 0

在对字段的敏感信息进行加密时,我们可以使用pgcrypto对字段进行加密,如下所示:

代码语言:javascript
复制
INSERT INTO employees (email, password) VALUES (
'employee@corporatemail.com',
crypt('mypassword', gen_salt('bf'))
);  

但是,在查询列时,我们必须以纯文本形式提供密码,如下所示:

代码语言:javascript
复制
SELECT id
FROM employees
WHERE email = 'employee@corporatemail.com' AND password = crypt('mypassword', password).  

我使用的是azure postgres,而且我看不到将这个密码安全地存储在postgres提供的某个地方的方法。我担心的一件事是,如果启用了查询的完整日志记录,那么密码将在日志中显示为纯文本,而且每当我想查看/查询加密数据时,我都必须提供主密码。我不知道postgres是否有一个可以安全地保存密码并在运行时获取密码的工具,就像金库用于环境变量一样?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2023-03-10 08:58:06

无法安全地将该加密密钥存储在数据库中。如果数据库可以自动检索它,那么控制数据库的攻击者也可以这样做。

您必须将密钥存储在数据库之外,也许在您的应用程序中。但是,同样的问题也适用于应用程序,而不是数据库。此外,正如您正确地指出的,数据库管理员可以记录包含密钥的语句。

由于后一个原因,使用pgcrypto加密数据库内容是有缺陷的。最好对应用程序中的数据进行加密,这样数据库就不会看到未加密的数据。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/324599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档