PostgreSQL客户端认证配置


  PostgreSQL的客户端认证是由一个配置文件pg_hba.conf控制的,该文件默认存放在数据目录下。
  pg_hba.conf文件的格式如下:

TYPE       DATABASE  USER  ADDRESS    METHOD
local      database  user  auth-method  [auth-options]
host       database  user  address  auth-method  [auth-options]
hostssl    database  user  address  auth-method  [auth-options]
hostnossl  database  user  address  auth-method  [auth-options]
host       database  user  IP-address  IP-mask  auth-method  [auth-options]
hostssl    database  user  IP-address  IP-mask  auth-method  [auth-options]
hostnossl  database  user  IP-address  IP-mask  auth-method  [auth-options]

pg_hba.conf文件参数主要分为以下五类:

  • 连接类型
  • 客户端 IP 地址(范围)
  • 数据库名
  • 用户名
  • 认证方式

1.1 连接方式TYPE

指定用户的连接方式

  • local
    使用本地unix套接字
  • host
    使用TCP/IP连接(包括SSL和非SSL),host结合IPv4地址/结合IPv6地址
  • hostssl
    只能使用SSL TCP/IP连接
  • hostnossl
    不能使用SSL TCP/IP连接

1.2 数据库名DATABASE

指定用户所匹配的数据库名称

  • all表明该记录匹配所有数据库
  • sameuser表示如果被请求的数据库和请求的用户同名,则匹配。
  • samerole表示请求的用户必须是一个与数据库同名的角色中的成员。
  • replication表示如果请求一个复制链接, 则匹配。
  • 在其它情况里,这就是一个特定的 PostgreSQL数据库名字。可以通过用逗号分隔的方法声明多个数据库, 也可以通过前缀@来声明一个包含数据库名的文件。

1.3 用户名USER

指定数据库用户

  • all表明匹配于所有用户。
  • 其他情况就是特定数据库用户名

1.4 IP地址和掩码ADDRESS

指定客户端机器地址,该部分对应的连接方式必须是host、hostssl、hostnossl之一

  • all可以匹配任何ip地址、写samehost来匹配任何本服务器自身的 IP 地址或者写samenet来匹配本服务器直接连接到的任意子网的任意地址。
  • 指定了一个主机名,该名称会与客户端的 IP 地址的反向名字解析结果进行比较。
  • 一个 IP 地址范围以该范围的开始地址的标准数字记号指定,然后是一个斜线(/) 和一个CIDR掩码长度。

1.5 身份验证模式METHOD

  METHOD为身份验证模式一般分为:ident、trust、md5、password、peer、reject。其中ident和peer模式仅适用于Linux、Unix和Max,不适用于Windows。

  • trust,该模式可以不用密码直接连接数据库,不安全
  • md5,该模式要求连接发起者携带用md5算法加密的密码
  • password,该模式是使用明文密码进行身份验证,也不安全,不推荐
  • ident,该模式下系统会将请求发起者的操作系统用户映射为PostgesSQL数据库内部用户,并以该内部用户的权限登录,且此时无需提供登录密码。操作系统用户与数据库内部用户之间的映射关系会记录在pg_ident.conf文件中。
  • peer,该模式使用连接发起端的操作系统名进行身份验证。仅限于Linux、BSD、Mac OS X和Solaris,并且仅可用于本地服务器发起的连接。
  • reject,该模式表示拒绝所有请求。
  • gss,用 GSSAPI 认证用户
  • sspi,用 SSPI 来认证用户
  • ldap,使用LDAP服务器认证
  • radius,用 RADIUS 服务器认证
  • cert,使用 SSL 客户端证书认证
  • pam,使用操作系统提供的可插入认证模块服务(PAM)认证
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                  md5
# IPv4 local connections:
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

猜你喜欢

转载自blog.csdn.net/qq_42979842/article/details/108457557