第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 では管理コンソールにイベントが保存または表示されません。管理コンソールとサーバーのログファイルにエラーイベントのみがログに記録されます。

イベントの保存を開始するには、ストレージを有効にします。

手順

  1. メニューの Events をクリックします。
  2. Config タブをクリックします。

    イベント設定

    Event Configuration

  3. Save EventsON に切り替えます。

    イベントの保存

    Save Events

  4. Saved Types フィールドに保存するイベントを指定します。

Clear events ボタンをクリックして、すべてのイベントを削除できます。

Expiration フィールドにイベントを保存する時間を指定します。ログインイベントストレージを有効にして設定を有効にすると、Save ボタンをクリックします。

Login Events タブをクリックしてイベントを表示します。

ログインイベント

Login Events

Filter ボタンを使用してイベントをフィルターできます。

ログインイベントフィルター

Login Events Filter

この例では、Login イベントのみをフィルターします。Update をクリックしてフィルターを実行します。

14.1.1. イベントタイプ

ログインイベント:

イベント説明

Login

ユーザーがログインする。

登録

ユーザーが登録する。

ログアウト

ユーザーがログアウトする。

トークンへのコード

アプリケーションまたはクライアントはトークンのコードを交換する。

トークンの更新

アプリケーションまたはクライアントはトークンを更新する。

アカウントイベント:

イベント説明

ソーシャルリンク

ユーザーアカウントはソーシャルメディアプロバイダーにリンクされます。

ソーシャルリンクの削除

ソーシャルメディアアカウントからユーザーアカウントへのリンク。

メールの更新

アカウントのメールアドレスを変更します。

プロファイルの更新

アカウントのプロファイルを変更します。

パスワードリセットの送信

Red Hat Single Sign-On はパスワードリセットメールを送信します。

パスワードの更新

アカウントのパスワードを変更します。

TOTP の更新

アカウントの時間ベースのワンタイムパスワード (TOTP) 設定を変更します。

TOTP の削除

Red Hat Single Sign-On は、アカウントから TOTP を削除します。

確認メールの送信

Red Hat Single Sign-On は電子メール検証メールを送信します。

メールの確認

Red Hat Single Sign-On はアカウントのメールアドレスを検証します。

各イベントには、対応するエラーイベントがあります。

14.1.2. イベントリスナー

イベントリスナーはイベントをリッスンし、そのイベントに基づいてアクションを実行します。Red Hat Single Sign-On には、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 を使用して、ハッカーのボット攻撃から保護できます。

  1. LOGIN_ERROR イベントのログファイルを解析します。
  2. 失敗したログインイベントの IP アドレスを抽出します。
  3. IP アドレスを侵入防止ソフトウェアフレームワークツールに送信します。

Logging Event Listener は、イベントを org.keycloak.events ログカテゴリーに記録します。Red Hat Single Sign-On では、デフォルトでサーバーログにデバッグログイベントが含まれていません。

デバッグログイベントをサーバーログに含めるには、以下を実行します。

  1. standalone.xml ファイルを編集します。
  2. Logging Event Listener によって使用されるログレベルを変更します。

または、org.keycloak.events のログレベルを設定することもできます。

たとえば、ログレベルを変更するには、以下を追加します。

<subsystem xmlns="urn:jboss:domain:logging:...">
    ...
    <logger category="org.keycloak.events">
        <level name="DEBUG"/>
    </logger>
</subsystem>

Logging Event Listener によって使用されるログレベルを変更するには、以下を追加します。

<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>

ログレベルの有効な値は debuginfowarnerror、および fatal です。

14.1.2.2. Email Event Listener (メールイベントリスナー)

Email Event Listener は、イベント発生時にユーザーのアカウントにメールを送信し、以下のイベントをサポートします。

  • ログインエラー
  • パスワードの更新
  • 時間ベースのワンタイムパスワード (TOTP) を更新します。
  • 時間ベースのワンタイムパスワード (TOTP) を削除します。

手順

メールリスナーを有効にするには、以下を実行します。

  1. メニューから Events をクリックします。
  2. Config タブをクリックします。
  3. Event Listeners フィールドをクリックします。
  4. Email を選択します。

イベントを除外するには、ディストリビューションに含まれる standalone.xmlstandalone-ha.xml、または domain.xml 設定ファイルを編集します。以下に例を示します。

<spi name="eventsListener">
  <provider name="email" enabled="true">
    <properties>
      <property name="exclude-events" value="[&quot;UPDATE_TOTP&quot;,&quot;REMOVE_TOTP&quot;]"/>
    </properties>
  </provider>
</spi>

standalone.xmlstandalone-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.xmlstandalone-ha.xml、または domain.xml ファイルが存在する場所の詳細は、サーバーインストールおよび設定ガイド を参照してください。