EMQX Platform v5 デプロイメントにおける認可の設定と管理
EMQX Platform v5 では、クライアント認可を使用して MQTT クライアントのパブリッシュおよびサブスクライブの権限を制御します。本ドキュメントでは、クライアントID、ユーザー名、クォータ制限の設定方法や、ホワイトリスト、プレースホルダー、拡張認可を用いた高度な権限管理について詳しく解説します。
認可情報の追加
注意
- 組み込み認可の最大エントリー数は、デプロイメント接続数の2倍で、上限は100,000件です。この制限を超える場合は、外部ACLの利用を推奨します。
認可は以下の3つのレベルで制御できます。
- クライアントID:特定のクライアントIDに対する認可検証
- ユーザー名:特定のユーザー名に対する認可検証
- 全ユーザー:すべてのユーザーに対するトピックベースの認可検証
認可情報を追加する際は、クライアントIDまたはユーザー名、トピックを入力し、アクション(sub/pub/pubsub)を選択、許可するかどうかを選び、最後に追加ボタンをクリックして操作を完了します。
認可情報の一括インポート
提供されているCSVテンプレートを使用して認可情報を一括インポートできます(「全ユーザー」には対応していません)。インポート用のフィールドは以下の通りです。
clientid
:クライアントIDusername
:ユーザー名topic
:認可対象トピックaction
:アクション(sub/pub/pubsub)access
:許可の有無(allow/deny)
プレースホルダーの使用
プレースホルダーはトピックのフィールド全体を置き換える場合にのみ使用可能です。例:
a/b/${username}/c/d
。フィールドの一部を置き換えることはできません。例:a/b${username}c/d
は不可。
トピック内でプレースホルダーを使用すると、現在のクライアント情報をトピックマッチングルールに動的に置き換えられます。サポートされているプレースホルダーは以下の通りです。
${clientid}
${username}
すべてのユーザーに対して特定のトピックのみのサブスクライブまたはパブリッシュを制限したい場合、以下のように設定できます。
- ユーザー名
${username}
、トピックxx/${username}/report
- クライアントID
${clientid}
、トピックxx/${clientid}/report
ホワイトリストの有効化
注意
- デフォルトでは認可はブラックリストモード(すべてのサブスクライブとパブリッシュがデフォルトで許可される)です。
- 認可マッチングの順序は、全ユーザー認可 -> ユーザー名/クライアントID認可の順です。
- クライアントID/ユーザー名とトピックの組み合わせは一意です。同じクライアントID/ユーザー名+トピックの複数レコードがある場合、最新のレコードのみ有効です。
- 拡張認可データソースを追加している場合は、拡張認可ページの認可順序で「デフォルト認可」を最後に配置し、ホワイトリストモードを有効にしてください。
EMQX Platform でホワイトリストモード(すべてのサブスクライブとパブリッシュがデフォルトで拒否される)を有効にするには、デプロイメントの左メニューから アクセス制御 -> 認可 に移動します。
全ユーザータブで、追加ボタンをクリックして認可エントリーを追加します。トピック欄に #
を入力し、アクションを Publish & Subscribe
に設定、許可を Deny
に設定します。最後に確認をクリックしてホワイトリストモードを有効にします。
高度な権限管理のための外部認可の利用
注意
- Serverless バージョンは外部認証および認可に対応していませんが、その他のバージョンは対応しています。
- 最大2つの拡張認可をサポートしますが、パフォーマンスの観点から複数の拡張認可を同時に使用することは推奨されません。
拡張認可を有効にすると、カスタムサーバーを用いた認証および認可が可能になります。現在サポートされている外部データソースには、Redis、MySQL、PostgreSQL、およびHTTPサービスによる認証があります。
認可順序
拡張認可データソースを追加した後、認可データソースの並び替えが可能で、カスタム認可チェーンを構成できます。認可データソースのアイコンをドラッグして認可順序を設定してください。
拡張認可ページで認可順序をクリックすると順序設定画面に移動します。デプロイメントは左から右の順に認可チェックを実行します。デフォルトでは、最新に追加された認可が最初に配置され、デフォルト認可は最後に配置されます。
- アクションと権限がマッチすると、クライアント操作は許可または拒否されます。
- アクションと権限がマッチしない場合は、次の認可チェッカーにチェックが渡されます。
カスタム認可チェーン:認可データソースのアイコンは左右にドラッグして認可順序を並べ替えられます。