赞
踩
客户端接入认证是由一个配置文件(默认名称为pg_hba.conf)控制的,它存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。
背景信息
GaussDB支持如下三种认证方式,无论哪种认证方式,都需要配置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里的记录的,所以这些记录的顺序是非常关键的。
因此对于认证规则的配置建议如下:
说明:
一个用户要想成功连接到特定的数据库,不仅需要通过pg_hba.conf中规则的检查,还必须要有该数据库上的CONNECT权限。如果希望限制哪些用户能够连接到哪些数据库,赋予/撤销CONNECT权限通常比在pg_hba.conf中设置规则更为简单。
重启数据库服务使配置生效。
gs_ctl restart
问题现象 | 解决方法 |
用户不存在或密码错误: FATAL: invalid username/password,login denied | 这条信息出现说明用户名或者密码错误,请检查输入是否有误。 |
连接的数据库不存在: FATAL: database "TESTDB" does not exist | 这条信息说明试图连接的数据库不存在,请检查连接的数据库名输入是否有误。 |
未找到客户端匹配记录: FATAL: no pg_hba.conf entry for host "123.123.123.123",user "ANDYM", database "TESTDB" | 这条信息说明已经连接了服务器,但服务器拒绝了连接请求,因为没有在它的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:
#表示允许gaussdba用户从10.10.10.2主机上连接到GaussDB的任意数据库,使用sha256算法对密码进行加密
host all gaussdba 10.10.10.2/32 sha256
#表示允许任何用户从10.0.0.0/8网段的主机上连接到GaussDB的任意数据库,使用sha256算法对密码进行加密
hostssl all all 10.0.0.0/8 sha256
表1 参数说明
参数名称 | 描述 | 取值范围 |
local | 表示这条记录只接受通过Unix域套接字进行的连接。没有这种类型的记录,就不允许Unix域套接字的连接。 只有在使用gsql从服务器本机连接,且不指定-U参数的情况才是通过Unix域套接字连接。 | - |
host | 表示这条记录即接受一个普通的TCP/IP套接字连接,也接受一个经过SSL加密的TCP/IP套接字连接。 | - |
hostssl | 表示这条记录只接受一个经过SSL加密的TCP/IP套接字连接。 | 用SSL进行安全的连接,需要配置申请数字证书并配置相关参数,详细请参见用SSL进行安全的TCP/IP连接。 |
hostnossl | 表示这条记录只接受一个普通的TCP/IP套接字连接。 | - |
DATABASE | 声明记录所匹配的、允许访问的数据库。 | all:表示该记录匹配所有数据库。 sameuser:表示如果被请求的数据库和请求的用户同名,则匹配。 samerole:表示请求的用户必须是一个与数据库同名的角色中的成员。 一个特定的数据库的名字,或者用逗号分隔的数据库列表。 说明: “all”关键字与“replication”并不匹配,要访问replication必须用一个单独的记录。 |
USER | 声明记录所匹配的、允许访问的数据库用户。 | all:表明该记录匹配所有用户。 一个特定数据库用户的名字,或者用逗号分隔的用户列表。 前缀+用户角色,表示匹配任何直接或者间接属于这个角色的成员。 一个包含用户名的文件可以通过在文件名前面加前缀@来声明。文件中的用户列表以逗号或者换行符分隔。 |
ADDRESS | 指定与记录匹配的、允许访问的IP地址范围。 | 支持IPv4和IPv6,可以使用如下两种形式来表示: IP地址/掩码长度。例如,10.10.10.0/24 IP地址 子网掩码。例如,10.10.10.0 255.255.255.0 说明: 以IPv4格式给出的IP地址会匹配那些拥有对应地址的IPv6连接,比如127.0.0.1将匹配IPv6地址 ::ffff:127.0.0.1 |
METHOD | 声明连接时使用的认证方法。 | GaussDB支持如下几种认证方式,详细解释请参见表2: trust reject md5(不推荐使用) sha256 |
OPTIONS | OPTION是认证的一个选择集,它的格式是NAME = VALUE。 | 可用的选项取决于认证方式。 说明: GaussDB支持的认证方式不需要此参数。 |
表2 认证方式
认证方式 | 说明 |
trust | 采用这种认证模式时,GaussDB只完全信任从服务器本机使用gsql、且不指定-U参数的连接,此时不需要口令。 trust认证对于单用户工作站的本地连接是非常合适和方便的,通常不适用于多用户环境。如果想使用这种认证方法,可利用文件系统权限限制对服务器的Unix域套接字文件的访问。要做这种限制有两个方法: 设置unix_socket_permissions参数和unix_socket_group参数。 设置unix_socket_directory,将Unix域套接字文件放在一个经过恰当限制的目录里。 注意: 设置文件系统权限只能帮助Unix域套接字连接,它不会限制本地TCP/IP连接。为保证本地TCP/IP安全,GaussDB不允许远程连接使用trust认证方法。 |
reject | 无条件地拒绝连接。常用于过滤某些主机。 |
md5 | 要求客户端提供一个md5加密的口令进行认证。 小心: 不推荐使用md5认证,因为md5为不安全的加密算法,存在网络安全风险。GaussDB保留md5认证和密码存储,是为了便于第三方工具的使用(比如TPCC评测工具)。 |
sha256 | 要求客户端提供一个sha256算法加密的口令进行认证,该口令在传送过程中结合salt(服务器发送给客户端的随机数)的单向sha256加密,增强了安全性。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。