KingbaseES V8R3 运维案例 -- 单实例环境升级用户认证sha-256

发布时间 2023-09-20 14:20:26作者: KINGBASE研究院

案例说明:
默认KingbaseES V8R3用户认证采用md5加密,有的生产环境对安全要求较高,需要将md5升级到sha-256;如果口令使用 scram-sha-256 设置加密,那么它可以被用于认证方法 scram-sha-256 和 md5、password (但后一种情况中口令将以明文传输)。如果口令使用 md5 设置加密,那么它仅能用于 md5 和 password 认证方法说明(同样,后一种情况中口令以明文传输)。本案例描述了在KingbaseES V8R3单实例环境下升级md5到sha-256过程。

MD5和SHA-256简介:
1) MD5简介
MD5信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(哈希值),用于确保信息传输完整一致。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。对于任意长度的消息,这个摘要相当于是个长度为16个字节的数组,通常用一个长度为32的十六进制字符串来表示。
2) SHA-256简介
SHA-256信息摘要算法,也是一种密码散列函数对于任意长度的消息,SHA256都会产生一个256bit长的散列值(哈希值),用于确保信息传输完整一致,称作消息摘要。这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。

适用版本:
KingbaseES V8R3

一、查看当前用户口令加密方式

# 加密方式
test=# show password_encryption ;
 password_encryption
---------------------
 md5
(1 row)

# 用户加密后口令信息
test=# select rolname, rolpassword from sys_authid;
       rolname        |             rolpassword
----------------------+-------------------------------------
 SYS_SIGNAL_BACKEND   |
 SYSTEM               | md53afebd0fba6df9fc2cf82c0b09926bcc
 SUPERMANAGER_V8ADMIN | md5f7902af5f3f7cdcad02b5ca09320d102
 SYSSSO               | md506de7a576af7f2791face19665f08a10
 SYSSAO               | md5ce2668ef745c2a09d32010b185466e91
(5 rows)

二、配置数据库启用sha-256加密方式

1、修改kingbase.conf配置

[kingbase@node101 data]$ cat kingbase.conf |grep password
#password_encryption = md5              # md5, sha-256 or plain
password_encryption =  sha-256          # md5, sha-256 or plain

2、重启数据库实例
[kingbase@node101 bin]$ ./sys_ctl restart -D /data/kingbase/v8r3_370/data/

3、连接数据库实例

[kingbase@node101 bin]$ ./ksql -U system -W 123456 test
ksql (V008R003C002B0370)
Type "help" for help.

# 查看用户密码加密方式
test=# show password_encryption ;
 password_encryption
---------------------
 sha-256
(1 row)

# 查看用户密码加密方式(默认采用md5)
test=# select rolname, rolpassword from sys_authid;
       rolname        |             rolpassword
----------------------+-------------------------------------
 SYS_SIGNAL_BACKEND   |
 SYSTEM               | md53afebd0fba6df9fc2cf82c0b09926bcc
 SUPERMANAGER_V8ADMIN | md5f7902af5f3f7cdcad02b5ca09320d102
 SYSSSO               | md506de7a576af7f2791face19665f08a10
 SYSSAO               | md5ce2668ef745c2a09d32010b185466e91
(5 rows)

4、升级用户密码

# 重新配置用户密码
test=# alter user system with password '123456';
ALTER ROLE

# 查看用户加密口令
test=# select rolname, rolpassword from sys_authid;
       rolname        |                                                                           rolpas
sword
----------------------+---------------------------------------------------------------------------------
SYS_SIGNAL_BACKEND   |
 SUPERMANAGER_V8ADMIN | md5f7902af5f3f7cdcad02b5ca09320d102
 SYSSSO               | md506de7a576af7f2791face19665f08a10
 SYSSAO               | md5ce2668ef745c2a09d32010b185466e91
 SYSTEM               | sha-256:i0txmo38ZPh2zg==:4096:081a36a8f42a6f4720c6fd5342fa8c4f1a352e2901c49bb7b5
b37b685d51cfac:5b273d277831f28ca3a6307d199d9d70f19a14615c7bb31684b36c5250403d39
(5 rows

如下所示,system用户密码已经升级为sha-256加密:

5、配置sys_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            sha-256
host    all             all             0.0.0.0/0               sha-256
# IPv6 local connections:
host    all             all             ::1/128                 sha-256
host    all             all             ::0/0                   sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     SYSTEM                                sha-256
#host    replication     SYSTEM        127.0.0.1/32            sha-256
#host    replication     SYSTEM        ::1/128                 sha-256

# 重新加载配置文件
test=# select sys_reload_conf();
 sys_reload_conf
-----------------
 t
(1 row)

三、用户连接访问数据库

1、查看用户密码加密方式

[kingbase@node102 bin]$ ./ksql -h 192.168.1.101 -U system -W 123456 test
ksql (V008R003C002B0370)
Type "help" for help.

test=# show password_encryption ;
 password_encryption
---------------------
 sha-256
(1 row)

2、用户连接数据库

[kingbase@node102 bin]$ ./ksql -h 192.168.1.101 -U system -W 123456 test
ksql (V008R003C002B0370)
Type "help" for help.

test=#

Tips:
注意老的客户端可能缺少对SCRAM认证机制的支持,因此无法使用用SCRAM-SHA-256加密的口令.

四、总结
对于KingbaseES V8R3较新版本支持sha-256加密认证方式,单实例环境升级md5到sha-256较为简单;但是对于KingbaseES V8R3集群环境,注意kingbasecluster的集群之间的认证,用户不支持sha-256加密认证。