PostgreSQL数据库安全加固(十二)——设置密码以哈希形式存储

文章讲述了PostgreSQL数据库中密码安全的重要性,包括检查密码是否以加密的哈希形式存储,推荐的加密类型为md5或scram-sha-256。提供了检查当前配置和加固建议的步骤,如修改postgresql.conf文件以启用加密,并介绍了如何重启或重载配置来应用更改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

以明文形式存储,使用可逆加密或使用未加保留的哈希的数据库密码很容易受到未经授权的泄露。数据库密码在内部或外部存储到PostgreSQL时必须始终采用单向哈希的形式。

一、检查配置

1、要检查是否启用了密码加密,请以数据库管理员身份(此处显示为“postgres”)运行以下SQL。

# 切换至postgres账户
su - postgres
# 查询配置
psql -c "SHOW password_encryption"

在这里插入图片描述
如果password_encryption的值不为”md5”或” scram-sha-256”,则存在安全风险。
2、查看账户密码的存储形式。
以数据库管理员(此处显示为“postgres”)身份,运行以下SQL:

# 切换至postgres账户
su - postgres
#
psql -x -c "SELECT usename,passwd,valuntil FROM pg_shadow;"

如果任何密码是纯文本,则存在安全风险。
在这里插入图片描述

pg_shadow表字段说明

usename:pg_authid.rolname用户名
usesysid:用户的ID
usecreatedb:用户能否创建数据库
usesuper:用户是否为一个超级用户
userepl:用户可以开启流复制并将系统转入/转出备份模式。
usebypassrls:用户避开每个行级安全策略。
passwd:口令(可能被加密),如果没有则为空。关于加密口令如何存储请参见pg_authid。
valuntil:口令过期时间(仅用于口令认证)
useconfig	:运行时配置变量的会话默认值

二、加固建议

要启用password_encryption,请以数据库管理员身份编辑postgresql.conf配置文件。

$ su - postgres 
$ vi ${PGDATA?}/postgresql.conf 

如下图,将参考password_encryption改成scram-sha-256 或者md5.
在这里插入图片描述

修改完配置文件后,以系统管理员身份重新启动数据库或者重新加载配置文件。

# 重启数据库
pg_ctl restart
# 重新加载配置文件
pg_ctl reload

总结

如果使用密码进行身份验证,则PostgreSQL数据库必须仅存储密码的哈希形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小马穿云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值