Postgresql数据库安全性配置-密码
数据库密码管理是数据库安全的重要环节之一。密码管理及配置策略主要包括:
- 密码加密存储
- 密码有效期
- 密码复杂度
- 密码验证失败延迟
- 密码验证失败次数限制,失败后锁定, 以及解锁时间
- 设置密码时防止密码被记录到数据库日志中
下面会依次讲解在PostgreSQL中如何实现密码相关的安全性配置。
1、密码加密存储
pg中密码始终以加密方式存储在系统目录中。ENCREPED 关键字没有任何效果, 但被接受向后兼容。加密方式可以通过password_encryption参数配置
postgres=# show password_encryption;
password_encryption
---------------------
md5
(1 row)
postgres=# select * from pg_shadow where usename='test';
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | usec
onfig
---------+----------+-------------+----------+---------+--------------+-------------------------------------+------------------------+-----
------
test | 49156 | f | f | f | f | md52d308906cb4ea734a22f76e7927c046b | 2019-04-10 16:58:00+08 |
(1 row)
postgres=#
2、密码有效期
pg支持密码有效期配置,可以通过配置密码有效期,制定密码更换周期。
服务器端设置有效期
postgres=# alter role test valid until '2019-04-10 16:58:00';
ALTER ROLE
postgres=# select * from pg_user where usename='test';
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
---------+----------+-