第 14 章 配置审计来跟踪事件
红帽构建的 Keycloak 包括一组审计功能。您可以记录每个登录和管理员操作,并在管理门户中查看这些操作。红帽构建的 Keycloak 还包括一个 Listener SPI,它侦听事件并可触发操作。内置监听程序示例包括日志文件,并在发生事件时发送电子邮件。
14.1. 审计用户事件 复制链接链接已复制到粘贴板!
您可以记录并查看影响用户的每个事件。红帽构建的 Keycloak 会触发登录事件,如成功用户登录、输入错误密码或用户帐户更新等操作。默认情况下,红帽构建的 Keycloak 不存储或显示管理控制台中的事件。只有错误事件会记录到管理控制台和服务器日志文件。
流程
使用这个流程开始审核用户事件。
- 单击菜单中的 Realm settings。
- 点 Events 选项卡。
- 点 User events settings 选项卡。
将 Save events 切换到 ON。
用户事件设置
- 指定在 Expiration 字段中存储事件的时间长度。
点 Add saved types 查看您可以保存的其他事件。
添加类型
- 点 Add。
当您要删除所有保存的事件时,点 Clear user events。
流程
现在,您可以查看事件。
点菜单中的 Events 选项卡。
用户事件
要过滤事件,请点击 Search user event。
搜索用户事件
14.1.1. 事件类型 复制链接链接已复制到粘贴板!
登录事件:
| 事件 | 描述 |
|---|---|
| 登录 | 用户登录。 |
| 注册 | 用户注册。 |
| 退出 | 用户注销。 |
| 令牌的代码 | 应用或客户端交换令牌的代码。 |
| 刷新令牌 | 应用程序或客户端刷新令牌。 |
帐户事件:
| 事件 | 描述 |
|---|---|
| 社交链接 | 用户帐户链接到社交媒体提供程序。 |
| 删除 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 的日志消息示例:
您可以使用日志记录事件 Listener 来防止黑客 bot 攻击:
-
解析
LOGIN_ERROR事件的日志文件。 - 提取失败登录事件的 IP 地址。
- 将 IP 地址发送到入侵阻止软件框架工具。
Logging Event Listener 将事件记录到 org.keycloak.events 日志类别。默认情况下,Red Hat build of Keycloak 不会在服务器日志中包括调试日志事件。
在服务器日志中包括调试日志事件:
-
更改
org.keycloak.events类别的日志级别 - 更改日志记录事件监听程序使用的日志级别。
要更改日志记录事件监听程序使用的日志级别,请添加以下内容:
bin/kc.[sh|bat] start --spi-events-listener-jboss-logging-success-level=info --spi-events-listener-jboss-logging-error-level=error
bin/kc.[sh|bat] start --spi-events-listener-jboss-logging-success-level=info --spi-events-listener-jboss-logging-error-level=error
日志级别的有效值为 debug、info、warn、error 和 fatal。
14.1.2.2. 电子邮件事件 Listener 复制链接链接已复制到粘贴板!
当事件发生并支持以下事件时,电子邮件事件 Listener 会向用户帐户发送电子邮件:
- 登录错误。
- 更新密码。
- 更新基于时间的一次性密码(TOTP)。
- 删除基于时间的一次性密码(TOTP)。
流程
启用电子邮件 Listener:
- 单击菜单中的 Realm settings。
- 点 Events 选项卡。
- 点 Event listener 字段。
选择
电子邮件。事件监听程序
您可以使用 --spi-events-listener-email-exclude-events 参数排除事件。例如:
kc.[sh|bat] --spi-events-listener-email-exclude-events=UPDATE_TOTP,REMOVE_TOTP
kc.[sh|bat] --spi-events-listener-email-exclude-events=UPDATE_TOTP,REMOVE_TOTP
您可以使用 --spi-events-store-jpa-max-detail-length 参数设置数据库中每个事件详情的最大长度。如果详细信息(如 redirect_uri)长,则此设置很有用。例如:
kc.[sh|bat] --spi-events-store-jpa-max-detail-length=1000
kc.[sh|bat] --spi-events-store-jpa-max-detail-length=1000
另外,您可以使用 --spi-events-store-jpa-max-field-length 参数设置所有事件详情的最大长度。如果要遵循底层存储限制,则此设置很有用。例如:
kc.[sh|bat] --spi-events-store-jpa-max-field-length=2500
kc.[sh|bat] --spi-events-store-jpa-max-field-length=2500