文档下载建议反馈入口

  • 概述
  • 查询登录状态信息
  • 配置登录状态监控

登录状态监控

概述

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 用户和三权分立模式下的 sysadminsecadminauditadmin 用户)可查看指定用户和所有用户的登录信息。

使用系统视图

非三权分立模式下的 admin 用户和三权分立模式下的 sysadmin 用户还可以通过 kwdb_internal.user_login_status 系统视图查看登录状态信息。更多该视图的详细信息,参见kwdb_internal.user_login_status

配置登录状态监控

启用登录状态监控

前提条件

  • 已部署和启动 KaiwuDB
  • 用户具有管理员权限:
    • 非三权分立模式:用户是 admin 用户或 admin 角色的成员
    • 三权分立模式:用户是 sysadmin 用户或 sysadmin 角色的成员

步骤

  1. 启用登录状态监控:

    SET CLUSTER SETTING security.enhanced.items = 'LOGIN_HISTORY';
    

禁用登录状态监控

前提条件

  • 已部署和启动 KaiwuDB
  • 用户具有管理员权限:
    • 非三权分立模式:用户是 admin 用户或 admin 角色的成员
    • 三权分立模式:用户是 sysadmin 用户或 sysadmin 角色的成员

步骤

  1. 禁用登录状态监控:

    SET CLUSTER SETTING security.enhanced.items = '';
    

查看登录状态记录

前提条件

  • 已部署和启动 KaiwuDB
  • 已启用登录状态监控功能
  • 用户权限要求:
    • 查看自己的登录信息:任何已登录用户
    • 查看指定用户或所有用户的登录信息:
      • 非三权分立模式:用户是 admin 用户或 admin 角色的成员
      • 三权分立模式:用户是 sysadminsecadminauditadmin 用户或 sysadminsecadminauditadmin 角色的成员

步骤

  1. 查看登录状态记录:

    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;