内置文件授权
内置文件方式允许你直接在配置文件中定义 ACL 规则。每当客户端尝试发布或订阅时,EMQX Edge 都会评估这些规则,并根据第一条匹配规则允许或拒绝该操作。
该方式不依赖外部服务,适用于简单、静态的权限配置。
注意
内置文件中的 ACL 规则保存后不会立即生效。规则仅在 EMQX Edge 重启后生效。
工作原理
ACL 规则使用 HOCON(一种 JSON 超集)语法编写,并按从上到下的顺序评估。一旦某条规则匹配,其权限结果就会被应用,后续规则会被忽略。每条规则可指定以下字段:
| Field | Required | Description |
|---|---|---|
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"}
]规则说明:
- 允许用户名为
dashboard的客户端订阅$SYS/#。 - 拒绝其他所有客户端订阅
$SYS/#或#。 - 允许其他所有发布和订阅操作。
有关高级规则语法,包括主题占位符(${clientid}、${username})以及使用 @ 进行精确主题匹配,请参见访问控制配置。
通过 Dashboard 配置
- 在 EMQX Edge Dashboard 中,进入 Authorization > Default。
- 点击 Settings,并启用 Enable Default Authorization。该选项默认关闭。
- 在编辑器面板中编辑 ACL 规则。
- 点击 Save。
- 重启 EMQX Edge 使变更生效。

通过配置文件配置
在 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"}
}