第 14 章 配置审计来跟踪事件


红帽构建的 Keycloak 包括一组审计功能。您可以记录每个登录和管理员操作,并在管理门户中查看这些操作。红帽构建的 Keycloak 还包括一个 Listener SPI,它侦听事件并可触发操作。内置监听程序示例包括日志文件,并在发生事件时发送电子邮件。

14.1. 审计用户事件

您可以记录并查看影响用户的每个事件。红帽构建的 Keycloak 会触发登录事件,如成功用户登录、输入错误密码或用户帐户更新等操作。默认情况下,红帽构建的 Keycloak 不存储或显示管理控制台中的事件。只有错误事件会记录到管理控制台和服务器日志文件。

流程

使用这个流程开始审核用户事件。

  1. 单击菜单中的 Realm settings
  2. Events 选项卡。
  3. User events settings 选项卡。
  4. Save events 切换到 ON

    用户事件设置

    User events settings

  5. 指定在 Expiration 字段中存储事件的时间长度。
  6. Add saved types 查看您可以保存的其他事件。

    添加类型

    Add types

  7. Add

当您要删除所有保存的事件时,点 Clear user events

流程

现在,您可以查看事件。

  1. 点菜单中的 Events 选项卡。

    用户事件

    Login Events

  2. 要过滤事件,请点击 Search user event

    搜索用户事件

    Search user event

14.1.1. 事件类型

登录事件:

Expand
事件描述

登录

用户登录。

注册

用户注册。

退出

用户注销。

令牌的代码

应用或客户端交换令牌的代码。

刷新令牌

应用程序或客户端刷新令牌。

帐户事件:

Expand
事件描述

社交链接

用户帐户链接到社交媒体提供程序。

删除 Social 链接

从社交介质帐户到用户帐户 severs 的链接。

更新电子邮件

帐户更改的电子邮件地址。

更新配置集

帐户更改的配置集。

发送密码重置

红帽构建的 Keycloak 会发送密码重置电子邮件。

更新密码

帐户更改的密码。

更新 TOTP

帐户更改基于时间的一次性密码(TOTP)设置。

删除 TOTP

红帽构建的 Keycloak 从帐户中删除 TOTP。

发送验证电子邮件

红帽构建的 Keycloak 发送电子邮件验证电子邮件。

验证电子邮件

红帽构建的 Keycloak 会验证帐户的电子邮件地址。

每个事件都有对应的错误事件。

14.1.2. 事件监听程序

事件监听程序侦听事件并根据该事件执行操作。红帽构建的 Keycloak 包括两个内置监听程序,即 Logging Event Listener 和 Email Event Listener。

14.1.2.1. 日志记录事件监听程序

启用日志记录事件 Listener 时,这个监听程序会在出错事件时写入日志文件。

来自 Logging Event Listener 的日志消息示例:

11:36:09,965 WARN  [org.keycloak.events] (default task-51) type=LOGIN_ERROR, realmId=master,
                    clientId=myapp,
                    userId=19aeb848-96fc-44f6-b0a3-59a17570d374, ipAddress=127.0.0.1,
                    error=invalid_user_credentials, auth_method=openid-connect, auth_type=code,
                    redirect_uri=http://localhost:8180/myapp,
                    code_id=b669da14-cdbb-41d0-b055-0810a0334607, username=admin
Copy to Clipboard Toggle word wrap

您可以使用日志记录事件 Listener 来防止黑客 bot 攻击:

  1. 解析 LOGIN_ERROR 事件的日志文件。
  2. 提取失败登录事件的 IP 地址。
  3. 将 IP 地址发送到入侵阻止软件框架工具。

Logging Event Listener 将事件记录到 org.keycloak.events 日志类别。默认情况下,Red Hat build of Keycloak 不会在服务器日志中包括调试日志事件。

在服务器日志中包括调试日志事件:

  1. 更改 org.keycloak.events 类别的日志级别
  2. 更改日志记录事件监听程序使用的日志级别。

要更改日志记录事件监听程序使用的日志级别,请添加以下内容:

bin/kc.[sh|bat] start --spi-events-listener-jboss-logging-success-level=info --spi-events-listener-jboss-logging-error-level=error
Copy to Clipboard Toggle word wrap

日志级别的有效值为 debuginfowarnerrorfatal

14.1.2.2. 电子邮件事件 Listener

当事件发生并支持以下事件时,电子邮件事件 Listener 会向用户帐户发送电子邮件:

  • 登录错误。
  • 更新密码。
  • 更新基于时间的一次性密码(TOTP)。
  • 删除基于时间的一次性密码(TOTP)。

流程

启用电子邮件 Listener:

  1. 单击菜单中的 Realm settings
  2. Events 选项卡。
  3. Event listener 字段。
  4. 选择 电子邮件

    事件监听程序

    Event listeners

您可以使用 --spi-events-listener-email-exclude-events 参数排除事件。例如:

kc.[sh|bat] --spi-events-listener-email-exclude-events=UPDATE_TOTP,REMOVE_TOTP
Copy to Clipboard Toggle word wrap

您可以使用 --spi-events-store-jpa-max-detail-length 参数设置数据库中每个事件详情的最大长度。如果详细信息(如 redirect_uri)长,则此设置很有用。例如:

kc.[sh|bat] --spi-events-store-jpa-max-detail-length=1000
Copy to Clipboard Toggle word wrap

另外,您可以使用 --spi-events-store-jpa-max-field-length 参数设置所有事件详情的最大长度。如果要遵循底层存储限制,则此设置很有用。例如:

kc.[sh|bat] --spi-events-store-jpa-max-field-length=2500
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat