Postgresql 之 数据库认证

作者:瀚高PG实验室 (Highgo PG Lab)-波罗
密码存储的安全注意事项
CREATE ROLE name [ [ WITH ] option [ … ] ]
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD ‘password’
ENCRYPTED 存储为MD5
UNENCRYPTED 存储为明文

示例:
alter role rep encrypted password ‘123’;
ALTER ROLE
select usename,passwd,md5(‘123rep’) from pg_shadow where usename=‘rep’;
usename | passwd | md5
---------±------------------------------------±---------------------------------
rep | md5a6f8e01c46849ed88d55e3c347ec318a | a6f8e01c46849ed88d55e3c347ec318a
(1 row)

明文
alter role rep unencrypted password ‘123’;
ALTER ROLE
select usename,passwd,md5(‘123rep’) from pg_shadow where usename=‘rep’;
usename | passwd | md5
---------±-------±---------------------------------
rep | 123 | a6f8e01c46849ed88d55e3c347ec318a
(1 row)

密码复杂度注意事项
确保已编译passwordcheck, 未编译的话到源码的contrib目录中编译一下
ll $PGHOME/lib/passwordcheck*
-rwxr-xr-x 1 root root 14K Oct 13 09:00 /home/pg93/pgsql/lib/passwordcheck.so

修改数据库配置文件
vi $PGDATA/postgresql.conf
shared_preload_libraries = ‘passwordcheck,pg_stat_statements,auto_explain’

重启数据库
pg_ctl restart -m fast
再次修改密码时, 如果密码太简单会报错
alter role rep unencrypted password ‘123’;
ERROR: password is too short

alter role rep unencrypted password ‘rep1234567RER’;
ERROR: password must not contain user name

alter role rep unencrypted password ‘re1234567RER’;
ALTER ROLE

密码更换周期注意事项
alter role rep VALID UNTIL ‘2013-12-18 00:09:07.549152’;
digoal=> \du+ rep
List of roles
Role name | Attributes | Member of | Description
-----------±---------------------------------------------------±----------±------------
rep | Replication +| {} |
| 32 connections +| |
| Password valid until 2013-12-18 00:09:07.549152+08 | |
密码到期后, 将无法认证通过
pg93@db-172-16-3-150-> psql -h 172.16.3.150 -U rep digoal
Password for user rep:
psql: FATAL: password authentication failed for user “rep”

文件pg_hba.conf详解可参考以下链接:
https://www.postgresql.org/docs/9.5/static/auth-pg-hba-conf.html

TYPE DATABASE USER ADDRESS METHOD
认证类型(pg_hba.conf - TYPE)
local 本地unix socket, host, hostssl, hostnossl ; (host支持hostssl和hostnossl两种模式), ssl表示网络传输的数据使用加密方式传输,
包括认证过程也加密.
认证方法(pg_hba.conf - METHOD) 逐条匹配, 如果匹配到了则不需要往下匹配了.
trust – 无需密码
reject – 拒绝认证
md5 – 校验过程密码加密传输, 但是其他数据是否加密传输要看配置的认证类型是否为SSL.
password – 校验过度密码明文传输, 如果认证类型为SSL, 则同样会被加密.
gss – 使用GSSAPI认证方法, 仅支持TCP/IP连接
sspi – 使用SSPI认证方法, 仅支持windows
krb5 – 使用Kerberos V5 认证方法,仅支持TCP/IP连接
ident – 客户端操作系统用户和数据库用户映射关系认证, 仅支持tcp/ip连接
peer – 客户端操作系统用户和数据库用户映射关系认证, 仅支持unix socket连接
ldap – 使用LDAP服务认证
radius – 使用radius服务认证
cert – 使用客户端的ssl身份认证.
pam --使用操作系统的PAM认证模块进行认证.

密码方式认证过程的安全注意事项
在没有使用ssl连接类型的情况下, 不要使用password认证方法, 因为这种方法会传输明文密码, 可能被截获.
密码认证的方式请使用md5
密码方式认证如何防范暴力破解和类DDOS攻击
对于输错密码的情况, 延迟反馈给用户密码错误的消息. 这样可以防止暴力破解和类DDoS攻击.

Auth_delay详解可参考链接:
https://www.postgresql.org/docs/9.3/static/auth-delay.html

postgresql.conf

shared_preload_libraries = ‘auth_delay’
auth_delay.milliseconds = ‘500’
postgresql的鉴权.
使用最小权限范围鉴权, 尽量避免使用all, 0.0.0.0/0这种大范围授权

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值