Skip to content

認可

EMQXは強力なアクセス制御機能を提供しており、EMQXダッシュボードではすぐに使える認可管理機能を備えています。ビジュアルインターフェースを通じて、ユーザーはコードを書いたり設定ファイルを手動で編集したりすることなく、EMQXの認可メカニズムを迅速に設定できます。これにより、接続直後のMQTTクライアントのパブリッシュやサブスクライブなどの操作を制御でき、さまざまなレベルやシナリオに応じた安全な設定が可能です。認可ページでは、さまざまな認可リソースを素早く作成・管理できます。

認可の作成

認可ページの右上にある作成ボタンをクリックすると、認可の作成ページに移動します。認可を作成するには、権限データを設定・保存するバックエンドを選択する必要があります。

バックエンド

バックエンドには、ファイル、組み込みデータベース、外部データベース、HTTPサーバーの利用オプションがあります。

ACLファイルを使用すると、ファイル内に定義された一連のルールをスキャンして、各パブリッシュまたはサブスクライブ要求が許可されているかを判定し、認可内容を編集・保存できます。

EMQXの組み込みデータベースを利用して認可ルールを設定・保存することも可能です。

外部データベースを利用して認可ルールを保存することもでき、MySQLPostgreSQLMongoDBRedisなどの主要なデータベースがサポートされています。

あらかじめ定義されたHTTPサービスを使い、認可要求を外部HTTPサーバーに委任することも可能です。外部HTTPサービスは権限検証機能を備えている必要があります。

image

設定

バックエンドを選択した後、認可の最終ステップとして選択したバックエンドの設定を行います。各バックエンドには接続や使用に関する設定があり、ユーザーが手動で設定する必要があります。またはACLファイルのルール内容を編集・保存します。設定が完了したら作成をクリックして認可設定を素早く完了します。なお、一度使用した認可バックエンドは再度選択できません。

ファイル

ACLファイルを使用する場合、設定パラメータページにテキスト編集ボックスが用意されており、Erlangのタプル形式で記述された認可ルールの内容を編集できます。(各ルールは必ずドット「.」で終わる必要があります)タプルは角括弧で囲まれた要素をカンマで区切ったリストです。

ファイルルールの編集方法の詳細は、ACLファイルを参照してください。

組み込みデータベース

組み込みデータベースを認可に使用する場合、パラメータ設定は不要で、作成後にユーザーページで権限ルールを設定します。

外部データベース

外部データベースを利用する場合、アクセス可能なデータベースのアドレス、データベース名、ユーザー名、パスワードを設定し、認可データを取得するためのSQL文やその他のクエリ文を入力します。パブリッシュやサブスクライブ時に認可データがデータベースから照会され、権限ルールの合否が判定されます。例としてMySQLを挙げます。

MySQLやその他の外部データベースの設定詳細は、MySQL連携や各データベースの設定ドキュメントを参照してください。

HTTPサーバー

HTTPサーバーを利用する場合、あらかじめ認可データの照合をサポートするHTTPサーバーが必要です。サブスクライブやパブリッシュ時にEMQXはデータをHTTPサービスに転送し、HTTPから返された結果により操作の権限可否を判断します。

サービスのアドレスやリクエストメソッド(POSTまたはGET)、サービスのヘッダーを設定し、パブリッシュやサブスクライブに必要な認可情報(例:usernametopicaction)をJSON形式でBodyフィールドに設定します。

HTTPサーバー認可の設定詳細は、HTTPサービスの利用を参照してください。

認可リスト

認可設定が完了すると、認可リストで管理・閲覧できます。このリストではバックエンドとその状態が表示されます。例えば、外部データベースが未展開または接続に失敗した場合、バックエンドの状態はDisconnectedと表示されます。このフィールドにカーソルを合わせると、EMQXクラスター内の全ノードにおけるデータソースの接続状況を確認できます。有効化スイッチをクリックすることで認可設定を素早く有効化または無効化できます。

認証リストと同様に、認可リストの各行はマウスでドラッグして順序を調整したり、操作列から並べ替えたりできます。EMQXは複数の認可メカニズムを作成可能で、クライアントがパブリッシュやサブスクライブ操作を行う際、順番に認可をチェックします。例えば、ある認可設定がクライアントにマッチするACLを見つけた場合、そのルールを適用し許可または拒否します。該当するルールが見つからない場合は、認可チェーンの次の設定をチェックし続けます。

image

操作列では、認可設定の編集、順序変更、削除も行えます。

注意

認可を無効にすると、クライアントのパブリッシュ/サブスクライブ時の権限操作に影響します。慎重に操作してください。

グローバル設定

リストページ右上の設定ボタンをクリックすると、認可のグローバル設定が行えます。

認可ルールにマッチしなかった場合の動作(許可または拒否)、拒否後にメッセージを無視するかクライアントを切断するかを設定可能です。認可データのキャッシュを有効にするとバックエンドへのアクセス負荷を軽減できます。右側のキャッシュクリアをクリックすると、現在の認可結果キャッシュをすべて素早くクリアできます。

image

概要

リストページのバックエンド列にある認可名をクリックすると、その認可設定の概要ページに移動します。このページでは、EMQXクラスターにおける認可関連の各種メトリクス(成功・失敗した認可数、不一致数、現在のレートなど)を確認できます。

ページ下部のノードステータスでは、各ノードごとの認可メトリクスデータを閲覧可能です。

image

権限

組み込みデータベースを使用している場合、リストページの操作列にある権限をクリックすると、認可ルールの管理・設定ができます。クライアントをClient IDやユーザー名で区別したり、全ユーザー共通の認可ルールを追加したりできます。

認可ルールを設定するには、認可設定が必要なトピックを入力し、そのトピックに対するサブスクライブまたはパブリッシュ時に権限を適用するかを選択し、許可(allow)または拒否(deny)を設定します。

image

組み込みデータベースの認可設定の詳細は、組み込みデータベースの利用を参照してください。

注意

認可を無効にすると、クライアントのパブリッシュ/サブスクライブ権限に影響します。慎重に操作してください。

設定

認可のバックエンドを変更する必要がある場合は、リストページの操作列にある設定をクリックし、設定ページでACLファイルの権限ルール内容の変更や、外部データベースの接続情報やクエリ文の変更などを行えます。

例えば、認可設定のバックエンドを変更したい場合やACLの権限ルールを修正したい場合、または外部データベースの接続情報やクエリ文に変更があった場合は、リストページの操作列の設定をクリックして設定ページで変更を行います。

詳細情報

認可の詳細については、認可の概要をご参照ください。