匿名认证与 ACL 文件

匿名认证与 ACL 文件

是否允许客户端以匿名身份通过验证:

allow_anonymous = true

EMQ X 支持基于内置 ACL 以及 MySQL、 PostgreSQL 等插件的 ACL。

设置所有 ACL 规则都不能匹配时是否允许访问:

acl_nomatch = allow

设置存储 ACL 规则的默认文件:

acl_file = etc/acl.conf

设置是否允许 ACL 缓存:

enable_acl_cache = on

设置每个客户端 ACL 最大缓存数量:

acl_cache_max_size = 32

设置 ACL 缓存的有效时间:

acl_cache_ttl = 1m

etc/acl.conf 访问控制规则定义:

允许|拒绝  用户|IP地址|ClientID  发布|订阅  主题列表

访问控制规则采用 Erlang 元组格式,访问控制模块逐条匹配规则:

image

etc/acl.conf 默认访问规则设置:

允许 dashboard 用户订阅 $SYS/# :

{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.

允许本机用户发布订阅全部主题:

{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.

拒绝除本机用户以外的其他用户订阅 $SYS/# 与 # 主题:

{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.

允许上述规则以外的任何情形:

{allow, all}.

Tip

默认规则只允许本机用户订阅 $SYS/# 与 #。

EMQ X 消息服务器接收到 MQTT 客户端发布(Publish)或订阅(Subscribe)请求时,会逐条匹配 ACL 规则,直到匹配成功返回 allow 或 deny。