文章目录
openGauss学习笔记-98 openGauss 数据库管理-管理数据库安全-客户端接入认证之配置客户端接入认证
98.1 背景信息
如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为pg_hba.conf)存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。
- 本产品支持如下三种认证方式,这三种方式都需要配置“pg_hba.conf”文件。
- 基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库来查看配置文件从而判断用户是否通过认证。
- 口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。
- SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。
- “pg_hba.conf”文件的格式是一行写一条信息,表示一个认证规则,空白和注释(以#开头)被忽略。
- 每个认证规则是由若干空格和/,空格和制表符分隔的字段组成。如果字段用引号包围,则它可以包含空白。一条记录不能跨行存在。
98.2 操作步骤
1.以操作系统用户omm登录数据库主节点。
2.配置客户端认证方式,允许客户端以“jack”用户连接到本机,此处远程连接禁止使用“omm”用户(即数据库初始化用户)。
例如,下面示例中配置允许IP地址为10.10.0.30的客户端访问本机。
gs_guc set -N all -I all -h "host all jack 10.10.0.30/32 sha256"
这条命令在数据库主节点实例对应的“pg_hba.conf”文件中添加了一条规则,用于对连接数据库主节点的客户端进行鉴定。
“pg_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见配置文件参考。
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”里的记录的,所以这些记录的顺序是非常关键的。
因此对于认证规则的配置建议如下: 靠前的记录有比较严格的连接参数和比较弱的认证方法。靠后的记录有比较宽松的连接参数和比较强的认证方法。
98.3 异常处理
用户认证失败有很多原因,通过服务器返回给客户端的提示信息,可以看到用户认证失败的原因。常见的错误提示请参见表1。
表 1 错误提示
问题现象 | 解决方法 |
---|---|
用户名或密码错误:FATAL: invalid username/password,login denied | 这条信息说明用户名或者密码错误,请检查输入是否有误。 |
连接的数据库不存在:FATAL: database "TESTDB" does not exist | 这条信息说明尝试连接的数据库不存在,请检查连接的数据库名输入是否有误。 |
未找到客户端匹配记录:FATAL: no pg_hba.conf entry for host "10.10.0.60", user "ANDYM", database "TESTDB" | 这条信息说明已经连接了服务器,但服务器拒绝了连接请求,因为没有在它的pg_hba.conf配置文件里找到匹配的记录。请联系数据库管理员在pg_hba.conf配置文件加入用户的信息。 |
未找到客户端匹配记录:failed to connect 10.10.0.1:12000. | 这条信息说明无法连接到指定IP和端口的服务器,请联系数据库管理员检查pg_hba.conf配置文件里是否有配置对应IP白名单。 |
连接时的用户名不可以包含@字符@ can't be allowed in username | 这条报错说明客户端在连接数据库时使用了包含@的用户名,这是不允许的。 |
98.4 示例
TYPE DATABASE USER ADDRESS METHOD
"local" is for Unix domain socket connections only
#表示只允许以安装时-U参数指定的用户从服务器本机进行连接。
local all all trust
IPv4 local connections:
#表示允许jack用户从10.10.0.50主机上连接到任意数据库,使用sha256算法对密码进行加密。
host all jack 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.1/32网段的主机上连接到任意数据库。
host all all 10.10.0.1/32 reject