赞
踩
关于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
注意:实际操作时,可以先设置一个过期时间(历史日期)重启生效验证过期策略功能有效以后,再调整为正确的过期日期、重启数据库服务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。