匿名认证与 ACL 文件

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

  1. allow_anonymous = true

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

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

  1. acl_nomatch = allow

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

  1. acl_file = etc/acl.conf

设置是否允许 ACL 缓存:

  1. enable_acl_cache = on

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

  1. acl_cache_max_size = 32

设置 ACL 缓存的有效时间:

  1. acl_cache_ttl = 1m

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

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

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

image

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

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

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

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

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

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

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

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

  1. {allow, all}.

Tip

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

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