第 14 章 配置审计来跟踪事件
红帽构建的 Keycloak 包括一组审计功能。您可以记录每个登录和管理员操作,并在管理控制台中查看这些操作。红帽构建的 Keycloak 还包括一个 Listener SPI,它侦听事件并可触发操作。内置监听程序的示例包括日志文件并在发生事件时发送电子邮件。
14.1. 审计用户事件
您可以记录和查看影响用户的每个事件。红帽构建的 Keycloak 会触发登录事件,如成功用户登录、输入错误密码或用户帐户更新等操作。默认情况下,红帽构建的 Keycloak 不存储或显示管理控制台中的事件。只有错误事件会记录到管理控制台和服务器的日志文件。
流程
使用这个流程开始审核用户事件。
- 点菜单中的 Realm settings。
- 单击 Events 选项卡。
- 点 User events settings 选项卡。
将 Save 事件 切换为 ON。
用户事件设置
- 指定在 Expiration 字段中存储事件的时间长度。
点 Add saved types 查看您可以保存的其他事件。
添加类型
- 点击 Add。
当您要删除所有保存的事件时,点 Clear user events。
流程
现在,您可以查看事件。
单击菜单中的 Events 选项卡。
用户事件
要过滤事件,请点 Search user event。
搜索用户事件
14.1.1. 事件类型
登录事件:
事件 | 描述 |
---|---|
登录 | 用户登录。 |
注册 | 用户注册。 |
退出 | 用户注销。 |
令牌代码 | 应用或客户端交换令牌的代码。 |
刷新令牌 | 应用或客户端会刷新令牌。 |
brute 强制保护:
事件 | 描述 |
---|---|
由永久锁定禁用的用户 | 静默强制因为太多登录失败而永久禁用用户帐户。 |
通过临时锁定禁用的用户 | 静默强制因为太多登录失败而临时禁用用户帐户。 |
帐户事件:
事件 | 描述 |
---|---|
社交链接 | 用户帐户链接到社会媒体提供商的链接。 |
删除交换链接 | 从社交介质帐户链接到用户帐户 severs。 |
更新电子邮件 | 帐户更改的电子邮件地址。 |
更新配置文件 | 帐户更改的配置集。 |
发送密码重置 | 红帽构建的 Keycloak 会发送密码重置电子邮件。 |
更新密码 | 帐户更改的密码。 |
更新 TOTP | 帐户更改的基于时间的一次性密码(TOTP)设置。 |
删除 TOTP | 红帽构建的 Keycloak 从帐户中删除 TOTP。 |
发送验证电子邮件 | 红帽构建的 Keycloak 发送电子邮件验证电子邮件。 |
验证电子邮件 | 红帽构建的 Keycloak 会验证帐户的电子邮件地址。 |
每个事件都有对应的错误事件。
14.1.2. 事件监听程序
事件监听器侦听事件并根据该事件执行操作。红帽构建的 Keycloak 包括两个内置监听程序,即 Logging Event Listener 和 Email Event Listener。
14.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
您可以使用 Logging Event Listener 来防止黑客 bot 攻击:
-
解析
LOGIN_ERROR
事件的日志文件。 - 提取失败的登录事件的 IP 地址。
- 将 IP 地址发送到入侵防止软件框架工具。
Logging Event Listener 将事件记录到 org.keycloak.events
日志类别。默认情况下,Red Hat build of Keycloak 不会在服务器日志中包括调试日志事件。
在服务器日志中包括 debug 日志事件:
-
更改
org.keycloak.events
类别的日志级别 - 更改日志记录事件监听器使用的日志级别。
要更改日志记录事件监听程序使用的日志级别,请执行以下操作:
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、error
和 fatal
。
14.1.2.2. 电子邮件事件 Listener
当事件发生并支持以下事件时,电子邮件事件 Listener 会向用户帐户发送电子邮件:
- 登录错误。
- 更新密码.
- 更新基于时间的一次性密码(TOTP)。
- 删除基于时间的一次性密码(TOTP)。
流程
启用 Email Listener:
- 点菜单中的 Realm settings。
- 单击 Events 选项卡。
- 点 Event listeners 字段。
选择
电子邮件
。事件监听程序
您可以使用 --spi-events-listener-email-exclude-events
参数排除事件。例如:
kc.[sh|bat] --spi-events-listener-email-exclude-events=UPDATE_TOTP,REMOVE_TOTP