登录状态监控
概述
KaiwuDB 提供登录状态监控功能,帮助管理员跟踪用户登录行为,保障系统安全。启用该功能后,用户登录时系统会自动显示上次成功登录信息和最近一次登录失败记录:
# Last login time: 2025-03-24 07:44:34.912256+00:00, application: $ kwbase sql, host: 10.110.10.152, method: cert-password, node ID: 1
# Last failed login time: NULL, application: NULL, host: NULL, method: NULL, node ID: NULL, attempts: 0
查询登录状态信息
使用 SHOW LOGIN STATUS 语句
普通用户和管理员均可通过 SHOW LOGIN STATUS
语句查询用户的登录状态信息,包括当前登录记录、历史登录信息和登录失败记录,便于监控用户登录行为和识别异常访问。其中,
- 普通用户仅能查看自己的登录信息;
- 管理员用户(非三权分立模式下的
admin
用户和三权分立模式下的sysadmin
、secadmin
、auditadmin
用户)可查看指定用户和所有用户的登录信息。
使用系统视图
非三权分立模式下的 admin
用户和三权分立模式下的 sysadmin
用户还可以通过 kwdb_internal.user_login_status
系统视图查看登录状态信息。更多该视图的详细信息,参见kwdb_internal.user_login_status
。
配置登录状态监控
启用登录状态监控
前提条件
- 已部署和启动 KaiwuDB
- 用户具有管理员权限:
- 非三权分立模式:用户是
admin
用户或admin
角色的成员 - 三权分立模式:用户是
sysadmin
用户或sysadmin
角色的成员
- 非三权分立模式:用户是
步骤
启用登录状态监控:
SET CLUSTER SETTING security.enhanced.items = 'LOGIN_HISTORY';
禁用登录状态监控
前提条件
- 已部署和启动 KaiwuDB
- 用户具有管理员权限:
- 非三权分立模式:用户是
admin
用户或admin
角色的成员 - 三权分立模式:用户是
sysadmin
用户或sysadmin
角色的成员
- 非三权分立模式:用户是
步骤
禁用登录状态监控:
SET CLUSTER SETTING security.enhanced.items = '';
查看登录状态记录
前提条件
- 已部署和启动 KaiwuDB
- 已启用登录状态监控功能
- 用户权限要求:
- 查看自己的登录信息:任何已登录用户
- 查看指定用户或所有用户的登录信息:
- 非三权分立模式:用户是
admin
用户或admin
角色的成员 - 三权分立模式:用户是
sysadmin
、secadmin
、auditadmin
用户或sysadmin
、secadmin
、auditadmin
角色的成员
- 非三权分立模式:用户是
步骤
查看登录状态记录:
SHOW LOGIN STATUS [FOR <username>];
参数说明:
参数 说明 username
可选参数,指定要查看登录信息的用户。
- 省略该参数时,普通用户查看自己的登录信息,管理员用户查看所有用户的登录信息;
- 指定该参数时,仅管理员用户可执行此操作。返回字段说明:
字段 描述 username 用户名 login_time 本次登录时间 login_application 本次登录的应用系统 login_host 本次登录的 IP 地址 login_method 本次登录使用的登录方式 login_node_id 本次登录的节点 ID last_login_time 上一次成功登录的时间 last_login_application 上一次登录的应用系统 last_login_host 上一次登录的 IP 地址 last_login_method 上一次使用的登录方式 last_login_node_id 上一次登录的节点 ID failed_login_time 最近一次登录失败的时间 failed_login_application 最近一次登录失败的应用系统 failed_login_host 最近一次登录失败的 IP 地址 failed_login_method 最近一次登录失败时使用的方式 failed_login_node_id 最近一次登录失败的节点 ID failed_attempts 累计登录失败次数 first_login 是否为首次登录 示例:
-- 查看当前用户的登录状态(普通用户) -- 查看所有用户的登录状态(管理员用户) SHOW LOGIN STATUS; -- 查看指定用户的登录状态(需要管理员权限) SHOW LOGIN STATUS FOR testuser;