匿名认证与 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 元组格式,访问控制模块逐条匹配规则:
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。