配置客户端接入认证
背景信息
如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为pg_hba.conf)存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。
本产品支持如下三种认证方式,这三种方式都需要配置”pg_hba.conf”文件。
— 基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库来查看配置文件从而判断用户是否通过认证。
— 口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。
— SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。
“pg_hba.conf”文件的格式是一行写一条信息,表示一个认证规则,空白和注释(以#开头)被忽略。
每个认证规则是由若干空格和/,空格和制表符分隔的字段组成。如果字段用引号包围,则它可以包含空白。一条记录不能跨行存在。
操作步骤
步骤1 以操作系统用户vastbase登录数据库主节点。
步骤2 在数据库主节点实例对应的”pg_hba.conf”文件中添加规则,配置客户端认证方式,允许客户端以”jack”用户连接到本机,此处远程连接禁止使用”vastbase”用户(即数据库初始化用户)。
例如,下面示例中,配置允许IP地址为10.10.0.30的客户端访问本机。
host all jack 10.10.0.30/32 md5;
- 使用”jack”用户前,需先本地连接数据库,并在数据库中使用如下语句建立”jack”用户:
vastbase=# CREATE USER jack PASSWORD 'Test@123';
- jack表示连接数据库的用户。
- 10.10.0.30/32表示只允许IP地址为10.10.0.30的主机连接。此处的IP地址不能为Vastbase内的IP,在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255
- md5表示连接时jack用户的密码使用md5算法加密。
“pg_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见5.1.2配置文件参考。
local DATABASE USER METHOD [OPTIONS]
host DATABASE USER ADDRESS METHOD [OPTIONS]
hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]因为认证时系统是为每个连接请求顺序检查”pg_hba.conf”里的记录的,所以这些记录的顺序是非常关键的。
- 可配置”时间段”字段:
(1)表示一段时间范围,例如”[2019-10-01 09:30:28, 2020-10-01 23:59:59)“,其中 [] 表示闭区间,()表示开区间。区间中的每个元素要求是合法的timestamptz类型,可以通过逗号分隔的方式指定多个时间段。
(2)兼容旧的配置方式,意味着在没有配置时间段时,表示允许任意时刻连接。
(3)[2020-8-14, ) 表示从2020-8-14且包含2020-8-14到永久; [2020-8-14,] 与其含义一致。
(4)[ , ] 、( , ) 、( , ] 、[ , ) 含义都表示任意时刻
(5)访问控制只针对登录那一瞬间,因此连接成功后,超出这个时间不会被断开。
- 示例如下:
允许192.168.1.111客户端通过Unix domain方式在2020-10-01至2021-11-01和20210101至20210501时间段登录
local all all 192.168.1.111 “[2020-10-01, 2021-11-01]“,”[20210101,20210501]” md5
在配置”pg_hba.conf”文件时,请依据通讯需求按照格式内容从上至下配置记录,优先级高的需求需要配置在前面。Vastbase和扩容配置的IP优先级最高,用户手动配置的IP请放在这二者之后,如果已经进行的客户配置和扩容节点的IP在同一网段,请在扩容前删除,扩容成功后再进行配置。 因此对于认证规则的配置建议如下: - 靠前的记录有比较严格的连接参数和比较弱的认证方法。 - 靠后的记录有比较宽松的连接参数和比较强的认证方法。
- 一个用户要想成功连接到特定的数据库,不仅需要通过pg_hba.conf中的规则检查,还必须要有该数据库上的CONNECT权限。如果希望控制某些用户只能连接到指定数据库,赋予/撤销CONNECT权限通常比在pg_hba.conf中设置规则更为简单。
- 对应Vastbase外部客户端连接,trust为不安全的认证方式,请将认证方式设置为sha256。
异常处理
用户认证失败有很多原因,通过服务器返回给客户端的提示信息,可以看到用户认证失败的原因。常见的错误提示请参见表5-1。
表5-1 错误提示
问题现象 | 解决方法 |
---|---|
用户名或密码错误:
|
这条信息说明用户名或者密码错误,请检查输入是否有误。 |
连接的数据库不存在:
|
这条信息说明尝试连接的数据库不存在,请检查连接的数据库名输入是否有误。 |
未找到客户端匹配记录:
|
这条信息说明已经连接了服务器,但服务器拒绝了连接请求,因为没有在它的pg_hba.conf配置文件里找到匹配的记录。请联系数据库管理员在pg_hba.conf配置文件加入用户的信息。 |
示例
TYPE DATABASE USER ADDRESS METHOD
"local" is for Unix domain socket connections only
#表示只允许以安装时-U参数指定的用户从服务器本机进行连接。
local all all trust
IPv4 local connections:
#表示允许vastbase用户从10.10.0.50主机上连接到任意数据库,使用sha256算法对密码进行加密。
host all vastbase 10.10.0.50/32 sha256
#表示允许任何用户从10.10.0.0/24网段的主机上连接到任意数据库,使用sha256算法对密码进行加密,并且经过SSL加密传输。
hostssl all all 10.10.0.0/24 sha256
#表示允许任何用户从10.10.0.0/24网段的主机上连接到任意数据库,使用Kerberos认证方式,当前版本暂不支持客户端kerberos认证。
host all all 10.10.0.0/24 gss include_realm=1 krb_realm=HADOOP.COM