首页 > 数据库 > > 配置客户端接入认证-配置用户白名单
用户可通过SQL语句或者使用gs_gucZenith工具向zhba.conf中添加有效用户白名单条目,也可以使用gs_gucZenith工具从zhba.conf中删除不再使用的用户白名单条目,以限制指定用户只能从限定的IP访问数据库。如果zhba.conf内容为空,表示任意用户从任意IP均可访问数据库。
zhba.conf文件最大存储空间为64KB。各hba条目间无关联关系,声明顺序不影响功能。hba条目的格式为'type user address',参数说明请参考表1。
参数 | 描述 | 备注 |
|---|---|---|
type | 建立连接的类型。可配置为host或者hostssl。 | host是指普通TCP或SSL连接。hostssl是指SSL连接,如果服务端开启SSL,但是客户端没有配置ssl,此时服务端会拒绝连接,如果需要使用hostssl配置请参见用SSL进行安全的TCP/IP连接。 |
user | 允许访问数据库的指定用户。 如果user是“*”或者“*”单独出现表示所有用户。 | 如果user中包含特殊字符(例如#、*、TAB键等特殊字符)需要写成“user”格式。例如:host "#abc" 127.0.0.1、host "abc" 127.0.0.1 表示将双引号中的字符串整体作为user。 单行只能指定一个用户。 |
address | 允许访问数据库的指定用户的IP地址范围。可以英文逗号分隔声明多个。 | IP地址支持IPV4、IPV6地址、或指定子网掩码长度表示一个子网网段。如下均为合法格式:
|
host * 127.0.0.1,::1
host * ip1
host * ip2
配置用户白名单时,请不要删除上面的host * 127.0.0.1,::1配置,否则配置生效后会导致:
[omm@plat cfg]\>zsql omm@127...1:8000
Please enter password:
***********
GS-00331, Whitelist rejects connection for user "OMM", ip "127.0.0.1", current date "2019-03-15 16:13:46.888", please check zhba.conf or tcp valid node configuration
SQL>
用户误删后,将host * 127.0.0.1,::1配置到zhba.conf文件中并重新在线加载zhba.conf文件后,即可恢复正常。
支持以下两种方法:
在分布式部署模式下,只支持为CN增加白名单信息,不支持为DN增加白名单信息。使用如下命令:
gs_gucZenith -S 'host user address'
其中“type、user、address”的详细介绍请参考表1。例如:
gs_gucZenith -S 'host * 10.xx.xx.1'
如果为指定实例增加白名单信息,使用如下命令:
gs_gucZenith -S 'host * 10.xx.xx.1' -I cn_402

该操作仅对当前实例有效,需要在待配置用户白名单的实例上分别进行设置。
zsql user@ip:port -c "ALTER SYSTEM ADD HBA ENTRY 'type user address';"
其中“type、user、address”的详细介绍请参考表1。例如:
zsql user@ip:port -c "ALTER SYSTEM ADD HBA ENTRY 'host user2 192.168.3.222,192.168.3.225,192.168.8.0/24';"zsql user@ip:port -c "ALTER SYSTEM DELETE HBA ENTRY 'host user2 192.168.3.222,192.168.3.225,192.168.8.0/24';"仅支持使用gs_gucZenith工具删除,立即生效。
如果为所有实例增加白名单信息,使用如下命令:
gs_gucZenith -R 'host * 10.xx.xx.10'如果为指定实例增加白名单信息,使用如下命令:
gs_gucZenith -R 'host * 10.xx.xx.10' -I cn_401如果要删除的白名单信息不存在,执行命令的回显中会显示如下类似内容:
Warning: Entry 'host omm 10.xx.xx.10' not found for instance cn_401. Skip to remove this config.不支持使用gs_gucZenith工具删除集群内部节点IP和127.0.0.1。
zsql user@ip:port -c "SELECT * FROM SYS.DV_HBA";示例
[@plat1 script]\>gs_gucZenith -S 'host * 10.0.0.1'
Get cluster status.
Start getting healthy zenith instances.
Successfully got healthy zenith instances.
Start config user whitelist.
------------------------------
Set User whitelist successfully! Instance: cn_401
------------------------------
Set User whitelist successfully! Instance: cn_402
End config user whitelist.
[@plat1 script]\>gs_gucZenith -R 'host * 10.0.0.1'
Get cluster status.
Start getting healthy zenith instances.
Successfully got healthy zenith instances.
Start config user whitelist.
------------------------------
Remove User whitelist successfully! Instance: cn_401
------------------------------
Remove User whitelist successfully! Instance: cn_402
------------------------------
End config user whitelist.
[@plat1 script]\>gs_gucZenith -R 'host * 10.0.0.1'
Get cluster status.
Start getting healthy zenith instances.
Successfully got healthy zenith instances.
Start config user whitelist.
------------------------------
Remove User whitelist successfully! Instance: cn_401
------------------------------
Remove User whitelist successfully! Instance: cn_402
------------------------------
End config user whitelist.
[@plat1 script]\>gs_gucZenith -S 'host * 10.0.0.1'
Get cluster status.
Start getting healthy zenith instances.
Successfully got healthy zenith instances.
Start config user whitelist.
------------------------------
Set User whitelist successfully! Instance: cn_401
------------------------------
Set User whitelist successfully! Instance: cn_402
End config user whitelist.来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3145762/ ,如需转载,请注明出处,否则将追究法律责任。