Skip to content

拡張認可

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

注意

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

拡張認可データソース

HTTPによる認可

MySQLによる認可

PostgreSQLによる認可

Redisによる認可

注意

拡張認可は最大2つまでサポートされていますが、パフォーマンスの観点から複数の拡張認可を同時に使用することは推奨されません。

認可の順序

拡張認可データソースを追加した後、認可ソースの順序を並べ替えることができます。デプロイメントは左から右の順に認可チェックを実行します。デフォルトでは、最新に追加された認可が最初に配置され、デフォルト認可が最後に配置されます。

  • アクションは権限と照合され、権限に基づいてクライアントの操作を許可または拒否します。

  • アクションが権限と一致しない場合は、次の認可チェッカーにチェックが渡されます。

TIP

外部の認証/認可サービスでエラーが発生した場合(例:サービス利用不可、リクエストタイムアウト、予期しないステータスコードなど)、該当ソースはスキップされ、次の認可ソースに処理が継続されます。後続のルールにマッチしない場合、クライアントはトピックのパブリッシュおよびサブスクライブが許可されます。

認可チェーンの作成方法

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

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

add_acl

ホワイトリストモードの認可チェーン要件

ホワイトリストモードが有効になっている場合、クライアントはデフォルトで全てのサブスクライブおよびパブリッシュ操作が拒否されます。許可する操作に対して明示的に権限を付与する必要があります。手順については 認可ホワイトリストモードの有効化 を参照してください。

ホワイトリストモードを有効にするには、認可チェーンの最後に「デフォルト認可」ソースが配置されていることを確認してください。これは 認可の順序 ページの 順序設定 セクションで管理できます。

外部リソースキャッシュ

TIP

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

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

注意

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

外部リソースキャッシュの仕組み

外部リソースキャッシュは認可結果を保存します。これらの結果はクラスター内の全クライアントセッションで共有され、外部認可バックエンドへの冗長なクエリを回避します。

パブリッシュ/サブスクライブ操作が外部バックエンドへのクエリをトリガーすると:

  1. EMQXは外部リソースキャッシュ(全クライアントで共有)を確認します。
  2. キャッシュに以前保存された結果があるかをチェックします:
    • 有効な結果が見つかれば キャッシュヒット とカウントされ、外部バックエンドへの呼び出しは行われません。
    • 結果が見つからなければ キャッシュミス とカウントされ、EMQXは外部バックエンドにクエリを送ります。
  3. バックエンドから返された結果は将来の利用のためキャッシュに保存され、キャッシュ挿入 メトリクスが増加します。

この仕組みによりレイテンシを削減し、バックエンドの使用を最小化し、負荷下でもシステムの応答性を維持します。

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

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

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

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

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

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

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

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

external_cache_status_authz