第14章 イベントを追跡する監査の設定
Red Hat build of Keycloak には、一連の監査機能が含まれています。すべてのログインおよび管理者のアクションを記録し、管理コンソールでそれらのアクションを確認できます。Red Hat build of Keycloak には、イベントをリッスンしてアクションをトリガーできる Listener SPI も含まれています。ビルトインリスナーの例には、ログファイルとイベント発生時のメールの送信が含まれます。
14.1. ユーザーイベントの監査
ユーザーに影響するすべてのイベントを記録および表示できます。Red Hat build of Keycloak は、ユーザーがログインに成功した場合、ユーザーが間違ったパスワードを入力した場合、ユーザーがアカウントを更新した場合などのアクションに対して、ログインイベントをトリガーします。デフォルトでは、Red Hat build of 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. イベントタイプ
ログインイベント:
イベント | 説明 |
---|---|
ログイン | ユーザーがログインする。 |
登録 | ユーザーが登録する。 |
ログアウト | ユーザーがログアウトする。 |
トークンへのコード | アプリケーションまたはクライアントはトークンのコードを交換する。 |
トークンの更新 | アプリケーションまたはクライアントはトークンを更新する。 |
アカウントイベント:
イベント | 説明 |
---|---|
ソーシャルリンク | ユーザーアカウントはソーシャルメディアプロバイダーにリンクされます。 |
ソーシャルリンクの削除 | ソーシャルメディアアカウントからユーザーアカウントへのリンク。 |
メールの更新 | アカウントのメールアドレスを変更します。 |
プロファイルの更新 | アカウントのプロファイルを変更します。 |
パスワードリセットの送信 | Red Hat build of Keycloak は、パスワードリセットメールを送信します。 |
パスワードの更新 | アカウントのパスワードを変更します。 |
TOTP の更新 | アカウントの時間ベースのワンタイムパスワード (TOTP) 設定を変更します。 |
TOTP の削除 | Red Hat build of Keycloak は、アカウントから TOTP を削除します。 |
確認メールの送信 | Red Hat build of Keycloak は、メールを検証するためのメールを送信します。 |
メールの確認 | Red Hat build of Keycloak は、アカウントのメールアドレスを検証します。 |
各イベントには、対応するエラーイベントがあります。
14.1.2. イベントリスナー
イベントリスナーはイベントをリッスンし、そのイベントに基づいてアクションを実行します。Red Hat build of Keycloak には、Logging Event Listener と Email Event Listener の 2 つのビルトインリスナーが含まれています。
14.1.2.1. Logging Event Listener (ロギングイベントリスナー)
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 を使用して、ハッカーのボット攻撃から保護できます。
-
LOGIN_ERROR
イベントのログファイルを解析します。 - 失敗したログインイベントの IP アドレスを抽出します。
- IP アドレスを侵入防止ソフトウェアフレームワークツールに送信します。
Logging Event Listener は、イベントを org.keycloak.events
ログカテゴリーに記録します。Red Hat build of Keycloak には、デフォルトでサーバーログにデバッグログイベントが含まれていません。
デバッグログイベントをサーバーログに含めるには、以下を実行します。
-
org.keycloak.events
カテゴリーのログレベルを変更します。 - Logging Event Listener によって使用されるログレベルを変更します。
Logging Event Listener によって使用されるログレベルを変更するには、以下を追加します。
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. Email Event Listener (メールイベントリスナー)
Email Event Listener は、イベント発生時にユーザーのアカウントにメールを送信し、以下のイベントをサポートします。
- ログインエラー
- パスワードの更新
- 時間ベースのワンタイムパスワード (TOTP) を更新します。
- 時間ベースのワンタイムパスワード (TOTP) を削除します。
手順
メールリスナーを有効にするには、以下を実行します。
- メニューで Realm Settings をクリックします。
- Events タブをクリックします。
- Event listeners フィールドをクリックします。
Email
を選択します。Event listeners
--spi-events-listener-email-exclude-events
引数を使用してイベントを除外できます。以下に例を示します。
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
また、--spi-events-store-jpa-max-field-length
引数を使用して、すべてのイベントの詳細の最大長を設定できます。この設定は、基礎となるストレージ制限を遵守したい場合に便利です。以下に例を示します。
kc.[sh|bat] --spi-events-store-jpa-max-field-length=2500