首批通过分布式安全可靠测评,为关键业务系统打造
登录失败处理
更新时间:2023-08-01 14:14:03
对于多次登录失败的用户,OceanBase 数据库会锁定该用户,以便防止恶意的密码攻击,从而保护数据库,提升数据库的安全性。
登录失败处理策略
OceanBase 数据库的 MySQL 模式通过租户级配置项 connection_control_failed_connections_threshold 来控制用户错误登录尝试的阈值,当用户连续错误登录次数超过该配置项定义的值之后,系统会对账户进行锁定。
connection_control_failed_connections_threshold 配置项用于指定用户错误登录尝试的阈值,默认值为 0, 取值范围为 [0,2147483647]。 其中:
当取值为
0时,表示关闭该功能,即不对用户的错误登录尝试进行处理。当取值为非
0值时,待用户错误登录次数超过指定的值后,系统会对账户进行锁定,具体锁定时间通过以下公式来计算:MIN(MAX((current_failed_login_num + 1 - connection_control_failed_connections_threshold) * 1000, connection_control_min_connection_delay), connection_control_max_connection_delay)其中:
current_failed_login_num表示用户当前连续错误登录的次数,且current_failed_login_num大于或等于connection_control_failed_connections_threshold。配置项
connection_control_min_connection_delay用于指定超过连续错误登录次数阈值之后锁定时长的最小值,取值范围为 [1000,2147483647],默认值为1000,单位为毫秒。关于配置项
connection_control_min_connection_delay的更多信息,参见 connection_control_min_connection_delay。配置项
connection_control_max_connection_delay用于指定超过连续错误登录次数阈值之后锁定时长的最大值,取值范围为 [1000,2147483647],默认值为2147483647,单位为毫秒。关于配置项
connection_control_max_connection_delay的更多信息,参见 connection_control_max_connection_delay。
配置示例
使用 root 用户登录到集群的 MySQL 租户。
obclient -uroot@mysql -h127.1 -P2881 -p********执行以下语句,设置用户的错误登录次数为 5 次。指定了超过错误登录次数之后,错误登录锁定的最小时长为 60000 毫秒,错误登录锁定的最大时长为 360000 毫秒。
示例如下:
obclient> ALTER SYSTEM SET connection_control_failed_connections_threshold=5; obclient> ALTER SYSTEM SET connection_control_min_connection_delay=60000; obclient> ALTER SYSTEM SET connection_control_max_connection_delay=360000;配置项相关的详细设置及说明请参见 修改集群参数。
创建登录用户。
obclient> CREATE USER 'test' IDENTIFIED BY '*******'; Query OK, 0 rows affected (0.04 sec)验证登录失败处理策略是否生效。 当连续输入 5 次错误密码时,用户会被锁定。
obclient -h127.1 -P2881 -utest@mysql -p*******; obclient: [Warning] Using a password on the command line interface can be insecure. ERROR 5039 (01007): User locked使用
root用户登录到数据库的MySQL租户,查看失败登录信息。obclient> SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS; +-------------+-----------------+ | USERHOST | FAILED_ATTEMPTS | +-------------+-----------------+ | 'test'@'%' | 5 | +-------------+-----------------+ 1 row in set (0.005 sec)执行以下 SQL 语句,解锁用户。
注意
解锁用户的操作一般由管理员完成,普通用户如果需要执行锁定和解锁操作,必须具备全局的
ALTER USER权限。关于查看用户权限和授权的相关操作,参见 查看用户权限 和 修改用户权限。obclient> ALTER USER test ACCOUNT UNLOCK; Query OK, 0 rows affected (0.03 sec)