KingbaseES 用户密码认证及加密算法
kingbaseES用户的口令被存储在sys_authid系统表中。
口令可以用SQL命令create user 和alter user 管理,例如 :create/alter user u1 with password '123456',或者ksql命令\password u1。
如果没有为一个用户设置口令,那么存储的口令为空并且对该用户的口令认证总会失败。
不同的身份验证方法的可用性取决于用户的密码在服务器上是如何加密的。加密方式由配置参数password_encryption控制。
如果密码使用scram-sha-256方式对密码进行了加密,那么它可以用于身份验证方法scram-sha-256,md5和password。
如果是使用md5方式加密的, 那么它只能用于md5和password认证方法规范,若使用scram-sha-256认证方式时会认证失败。
测试验证
登录数据库,分别在md5和scram-sha-256加密方式下创建u1,u2用户
test=# show password_encryption;
password_encryption
---------------------
md5
(1 行记录)
test=# create user u1 with password '12345';
CREATE ROLE
test=# set password_encryption='scram-sha-256';
SET
test=# show password_encryption;
password_encryption
---------------------
scram-sha-256
(1 行记录)
test=# create user u2 with password '12345';
CREATE ROLE
test=# select rolname,rolpassword from sys_authid where rolname in ('u1','u2');
rolname | rolpassword
---------+---------------------------------------------------------------------------------------------------------------------------------------
u1 | md508f63a23b291a334d2d9f1f462bbf4b7
u2 | SCRAM-SHA-256$4096:virLaT2ZsLfxFz0YnCZCEA==$GGOsQRVIw8uFUC8r3c4R9Hv8Xc2kYRyuon+ZhOloIS0=:ONA9yDYJ831DqLFg+ZvNuGhMeUukFjthGx8huQWybV0=
(2 行记录)
测试在不同认证方式下用户登录的情况:
1. md5 认证方式
[kbnew@singlekbdb data]$ grep -A 1 "IPv4 local connections" sys_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 md5
[kbnew@singlekbdb data]$ ksql -Uu1 -d test -p5566 -h 127.0.0.1
用户 u1 的口令:
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=> \q
[kbnew@singlekbdb data]$ ksql -Uu2 -d test -p5566 -h 127.0.0.1
用户 u2 的口令:
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=>
2个用户都可以正常登录
2. scram-sha-256认证方式
[kbnew@singlekbdb data]$ vi sys_hba.conf
[kbnew@singlekbdb data]$ sys_ctl reload -D /home/kbnew/kdb/data
server signaled
[kbnew@singlekbdb data]$ grep -A 1 "IPv4 local connections" sys_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
[kbnew@singlekbdb data]$ ksql -Uu1 -d test -p5566 -h 127.0.0.1
用户 u1 的口令:
ksql: 错误: 无法连接到服务器:致命错误: 用户 "u1" Password 认证失败
[kbnew@singlekbdb data]$ ksql -Uu2 -d test -p5566 -h 127.0.0.1
用户 u2 的口令:
ksql (V8.0)
输入 "help" 来获取帮助信息.
test=>
u1 认证失败无法登录,u2 正常登录
KINGBASE研究院