场景说明

未做配置加固前,服务器 root 操作系统用户,可以本地直接登录访问 KingbaseES 数据库,存在安全风险。

业务安全要求:只允许操作系统 kingbase 用户本地访问数据库,root 等其他系统用户本地禁止登录数据库

说明:可通过修改sys_hba.conf、sys_ident.conf操作系统用户映射实现该需求。

原理说明

KingbaseES 本地 ident 认证,通过sys_ident.conf实现操作系统用户和数据库用户映射。 通过映射规则限定:只有操作系统 kingbase 用户可以本地连接数据库,root 等其他操作系统用户本地连接直接认证失败。

实现过程

配置sys_hba.conf

找到本地认证配置行

local   all             all                                     scram-sha-256

修改为 ident 映射认证,指定映射名称map01

local   all             all                                     ident map=map01

参数说明:

  • local:unix‑socket 本地连接,不包含 TCP 远程连接
  • ident map=map01:启用操作系统用户映射,映射规则读取 sys_ident.conf 中 map01 配置

更改sys_ident.conf

编辑sys_ident.conf,在文件末尾追加下面配置 ,增加用户映射规则

map01 kingbase system

内容说明:

  • 第 1 列:映射名:map01,和 sys_hba.conf 中 map 参数保持一致
  • 第 2 列:操作系统用户名:kingbase(服务器操作系统 kingbase 账号)
  • 第 3 列:数据库用户名:system(库内超级用户)

含义:只有操作系统kingbase用户,才可以映射登录数据库system用户;root 以及其他操作系统用户无映射规则,本地 unix‑socket 登录直接认证拒绝。

重载数据库配置(无需重启实例)

使用 kingbase 操作系统用户执行 reload 重载配置生效,数据实例不中断。

sys_ctl reload -D /data

注意:替换为你真实的数据目录-D 你的数据目录路径

效果验证

root 操作系统用户本地尝试登录数据库(预期失败)

以 root 操作系统身份,通过 unix socket 本地连接数据库

[root@node1 ~]# /KingbaseES/V9/KESRealPro/V009R001C002B0014/Server/bin/ksql test system
ksql: 错误: could not connect to server: FATAL:  Peer authentication failed for user "system"

kingbase 操作系统用户本地登录(预期正常登录)

切换操作系统 kingbase 用户执行登录, 正常进入数据库交互终端,配置生效。

[kingbase@node1 ~]$ /KingbaseES/V9/KESRealPro/V009R001C002B0014/Server/bin/ksql test system
输入 "help" 来获取帮助信息.
test=#

  1. 验证
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐