第 15 章 配置审计以跟踪事件


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

15.1. 审计用户事件

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

流程

使用这个流程启动审核用户事件。

  1. 单击菜单中的 Realm settings
  2. 单击 Events 选项卡。
  3. User events settings 选项卡。
  4. 保存事件 切换为 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

15.1.1. 事件类型

登录事件:

事件描述

登录

用户登录。

注册

用户注册。

退出

用户注销。

令牌代码

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

刷新令牌

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

波形强制保护:

事件描述

被永久锁定禁用的用户

由于登录失败太多,暴力强制保护禁用了用户帐户。

临时锁定禁用的用户

由于登录失败太多,暴力强制保护禁用了用户帐户。

身份代理:

事件描述

联邦身份链接覆盖

现有的 Federated 身份链接被覆盖

联邦身份链接覆盖错误

当尝试覆盖现有的 Federated 身份链接时出现错误

OAuth:

事件描述

OAuth2 扩展授权

OAuth2 授权已执行

OAuth2 扩展授予错误

OAuth2 授权执行过程中出现错误

帐户事件:

事件描述

社交链接

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

删除社交链接

从社交媒体帐户到用户帐户服务器的链接。

更新电子邮件

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

更新配置文件

帐户更改的配置集。

发送密码重置

Red Hat build of Keycloak 会发送密码重置电子邮件。

更新密码(已弃用)

帐户的密码更改。

更新凭证

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

update TOTP (已弃用)

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

remove TOTP (已弃用)

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

删除凭证

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

发送验证电子邮件

Red Hat build of Keycloak 会发送电子邮件验证电子邮件。

验证电子邮件

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

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

15.1.2. 事件监听程序

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

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

当启用 Logging Event 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

您可以使用日志记录事件 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. 更改 Logging 事件监听器使用的日志级别。

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

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

日志级别的有效值为 debuginfowarnerrorfatal

15.1.2.2. 电子邮件事件 Listener

当事件发生并支持以下事件时,电子邮件事件 Listener 会向用户的电子邮件地址发送信息:

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

要发送电子邮件,需要满足以下条件:

  • 用户 有一个电子邮件地址。
  • 用户的电子邮件地址标记为验证。

先决条件

  • 配置了域的电子邮件设置。

流程

启用电子邮件 Listener :

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

    事件监听程序

    Event listeners

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

kc.[sh|bat] --spi-events-listener-email-exclude-events=UPDATE_CREDENTIAL,REMOVE_CREDENTIAL
Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat