pg_hba.conf文件的策略顺序

原来一直以为这个文件中,每一行的顺序是没有区别的,但是最近的一个需求,研究时发现,原来这个文件对登录的会话,是从上往下依次判断的:

具体的规则是:

因此,如果我有一个用于备份的用户,叫anybackup(爱数备份软件),由于权限设置的比较大,需要保证只能在数据库本机登录(利用爱数在数据库本机的agent,登录数据库),且要禁止该用户,从别的主机登录。
我们可以这样写我们的pg_hba.conf文件:

这表示:
(1)如果是以本地socket方式连接数据库,则全部信任,无需密码。
(2)如果是通过tcpip(不管是ssl还是非ssl)登录,且是非爱数的anybackup用户,比如正常的业务用户,那么第一行,不是socket登录,不符合,继续往下走;第二行,不是anyback用户,不符合,继续往下走;第三行,也不是anybackup用户,不符合,继续往下走;第四行,不是repuser主从复制用户,不符合,继续往下走;第五行,符合,可以用密码登录。
(3)如果是通过tcpip(不管是ssl还是非ssl)登录,且数据库用户是anybackup,在数据库本机登录,那么第一行,不符合,继续往下走;第二行,匹配到了用户,但是ip地址不符合,继续往下走;第三行,全部符合,登录成功,完成,不往下继续判断了。
(4)如果是通过tcpip(不管是ssl还是非ssl)登录,且数据库用户是anybackup,在远程登录,那么第一行不符合,往下走,第二行符合,直接拒绝连接,已经匹配到规则,所以不往下继续判断。

注意我们这边reject的策略,不能放到最后一行。如果我们配置成这样:

那么,我们远程登录的anybackup用户,就会符合第四行的策略,不再进行第五行的判断。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据