关于PostgreSQL密码安全策略

本文详细介绍了如何在PostgreSQL中实施安全密码策略,包括加密存储、密码复杂度检查、锁定策略和有效期设置。还讲解了如何配置密码检查模块及调整数据库服务状态。

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

关于PostgreSQL密码安全策略

1.加密存储策略
2.密码验证失败次数限制锁定和解锁策略
3.密码复杂度策略(弱密码、重复密码等)
4.密码有效期策略

查看 PostgreSQL 服务状态(查看BINDIR和PGDATA路径)
systemctl  status postgresql-12

加密存储
查看密码加密方式
show password_encryption;
testdb01=# show password_encryption;
 password_encryption 
---------------------
 md5

查看用户密码
select * from pg_shadow where usename='test';
testdb01=# select * from pg_shadow where usename='test';
 usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls |               passwd                | valuntil | useconfig 
---------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
 test    |    16384 | f           | f        | f       | f            | md39a862ac337a91e42d64dc94ca7418205 |          | 

加密方式的配置,可以通过配置文件 pg_hba.conf 修改(修改后要重启数据库生效)
vi /var/lib/pgsql/12/data/pg_hba.conf

查看用户密码有效期(valuntil)
select * from pg_user where usename='test';
testdb01=# select * from pg_user where usename='test';
 usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig 
---------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 test    |    16384 | f           | f        | f       | f            | ******** |          | 

valuntil为有效期设置,如果为空,则永不过期

修改密码有效期
alter role test valid until '2021-12-30 23:59:59';

注意:
1)PostgreSQL的密码有效期只对客户端有效,服务端不受限制
2)设置密码有效期时,网络访问控制文件(pg_hba.conf)中不能配置为 trust 认证方式

密码复杂度策略(弱密码、重复密码等)
passwordcheck.so 模块会检查密码复杂度检查,包括弱密码、重复密码等。passwordcheck.so 文件默认都存放在 $LIBDIR 目录下,$LIBDIR 路径通过以下命令查看:
pg_config |grep LIBDIR

如果没有设置环境变量,则绝对路径执行:
/usr/pgsql-12/bin/pg_config |grep LIBDIR   
LIBDIR = /usr/pgsql-12/lib
PKGLIBDIR = /usr/pgsql-12/lib

确认文件存在:
ls -l /usr/pgsql-12/lib/passwordcheck.so 

如果要开启密码负责度策略检查,需要通过预加载 passwordcheck.so 扩展模块来实现,有几种方法可以实现预加载:
local_preload_libraries (string)
session_preload_libraries (string)
shared_preload_libraries (string)

我选择了使用 shared_preload_libraries 方式来实现预加载
修改 postgresql.conf 配置文件设置 shared_preload_libraries 参数
vi /var/lib/pgsql/12/data/postgresql.conf
#shared_preload_libraries = ''  # (change requires restart)
shared_preload_libraries = 'passwordcheck'  # (change requires restart)

重启数据库服务生效
systemctl restart postgresql-12

注意:实际操作时,可以先设置一个过期时间(历史日期)重启生效验证过期策略功能有效以后,再调整为正确的过期日期、重启数据库服务。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sunny05296

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

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

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

打赏作者

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

抵扣说明:

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

余额充值