首页 > 其他分享 >openGauss 配置客户端接入认证

openGauss 配置客户端接入认证

时间:2024-04-30 10:58:31浏览次数:25  
标签:数据库 hba 认证 pg conf openGauss 连接 客户端

配置客户端接入认证

背景信息

如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为pg_hba.conf)存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。

  • 本产品支持如下三种认证方式,这三种方式都需要配置“pg_hba.conf”文件。

    • 基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库来查看配置文件从而判断用户是否通过认证。
    • 口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。
    • SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。
  • “pg_hba.conf”文件的格式是一行写一条信息,表示一个认证规则,空白和注释(以#开头)被忽略。

  • 每个认证规则是由若干空格和/,空格和制表符分隔的字段组成。如果字段用引号包围,则它可以包含空白。一条记录不能跨行存在。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。

  2. 配置客户端认证方式,允许客户端以“jack”用户连接到本机,此处远程连接禁止使用“omm”用户(即数据库初始化用户)。

    例如,下面示例中配置允许IP地址为10.10.0.30的客户端访问本机。

    gs_guc reload -D datadir -h "host all jack 10.10.0.30/32 sha256"
    

    说明:

    • 使用“jack”用户前,需先本地连接数据库,并在数据库中使用如下语句建立“jack”用户:
    openGauss=# CREATE USER jack PASSWORD 'Test@123';
    
    • -D datadir表示主机的数据目录。
    • -h表示指定需要在“pg_hba.conf”增加的语句。
    • all表示允许客户端连接到任意的数据库。
    • jack表示连接数据库的用户。
    • 10.10.0.30/32表示只允许IP地址为10.10.0.30的主机连接。此处的IP地址不能为openGauss内的IP,在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255。
    • sha256表示连接时jack用户的密码使用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”里的记录的,所以这些记录的顺序是非常关键的。

    说明:
    在配置“pg_hba.conf”文件时,请依据通讯需求按照格式内容从上至下配置记录,优先级高的需求需要配置在前面。openGauss和扩容配置的IP优先级最高,用户手动配置的IP请放在这二者之后,如果已经进行的客户配置和扩容节点的IP在同一网段,请在扩容前删除,扩容成功后再进行配置。

    因此对于认证规则的配置建议如下:

    • 靠前的记录有比较严格的连接参数和比较弱的认证方法。
    • 靠后的记录有比较宽松的连接参数和比较强的认证方法。

    说明:

    • 一个用户要想成功连接到特定的数据库,不仅需要通过pg_hba.conf中的规则检查,还必须要有该数据库上的CONNECT权限。如果希望控制某些用户只能连接到指定数据库,赋予/撤销CONNECT权限通常比在pg_hba.conf中设置规则更为简单。
    • 对应openGauss外部客户端连接,trust为不安全的认证方式,请将认证方式设置为sha256。
    • pg_hba.conf的配置通过gs_guc reload命令修改后,在新创建会话时会生效。如果通过gs_guc set命令设置或直接编辑pg_hba.conf文件修改配置参数,需要重启数据库生效或重新执行gs_guc reload命令生效。

异常处理

用户认证失败有很多原因,通过服务器返回给客户端的提示信息,可以看到用户认证失败的原因。常见的错误提示请参见表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

这条报错说明客户端在连接数据库时使用了包含@的用户名,这是不允许的。

示例

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

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:数据库,hba,认证,pg,conf,openGauss,连接,客户端
From: https://www.cnblogs.com/techbing/p/18167347

相关文章

  • openGauss 内存表特性
    内存表特性MOT介绍使用MOTMOT的概念附录详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 内存优化表MOT管理
    内存表特性MOT介绍使用MOTMOT的概念附录详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 扩展FDW与其他openGauss特性
    扩展FDW与其他openGauss特性openGauss基于PostgreSQL,而PostgreSQL没有内置存储引擎适配器,如MySQL的handlerton。为了使MOT存储引擎能够集成到openGauss中,我们利用并扩展了现有的FDW机制。随着FDW引入PostgreSQL9.1,现在可以将这些外表和数据源呈现为统一、本地可访问的关系来访问......
  • openGauss 默认权限机制
    默认权限机制数据库对象创建后,进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用......
  • openGauss 角色
    角色角色是一组用户的集合。通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤消权限时,这些更改将......
  • openGauss 客户端接入认证
    客户端接入认证配置客户端接入认证配置文件参考用SSL进行安全的TCP/IP连接用SSH隧道进行安全的TCP/IP连接查看数据库连接数SSL证书管理详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 行级访问控制
    行级访问控制行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。用户可以在数据表创建行访问控制(RowLevelSecurity)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当......
  • openGauss 将磁盘表转换为MOT
    将磁盘表转换为MOT磁盘表直接转换为MOT尚不能实现,这意味着尚不存在将基于磁盘的表转换为MOT的ALTERTABLE语句。下面介绍如何手动将基于磁盘的表转换为MOT,如何使用gs_dump工具导出数据,以及如何使用gs_restore工具导入数据。前置条件检查检查待转换为MOT的磁盘表的模式是否包含......
  • openGauss 数据库基础概念介绍
    相关概念数据库数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。表空间在openGauss中,表空间是一个目录,可以存在多个,里面存储的是它所......
  • openGauss 统一审计策略概述
    统一审计策略概述背景信息传统审计会产生大量的审计日志,且不支持定制化的访问对象和访问来源配置,不方便数据库安全管理员对审计日志的分析。而统一审计策略支持绑定资源标签、配置数据来源输出审计日志,可以提升安全管理员对数据库监控的效率。详情查看:https://opengauss.org详......