Postgresql - Client Authentication

登录认证信息。

PG管理客户端登录主要是通过pg_hba.conf配置文件中的。

 

1. pg_hba.conf 文件。

 

Each record specifies a connection type, a client IP address range (if relevant for the connection type), a database name, a user name, and the authentication method to be used for connections matching these parameters. The first record with a matching connection type, client address, requested database, and user name is used to perform authentication. There is no “fall-through” or “backup”: if one record is chosen and the authentication fails, subsequent records are not considered. If no record matches, access is denied.

 

内容为这7中格式

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]

 

2. Authentication Methods

2.1 Trust

信任,无论该用户是否有密码,登录的时候都无需输入密码。

 

2.2 Password

密码的身份验证方法。这些方法的操作方式类似,但在用户的密码如何存储在服务器上以及客户端提供的密码如何通过连接发送方面有所不同。

scram-sha-256:该方法将执行扰码-sha-256身份验证,并支持将密码以加密散列的形式存储在服务器上。目前提供的方法中最安全的一种,但是旧的客户机库不支持这种方法。

md5:它可以防止密码嗅探,并避免将密码以纯文本形式存储在服务器上,但如果攻击者设法从服务器窃取密码散列,则不提供任何保护。此外,MD5哈希算法现在不再被认为是安全的。md5方法不能与db_user_namespace特性一起使用。

password:明文发送密码,很容易受到密码“sniffing”攻击。如果可能的话,应该尽量避免。

 

可以通过配置文件postgresql.conf中的password_encryption参数,配置密码加密方式。

 

总结了一个表格,在pg_hba配置的auth-method的中,是否可以访问几种密码的加密方式。

pg_hba配置->

-----------------

密码加密方式

trust

password

md5

scram-sha-256

md5

scram-sha-256

password

其中当pg_hba中配置为scram-sha-256,无法访问其他加密方式,只能访问密码加密为scram-sha-256的方式。

 

2.3 GSSAPI

支持带有Kerberos身份验证的GSSAPI。GSSAPI为支持它的系统提供了自动身份验证(单点登录)。身份验证本身是安全的,但是通过数据库连接发送的数据将不加密发送,除非使用SSL。

 

2.4 SSPI

SSPI是一种使用单点登录进行安全认证的Windows技术。PostgreSQL将在协商模式中使用SSPI,在可能的情况下,它将使用Kerberos,在其他情况下自动退回到NTLM。SSPI认证只在服务器和客户端都运行Windows时有效,或者在非Windows平台上,当GSSAPI可用时有效。

 

2.5 Ident

ident身份验证方法通过从ident服务器获取客户机的操作系统用户名并将其用作允许的数据库用户名(带有可选的用户名映射)来工作。这只支持TCP/IP连接。

需要做对system user 和 DB user 做map。

 

2.6 Peer

对等认证方法通过从内核获取客户端操作系统用户名并将其用作允许的数据库用户名(带有可选的用户名映射)来工作。此方法只支持本地连接。

123456

 

2.7 LDAP

一种认证服务,这种身份验证方法与password操作类似,只是使用LDAP作为密码验证方法。LDAP仅用于验证用户名/密码对。因此,在使用LDAP进行身份验证之前,用户必须已经存在于数据库中。

下面举一个例子:

host all all 192.168.1.102/32 ldap ldapserver=192.168.1.101 ldapport=389 ldapbasedn="dc=domain,dc=com" ldapsearchattribute=uid

 

2.8 RADIUS

也是一种认证服务。在使用RADIUS进行身份验证之前,用户必须已经存在于数据库中。

 

2.9 Certificate

这种身份验证方法使用SSL客户机证书执行身份验证。因此,它只能用于SSL连接。在使用这种身份验证方法时,服务器将要求客户机提供有效的、受信任的证书。不会向客户端发送密码提示。证书的cn(通用名称)属性将与请求的数据库用户名进行比较,如果匹配,则允许登录。用户名映射可用于允许cn与数据库用户名不同。

 

2.10 PAM

Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式。其实本质上也是一种认证服务。在使用PAM进行身份验证之前,用户必须已经存在于数据库中。

 

2.11 BSD

BSD是一种数字签名和数字证书的协议。也是一种认证服务。在使用BSD进行身份验证之前,用户必须已经存在于数据库中。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值