EMQX Cloud v5 デプロイメントにおける認可の設定と管理
EMQX Cloud 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 Cloud でホワイトリストモード(すべてのサブスクライブおよびパブリッシュをデフォルトで拒否)を有効にするには、デプロイメントの左メニューから アクセス制御 → 認可 に移動します。
全ユーザータブで、追加ボタンをクリックして認可エントリーを追加します。トピック欄に # を入力し、アクションを Publish & Subscribe に設定、権限を Deny に設定します。最後に 確認 をクリックするとホワイトリストモードが有効になります。

高度な権限管理のための外部認可の利用
注意
- Serverless バージョンは外部認証および認可をサポートしていませんが、その他のバージョンでは対応しています。
- 最大2つの拡張認可をサポートしていますが、パフォーマンスの観点から複数の拡張認可を同時に使用することは推奨されません。
拡張認可を有効にすると、カスタムサーバレスや外部サービスを用いた認証・認可が可能になります。現在サポートされている外部データソースには Redis、MySQL、PostgreSQL、および HTTP サービスによる認証があります。
認可順序
拡張認可データソースを追加した後は、認可データソースの順序を並べ替えられます。これにより、カスタム認可チェーンを構成可能です。認可データソースのアイコンをドラッグして並べ替え、認可の実行順序を設定します。
拡張認可ページで 認可順序 をクリックすると順序設定画面に移動します。デプロイメントは左から右の順に認可チェックを実行します。デフォルトでは、最新に追加した認可が先頭に配置され、デフォルト認可は最後に配置されます。
- アクションと権限がマッチすると、クライアント操作の許可または拒否が決定されます。
- アクションと権限がマッチしない場合は、次の認可チェッカーに処理が渡されます。
カスタム認可チェーン:認可データソースのアイコンを左右にドラッグして認可順序を調整できます。
