当前位置:   article > 正文

Postgresql杂谈 01—访问控制配置文件pg_hba.conf的介绍

pg_hba.conf

一、文件结构介绍

       PostgresSql的访问控制文件pg_hba.conf位于/var/lib/pgsql/11/data,主要的作用是控制控制哪些IP地址可以访问数据库。

  1. # TYPE DATABASE USER METHOD
  2. # "local" is for Unix domain socket connections only
  3. local all all peer
  4. # IPv4 local connections:
  5. host all all 127.0.0.1/32 ident
  6. # IPv6 local connections:
  7. host all all ::1/128 ident
  8. # Allow replication connections from localhost, by a user with the
  9. # replication privilege.
  10. local replication all peer
  11. host replication all 127.0.0.1/32 ident
  12. host replication all ::1/128 ident
  13. host all all 0.0.0.0/0 trust

      它每一行代表一个完整的配置,每行都包含相同的几个字段,字段的含义如下

  • TYPE

链接的类型,目前比较常用的链接类型主要有以下四种

TYPE

说明

local

定义本地的链接类型,配置时通过本地的UNIX套接字进行链接,如果配置了,我们在本机上使用psql时可以不用输入服务端的IP和端口号,默认以操作系统的用户进行登录,但是需要注意两点:

1、默认登录的端口号是5432,如果数据库没有采用该端口号,则需要显式的用-p参数进行指明

2、数据库中必须创建和和当前操作系统用户同名的数据库用户

host

该类型下,配置数据库支持远程TCP/IP链接,如果数据库需要配置局域网或者外网进行访问,需要进行该类型的配置。

hostssl

该类型的记录匹配使用TCP/IP的SSL链接,必须使用SSL加密才能链接数据库。

hostnossl

该配置和hostssl相反,只匹配不使用SSL的TCP/IP链接

  • DATABASE

配置支持链接的数据库,有三种不同的配置方案:

DATABASE

说明

数据库名称

这里可以配置数据库名称,意思就是对配置的数据库支持远程或者本地链接的配置。

all

表明当前的配置针对所有的数据库生效

replication

这是流复制链接的配置,在PG的主从配置中会用到

  • USER

配置进行链接的用户,需要注意的是这里是指的数据库的用户,而非操作系统的用户,如果配置了all表示接受所有数据库用户的链接。

  • ADDRESS

允许或者拒绝远端链接的IP地址,TYPE配置的是local可以为空,当时TYPE配置的是host时,必须进行配置,配置的格式是 <IP/masklen>,比如配置了192.168.5.0/24,表示针对子网是192.168.5.0的所有IP都会生效。

  • METHOD

认证的方法,主要有以下几种:

METHOD

说明

trust

无条件的允许链接。在此种认证方法下,数据库用户进行连接时不需要输入任何口令。

reject

无条件的拒绝连接。在此种认证方法下,数据库会拒绝该连接(即,配置连接的黑名单)。

md5

要求客户端提供一个MD5加密的口令的认证。这种模式下,客户端在网络上传递的口令经过了MD5加密,防止在网络上明文传输,造成口令的泄露。

password

要求客户端提供一个明文口令,这种模式下,客户端提供的口令会以明文的形式在网络上传递,具有泄露的风险,一般不会采用该种方式。

ident

服务器会联系客户端的ident服务,验证当前的用户在客户端上是不是操作系统的有效用户,如果是,则链接成功;如果不是则链接失败。这种方式通常和UNIX域套接字的链接认证方式一起使用,此时和peer认证的效果一致。

peer

使用操作系统用户登录,链接的用户是操作系统上某个操作系统的用户,但是需要注意的是数据库中要存在和操作系统一样的同名用户。

二、几种典型的认证配置

2.1 本地的trust认证

  1. # TYPE DATABASE USER ADDRESS METHO
  2. local all all trust

       在该配置下,在使用数据库用户登录时不会提示输入密码:

  1. [root@VM-115-39-centos test]# psql -p 55432 -U postgres
  2. psql (11.8)
  3. Type "help" for help.
  4. postgres=#

2.2 本地的ident认证

  1. # TYPE DATABASE USER ADDRESS METHO
  2. local all all ident

        这种认证模式下,如果再使用2.1中的链接命令,会发现提示错误:

  1. [root@VM-115-39-centos data]# psql -p 55432 -U postgres
  2. psql: FATAL: Peer authentication failed for user "postgres"

       从这个错误中,我们可以看到,提示的是Peer authentication failed,这是因为,实际上我们再本地配置的METHOD设置为trust时,它实际会被替换成peer认证,也就是说再TYPE为local时,设置METHOD为ident和peer的效果是一致的。此时我们需要先以postgres的身份登录,然后才能链接服务端:

  1. [root@VM-115-39-centos data]# su - postgres
  2. Last login: Thu Jun 10 16:19:23 CST 2021 on pts/1
  3. [postgres@VM-115-39-centos ~]psql -p 55432
  4. psql (11.8)
  5. Type "help" for help.
  6. postgres=#

       这里还要注意一下,在终端中切换到postgres用户登录时,我们要使用su - postgres 而不能使用su postgres,因为后者只是用户身份的切换,不会改变当前工作目录以及HOME,SHELL,USER,LOGNAME。

2.3 本地的MD5认证

  1. # TYPE DATABASE USER ADDRESS METHO
  2. local all all md5

      在此种认证方式下,在本地登录时会提示要输入密码:

  1. [root@VM-115-39-centos /var/lib/pgsql/11/data]psql -p 55432 -U postgres
  2. Password for user postgres:

2.4 本地的指定用户认证

  1. # TYPE DATABASE USER ADDRESS METHO
  2. local all test md5

       使用这种方式,只能使用名为test的用户进行登录,在使用postgres用户进行登录时会报错

  1. [root@VM-115-39-centos /var/lib/pgsql/11/data]psql -p 55432 -U postgres
  2. psql: FATAL: no pg_hba.conf entry for host "[local]", user "postgres", database "postgres", SSL off

2.5 远程的配置所有IP可信任

      接下来,我们演示一个非常危险的配置:

  1. # TYPE DATABASE USER ADDRESS METHO
  2. host all all 0.0.0.0/0 trust

       在这种方式下,在远程任何一台客户端上都能使用psql进行登录,而且不会提示密码,如下,我在一台主机上在没有密码的情况下登录了数据库服务器:

  1. [root@localhost ~]# psql -h xxxxxx -p xxxxx -U postgres
  2. psql (11.5,11.8)
  3. postgres=#

2.6 远程的配置所有IP可MD5认证

  1. # TYPE DATABASE USER ADDRESS METHO
  2. host all all 0.0.0.0/0 md5

       这种认证方式,要求远程客户端链接服务器时要输入密码:

  1. [root@localhost ~]# psql -h xxxxxx -p xxxx -U postgres
  2. 用户 postgres 的口令:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/415363
推荐阅读
相关标签
  

闽ICP备14008679号