Skip to content

拡張認証

拡張認証により、ユーザーは独自の認証サービスを利用でき、MySQLやRedisなどの外部データベースをデータソースとしてサポートしたり、HTTPサービスに接続して認証を行うことが可能です。

注意

拡張認証はEMQXサーバレスのデプロイメントではサポートされていません。

拡張認証データソース

HTTP認証

MySQL認証

PostgreSQL認証

Redis認証

JWT認証

TIP

拡張認証データソースは最大で2つまで作成可能です。

認証の順序

拡張認証データソースを追加した後、認証ソースの順序を並べ替えることができます。デプロイメントは左から右の順に認証を行い、デフォルトの認証チェーンの順序は「デフォルト認証 -> 拡張認証」となります。

  • 認証に成功した場合、認証チェーンは終了し、クライアントの接続が許可されます。
  • 認証に失敗した場合、認証チェーンは終了し、クライアントのアクセスは拒否されます。
  • 現在のデータソースが一致しない場合は、次の認証ソースに移動して認証を行います。

認証チェーンの作成方法

デプロイメントの アクセス制御 -> 認証 -> 拡張認証 ページで認証チェーンを作成できます。拡張認証データソースが設定・接続されると、ページに 順序設定 セクションが表示されます。

  1. 認証順序 をクリックして、認証順序 ページに入ります。
  2. 認証データソースのアイコンを左右にドラッグして認証の順序を並べ替えます。
  3. 並べ替えが完了したら、確定 をクリックして順序を保存します。

auth_management

外部リソースキャッシュ

TIP

外部リソースキャッシュ機能はEMQXバージョン5.9以降のDedicated Flexエディションで利用可能です。

EMQXブローカーは、MySQLやRedisなどの外部バックエンドから取得した認証結果をキャッシュする仕組みを提供しています。このキャッシュは認証結果の検索性能を向上させ、特に高スループット環境において外部リソースへの繰り返しアクセスを削減することを目的としています。

注意

外部リソースキャッシュは拡張データソースにのみ適用されます。パスワード認証(デフォルト)にはEMQXブローカーはこのキャッシュを使用しません。

外部リソースキャッシュの動作

外部リソースキャッシュは認証結果を保存し、クラスター内のすべてのクライアントセッションで共有されます。これにより外部認証バックエンドへの重複クエリを回避します。

  1. クライアントが接続し、認証をトリガーします。
  2. EMQXブローカーはキャッシュに以前の結果があるか確認します:
    • 有効な結果が見つかれば キャッシュヒット として扱われ、外部バックエンドへの呼び出しは行われません。
    • 結果が見つからなければ キャッシュミス として扱われ、EMQXブローカーは外部バックエンドに問い合わせます。
  3. バックエンドから返された結果は将来の利用のためキャッシュに保存され、キャッシュ挿入 メトリクスが増加します。

この仕組みによりレイテンシの低減、バックエンド使用の最小化、負荷下でのシステム応答性の維持が可能となります。

外部リソースキャッシュの有効化と設定

デプロイメントの アクセス制御 -> 認証 -> 拡張認証 ページで外部リソースキャッシュを有効化・設定できます。拡張認証データソースが設定・接続されると、ページに キャッシュ設定 セクションが表示されます。

  1. 外部リソースキャッシュ設定 をクリックしてサイドパネルを開きます。
  2. パネル内の キャッシュを有効にする ボタンでキャッシュ機能をオン/オフに切り替えます。有効化後、以下のキャッシュ設定を行います:
    • 最大キャッシュアイテム数:ノードごとの最大キャッシュエントリ数。デフォルト:1,000,000
    • 最大メモリ使用量:キャッシュのメモリ使用上限。デフォルト:100 MB
    • キャッシュTTL:キャッシュエントリの有効期間。デフォルト:1分
  3. 更新 をクリックして設定を適用します。

外部リソースキャッシュのステータス監視

キャッシュのメトリクスをリアルタイムで確認するには、外部リソースキャッシュ設定 の横の矢印にカーソルを合わせ、外部リソースキャッシュステータス を選択します。サイドパネルにキャッシュメトリクスが表示されます。

メトリクスには以下が含まれます:

  • メモリ使用量:キャッシュが現在使用している総メモリ量
  • キャッシュエントリ数:保存されているキャッシュ結果の総数
  • キャッシュヒット数:EMQXがキャッシュ内で有効な結果を見つけ、外部バックエンド呼び出しを回避した回数
    • 表示されるメトリクス:現在のレート、5分平均、最大レート
  • キャッシュミス数:EMQXがキャッシュで結果を見つけられず、バックエンドクエリを行った回数
    • 表示されるメトリクス:現在のレート、5分平均、最大レート
  • キャッシュ挿入数:ミス後に新たにキャッシュに追加された結果の数
    • 表示されるメトリクス:現在のレート、5分平均、最大レート

パネル右上のボタンで統計情報の更新やリセットが可能です。

external_resource_cache_status