第 14 章 配置审核以跟踪事件
Red Hat Single Sign-On 包括一组审计功能。您可以记录每个登录和管理员操作,并在管理控制台中查看这些操作。Red Hat Single Sign-On 还包括侦听事件的 Listener SPI,它可以触发操作。内置监听程序示例包括日志文件,并在事件发生时发送电子邮件。
14.1. 登录事件
您可以记录并查看影响用户的每个事件。Red Hat Single Sign-On 会触发登录事件,例如成功用户登录、用户输入错误的密码或用户帐户更新等操作。默认情况下,Red Hat Single Sign-On 不会将事件存储在管理控制台中。只有错误事件才会记录到 Admin 控制台和服务器的日志文件。
要开始保存事件,请启用存储。
流程
- 点菜单中的 Events。
点 Config 选项卡。
事件配置
将事件 保存到 ON。
保存事件
- 在 Saved Types 字段中指定要存储的事件。
您可以点击 清除的事件 按钮删除所有事件。
在到期字段中指定存储事件 的时间长度。当您启用登录事件存储并启用设置时,点 Save 按钮。
点 Login Events 选项卡查看事件。
登录事件
您可以使用 Filter 按钮过滤事件。
登录事件过滤器
在这个示例中,我们只过滤 登录
事件。点 Update 运行过滤器。
14.1.1. 事件类型
登录事件:
事件 | 描述 |
---|---|
登录 | 用户登录。 |
注册 | 用户注册。 |
退出 | 用户注销。 |
令牌的代码 | 应用程序或客户端会交换令牌的代码。 |
刷新令牌 | 应用程序或客户端会刷新令牌。 |
帐户事件:
事件 | 描述 |
---|---|
社交链接 | 用户帐户链接到社会媒体提供程序的链接。 |
删除社交链接 | 来自社交媒体帐户的链接到用户帐户位。 |
更新电子邮件 | 帐户更改的电子邮件地址。 |
更新配置集 | 帐户更改的配置集。 |
发送密码重置 | Red Hat Single Sign-On 发送密码重置电子邮件。 |
更新密码 | 帐户更改的密码。 |
更新 TOTP | 帐户更改基于时间的一次性密码(TOTP)设置。 |
删除 TOTP | Red Hat Single Sign-On 从帐户中删除 TOTP。 |
发送验证电子邮件 | Red Hat Single Sign-On 发送一封电子邮件验证电子邮件。 |
验证电子邮件 | 红帽单点登录验证帐户的电子邮件地址。 |
每个事件都有对应的错误事件。
14.1.2. 事件监听程序
事件监听器侦听事件,并根据该事件执行操作。Red Hat Single Sign-On 包括两个内置监听程序,即 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
您可以使用日志记录事件 Listener 来防止黑客 bot 攻击:
-
解析
LOGIN_ERROR
事件的日志文件。 - 提取失败的登录事件的 IP 地址。
- 将 IP 地址发送到入侵检测软件框架工具。
Logging Event Listener 日志事件到 org.keycloak.events
日志类别。默认情况下,Red Hat Single Sign-On 在服务器日志中不包含调试日志事件。
在服务器日志中包含 debug 日志事件:
-
编辑
standalone.xml
文件。 - 更改日志记录事件监听程序使用的日志级别。
另外,您可以为 org.keycloak.events
配置日志级别。
例如,要更改日志级别并添加以下内容:
<subsystem xmlns="urn:jboss:domain:logging:..."> ... <logger category="org.keycloak.events"> <level name="DEBUG"/> </logger> </subsystem>
要更改日志记录事件监听程序使用的日志级别,请添加以下内容:
<subsystem xmlns="urn:jboss:domain:keycloak-server:..."> ... <spi name="eventsListener"> <provider name="jboss-logging" enabled="true"> <properties> <property name="success-level" value="info"/> <property name="error-level" value="error"/> </properties> </provider> </spi> </subsystem>
日志级别的有效值为 debug
、info
、warn
、error
、fatal
。
14.1.2.2. 电子邮件事件 Listener
当事件发生时,电子邮件事件 Listener 将电子邮件发送到用户帐户,并支持以下事件:
- 登录错误。
- 更新密码.
- 更新基于时间的一次性密码(TOTP)。
- 删除基于时间的一次性密码(TOTP)。
流程
启用电子邮件 Listener:
- 点菜单中的 Events。
- 点 Config 选项卡。
- 点 Event Listeners 字段。
-
选择
电子邮件
。
您可以通过编辑您的分发中包含的 standalone.xml
、standalone-ha.xml
或 domain.xml
配置文件来排除事件。例如:
<spi name="eventsListener"> <provider name="email" enabled="true"> <properties> <property name="exclude-events" value="["UPDATE_TOTP","REMOVE_TOTP"]"/> </properties> </provider> </spi>
您可以通过编辑 standalone.xml
、standalone-ha.xml
或 domain.xml
配置文件,为数据库设置最大长度。如果某个字段(例如 redirect_uri)是较长的,则此设置很有用。例如:
<spi name="eventsStore"> <provider name="jpa" enabled="true"> <properties> <property name="max-detail-length" value="1000"/> </properties> </provider> </spi>
有关 standalone.xml
、standalone-ha.xml
或 domain.xml
文件的位置的详细信息,请参阅 服务器安装和配置指南。