Skip to content

内置文件授权 ​

内置文件方式允许你直接在配置文件中定义 ACL 规则。每当客户端尝试发布或订阅时,EMQX Edge 都会评估这些规则,并根据第一条匹配规则允许或拒绝该操作。

该方式不依赖外部服务,适用于简单、静态的权限配置。

注意

内置文件中的 ACL 规则保存后不会立即生效。规则仅在 EMQX Edge 重启后生效。

工作原理 ​

ACL 规则使用 HOCON(一种 JSON 超集)语法编写,并按从上到下的顺序评估。一旦某条规则匹配,其权限结果就会被应用,后续规则会被忽略。每条规则可指定以下字段:

FieldRequiredDescription
permit是权限:allow 或 deny。
action否要控制的操作:publish、subscribe 或 pubsub。
topics否要匹配的主题过滤器列表。
username否要匹配的用户名。使用 "#" 匹配所有用户。
clientid否要匹配的 Client ID。使用 "#" 匹配所有客户端。
and否使用 AND 逻辑组合的规则列表。
or否使用 OR 逻辑组合的规则列表。

默认的最小规则集如下:

text
rules = [
  {"permit": "allow", "username": "dashboard", "action": "subscribe", "topics": ["$SYS/#"]},
  {"permit": "deny",  "username": "#",          "action": "subscribe", "topics": ["$SYS/#", "#"]},
  {"permit": "allow"}
]

规则说明:

  1. 允许用户名为 dashboard 的客户端订阅 $SYS/#。
  2. 拒绝其他所有客户端订阅 $SYS/# 或 #。
  3. 允许其他所有发布和订阅操作。

有关高级规则语法,包括主题占位符(${clientid}、${username})以及使用 @ 进行精确主题匹配,请参见访问控制配置。

通过 Dashboard 配置 ​

  1. 在 EMQX Edge Dashboard 中,进入 Authorization > Default。
  2. 点击 Settings,并启用 Enable Default Authorization。该选项默认关闭。
  3. 在编辑器面板中编辑 ACL 规则。
  4. 点击 Save。
  5. 重启 EMQX Edge 使变更生效。

Authorization built-in file editor

通过配置文件配置 ​

在 nanomq_acl.conf 中编写 ACL 规则:

text
rules = [
  {"permit": "allow", "username": "dashboard", "action": "subscribe", "topics": ["$SYS/#"]},
  {"permit": "deny",  "username": "#",          "action": "subscribe", "topics": ["$SYS/#", "#"]},
  {"permit": "allow"}
]

然后在 nanomq.conf 中引用该文件:

hocon
auth {
  acl = {include "/etc/nanomq_acl.conf"}
}