KingBase 下的 sys_hba.conf 详解

        客户端访问KingbaseES数据库,需要建立身份的认证,sys_hba.conf相当于认证的黑白名单,可以通过配置sys_hba.conf允许或拒绝客户端对数据库服务器的访问。

sys_hba.conf原理:

  • 客户端认证是由一个配置文件(通常名为sys_hba.conf并被存放在数据库集簇目录中)控制(HBA表示基于主机的认证)。
  • 在initdb初始化数据目录时,它会安装一个默认的sys_hba.conf文件。
  • sys_hba.conf文件的常用格式是一组记录,每行一条。空白行将被忽略, #注释字符后面的任何文本也被忽略。记录不能跨行。
  • 每条记录指定一种连接类型、一个客户端 IP 地址范围(如果和连接类型相关)、一个数据库名、一个用户名
  • 以及对匹配这些参数的连接使用的认证方法。第一条匹配连接类型、客户端地址、连接请求的数据库和用户名的记录将被用于执行认证。
  • 如果选择了一条记录而且认证失败,那么将不再考虑后面的记录。如果没有匹配的记录,那么访问将被拒绝。

案例一:
拒绝客户端本地socket和127.0.0.1连接登录,只能通过本机ip以TCP/IP连接方式登录:
1)sys_hba.conf配置

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                      reject
# IPv4 local connections:
host    all             all             127.0.0.1/32             reject
host    all             all             10.8.3.20/24             scram-sha-256
host    all             all             0.0.0.0/0                scram-sha-256

2)数据库服务reload后登录
如下所示,本地socket和127.0.0.1连接被拒绝,通过本地ip连接登录成功。

[kingbase@node1 bin]$ ./ksql -h 10.8.3.20 -U system test
ksql (V8.0)
Type "help" for help.[kingbase@node1 bin]$ ./ksql -h 127.0.0.1 -U system test
ksql: error: could not connect to server: FATAL:  no sys_hba.conf entry for host "127.0.0.1", user "system", database "test", SSL off[kingbase@node1 bin]$ ./ksql -U system test
ksql: error: could not connect to server: FATAL:  no sys_hba.conf entry for host "[local]", user "system", database "test", SSL off

案例二:
只允许主备节点访问数据库服务:

1)sys_hba.conf配置

# TYPE  DATABASE        USER            ADDRESS                    METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all              127.0.0.1/32           scram-sha-256
host    all             all              10.8.3.20/24           scram-sha-256
host    all             all              10.8.3.21/24           scram-sha-256
#host    all            all              0.0.0.0/0              scram-sha-256

2)数据库服务reload后登录
如下所示,本地ip访问和远程客户端访问数据库成功:

# 本节点连接数据库访问
[kingbase@node1 bin]$ ./ksql -h 10.8.3.20 -U system test
ksql (V8.0)
Type "help" for help.test=# # 远程节点连接数据库访问[kingbase@node2 bin]$ ./ksql -h 10.8.3.20 -U system test
ksql (V8.0)
Type "help" for help.test=#

案例三:
拒绝所有的客户端通过TCP/IP连接数据库访问:
1)sys_hba.conf配置

# TYPE  DATABASE        USER            ADDRESS                    METHOD# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
#host    all            all             0.0.0.0/0               scram-sha-256
host    all             all             10.8.3.0/24             scram-sha-256
host    all             all             0.0.0.0/0                 reject

---如上所示,增加(0.0.0.0/0)的reject条目。
虽然在拒绝所有客户端访问前,有允许访问的客户端ip。
 

2)数据库服务reload后登录
如下所示,本地socket连接登录成功,TCP/IP连接访问失败:(包括在sys_hba.conf中允许访问的客户端)

[kingbase@node1 bin]$ ./ksql -U system test
ksql (V8.0)
Type "help" for help.test=#[kingbase@node1 bin]$ ./ksql -h 127.0.0.1 -U system test
ksql: error: could not connect to server: FATAL:  no sys_hba.conf entry for host "127.0.0.1", user "system", database "test", SSL off
[kingbase@node101 bin[kingbase@node1 bin]$ ./ksql -h 10.8.3.20 -U system test
ksql: error: could not connect to server: FATAL:  no sys_hba.conf entry for host "10.8.3.20", user "system", database "test", SSL off

远程节点访问:(10.8.3.22/24)

[kingbase@node2 bin]$ ./ksql -h 10.8.3.20 -U system test
ksql: error: could not connect to server: FATAL:  no sys_hba.conf entry for host "10.8.3.22", user "system", database "test", SSL off

下面来看一个具体的案例

应用程序在连接数据库时报下列信息

The authentication type 10 is not supported. Check that you have configured the sys_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.


1.查看sys_hba.conf文件

[root@localhost ~]# cd /opt/Kingbase/ES/V8/data/
[root@localhost data]# ls

[root@localhost data]# cat sys_hba.conf

# Kingbase客户端认证配置文件
# ===================================================
#
# 参考《KingbaseES安全指南》手册中的“强身份验证”章节,获取该文件的完整描述。下面是一个简短的介绍。
#
# 本文件控制: 允许哪些主机连接,可以使用哪些用户名,以及可以访问哪些数据库。
# 记录采用以下形式之一:
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# (大写项必须用实际值替换)
#
# 第一个字段是连接类型:"local"是unix域套接字,"host"是普通或ssl加密的TCP/IP套接字,
# "hostssl"是ssl加密的TCP/IP套接字,"hostnossl"是普通的TCP/IP套接字。
#
# DATABASE 可以是"all"、"sameuser"、"samerole"、"replication"、一个数据库名、
# 或者是一个逗号分隔的列表。"all" 关键字不匹配流复制 "replication"项。必须在单独的
# 记录中启用对replication流复制的访问(参见下面的示例)。
#
# USER 可以是"all"、用户名、以"+"为前缀的组名或者是一个逗号分隔的组名列表。在DATABASE和USER字段中,
# 您可以编写一个以"@"为前缀的文件名,以包含来自单独文件的用户名称。
#
# ADDRESS 指定记录匹配的主机集,它可以是一个主机名,也可以由IP地址和CIDR掩码组成。
# CIDR掩码是一个整数(0到32(IPv4)或0到128(IPv6))。以点(.)开头的主机名与实际主机名后缀匹配。
# 或者,您也可以在单独的列中写入IP地址和网络掩码,或者使用"samenet"来匹配服务器直接连接
# 到的所有子网中的所有地址。
#
# METHOD 取值为"trust"、"reject"、"md5"、"password"、"scram-sha-256"、
# "gss"、"sspi"、"ident"、"peer"、"pam"、"ldap"、"radius" 或者"cert"。
# 注意,"password"以明文发送密码;"md5" 或者"scram-sha-256"发送加密密码。
#
# OPTIONS 是一组用于身份认证的选项,格式为 NAME=VALUE。可用的选项取决于不同的验证方法,
# 我们添加了关于IP、MAC、日期时间的验证方法,可以通过设定各个值的范围来对用户登录场景进行细化限制,
# 其他身份认证选项请参考文档中的“强身份验证”章节,了解哪些选项用于哪些身份验证方法。
#
# 包含空格、逗号、引号等其他特殊字符的数据库名和用户名必须加引号。引用关键字"all"、"sameuser"、
# "samerole" 或 "replication" 会使名称失去其特殊意义,而仅仅将数据库名或用户名与该名称匹配。
#
# 本文件在服务器启动和接收到SIGHUP信号时被读取,如果你在运行的系统上编辑了本文件,必须向服务器
# 发送SIGHUP信号以使其生效,通过运行sys_ctl reload 或者执行"SELECT sys_reload_conf()"来完成。
#
# 实际配置填写在这里
# ----------------------------------
#
# 如果希望允许非本地连接,则需要添加更多的host记录。在这种情况下,还需要通过listen_addressess
# 监听配置参数,或通过-i或ih命令开关,使Kinagbase在非本地接口上监听。# TYPE  DATABASE        USER            ADDRESS                 METHOD# "local" 只能用于UNIX域套接字
local   all             all                                     scram-sha-256
# IPv4 本地连接:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             0.0.0.0/0               scram-sha-256
# IPv6 本地连接:
host    all             all             ::1/128                 scram-sha-256
host    all             all             ::0/0                   scram-sha-256
# 允许具有流复制权限的用户使用localhost进行流复制连接
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256# 下面的部分是为限制连接的设置(limit to connection)

 默认使用更安全的scram-sha-256加密方式,这种加密方式需要客户端支持。

2.修改sys_hba.conf文件

[root@localhost data]# vi sys_hba.conf 
 

3.重启KingBase数据库

root@Kylin:~# systemctl restart kingbased

4.查看KingBase数据库状态

root@Kylin:~# systemctl status kingbased

 总结:
1、可以通过sys_hba.conf建立客户端访问数据库服务的黑白名单。
2、在sys_hba.conf中的条目,从上到下按顺序匹配,如果有匹配记录,按照匹配记录处理;如果没有匹配记录,在没有配置( 0.0.0.0/0 )允许所有客户端时,则默认拒绝访问数据库服务。
3、在sys_hba.conf中不支持(0.0.0.0/0)reject的配置项,将会拒绝所有的tcp/ip的连接,包括已经匹配的条目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/381969.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux环境交叉编译openssl库,以使Qt支持https

一.前言 Qt若需要支持https,则需要openssl的支撑,并且要注意,Qt不同版本会指定对应的openssl版本库,比方我用的Qt5.14.2他要求用的openssl版本是1.1.1,你就不能用其他版本,不然基本就是失败报错。 如何查看Qt对应open…

站在资本投资领域如何看待分布式光纤传感行业?

近年来,资本投资领域对于分布式光纤传感行业并不十分敏感。这主要是由于分布式光纤传感技术是一个专业且小众的领域,其生命周期相对较长,缺乏爆发性,与消费品或商业模式创新产业有所不同。此外,国内的投资环境也是影响…

开源AI智能名片S2B2C商城小程序在社群团购模式中的应用与探索

摘要 本文深入探讨了开源AI智能名片S2B2C商城小程序在社群团购模式中的创新应用与未来发展。通过详细分析社群团购模式的特征、发展趋势及其面临的挑战,结合开源AI智能名片S2B2C商城小程序的技术优势与实际应用案例,本文提出了一系列旨在提升社群团购效…

文档解析效果全维度测评标准

TextIn文档解析测评工具,全面评测文档解析产品能力 关注TechLead,复旦AI博士,分享AI领域全维度知识与研究。拥有10年AI领域研究经验、复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文…

品牌设计宝典:打造独特视觉形象

今天,我们来谈谈品牌设计。品牌设计是视觉设计师非常重要的内容。如果你了解品牌设计的相关知识,你会更好地了解“包装”自己、运营自己或建立个人品牌内容。 理论上,品牌是一个广义的概念。比如公司从外到内建立的一些内容属于品牌概念下的…

Unity DOTS中的world

Unity DOTS中的world 注册销毁逻辑自定义创建逻辑创建world创建system group插入player loopReference DOTS中,world是一组entity的集合。entity的ID在其自身的世界中是唯一的。每个world都拥有一个EntityManager,可以用它来创建、销毁和修改world中的en…

Python机器学习入门:从理论到实践

文章目录 前言一、机器学习是什么?二、机器学习基本流程三、使用Python进行机器学习1.数据读取2.数据规范化3. 数据降维(主成分分析)4. 机器学习模型的选择5. 线性回归模型的实现6. 可视化结果 总结 前言 机器学习是人工智能的一个重要分支&…

安装好anaconda,打开jupyter notebook,新建 报500错

解决办法: 打开anaconda prompt 输入 jupyter --version 重新进入jupyter notebook: 可以成功进入进行代码编辑

功能测试与APPSCAN自动化测试结合的提高效率测试策略

背景 手工探索性测试(Manual Exploratory Testing,简称MET)是一种软件测试方法,它依赖于测试人员的直觉、经验和即兴发挥来探索应用程序或系统。与传统的脚本化测试相比,手工探索性测试不遵循固定的测试脚本&#xff0…

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度(通常是 float32&#xff0…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十四章 注册字符设备号

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【Linux】汇总TCP网络连接状态命令

输入命令: netstat -na | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]} 显示: 让我们逐步解析这个命令: netstat -na: netstat 是一个用于显示网络连接、路由表、接口统计等信息的命令。 -n 选项表示输出地址和端口以数字格式显示…

Armv8/Armv9架构的学习大纲-学习方法-自学路线-付费学习路线

本文给大家列出了Arm架构的学习大纲、学习方法、自学路线、付费学习路线。有兴趣的可以关注,希望对您有帮助。 如果大家有需要的,欢迎关注我的CSDN课程:https://edu.csdn.net/lecturer/6964 ARM 64位架构介绍 ARM 64位架构介绍 ARM架构概况…

Wi-SUN无线通信技术 — 大规模分散式物联网应用首选

引言 在数字化浪潮的推动下,物联网(IoT)正逐渐渗透到我们生活的方方面面。Wi-SUN技术以其卓越的性能和广泛的应用前景,成为了大规模分散式物联网应用的首选。本文将深入探讨Wi-SUN技术的市场现状、核心优势、实际应用中的案例以及…

JavaEE (1)

web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行 交互. 流程图如下 Web服务器是指驻留于因特网上某种类型计算机的程序. 可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览; 它是一个容器&…

C++ —— 关于模板初阶

1.什么是模板 在C中,模板(template)是一种通用的编程工具,允许程序员编写通用代码以处理多种数据型或数据结构,而不需要为每种特定类型编写重复的代码,通过模板,可以实现代码的复用和泛化提高代…

QT5.9.9+Android开发环境搭建

文章目录 1.安装准备1.1 下载地址1.2 安装前准备2.安装过程2.1 JDK安装2.1.1 安装2.1.2 环境变量配置2.2 SDK配置2.2.1 安装2.2.2 环境变量配置2.2.3 adb 错误解决2.2.4 其他SDK安装2.2.5 AVD虚拟机配置2.3 NDK配置2.4 QT 5.9.9安装配置2.4.1 QT安装2.4.2 配置安卓环境3.QT工程…

【Linux】进程信号 --- 信号处理

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

Java---异常

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 什么是异常异常的分类编译…

安装 VMware vSphere vCenter 8.0

安装 VMware vSphere vCenter 8.0 1、运行安装程序 2、语言选择中文 3、点下一步 4、接受许可协议,点下一步 5、填写部署vCenter服务的ESXI主机IP地址以及对应ESXI主机的账号密码,这里将vCenter服务部署在192.168.1.14这台ESXi主机上 6、接受证书警告 7…