EMQ-发布订阅 ACL 概述和使用

ACL简单说,就是制定一些规则
"允许(Allow) / 拒绝(Deny)"  "谁(Who)"  "订阅(Subscribe) / 发布(Publish)"  "主题列表(Topics)"

常见的ACL配置方式有如下几种方式

全局配置

默认配置中 ACL 是开放授权的,即为allow,即授权结果为忽略(ignore)允许客户端通过授权
通过 etc/emqx.conf 中的 ACL 配置可以更改该属性:
这里修改为deny,根据需求设定

# etc/emqx.conf

## ACL 未匹配时默认授权
## Value: allow | deny
acl_nomatch = deny

配置默认 ACL 文件,使用文件定义默认 ACL 规则:

# etc/emqx.conf

acl_file = etc/acl.conf

配置 ACL 授权结果为禁止的响应动作,为 ignore 时将断开设备:

# etc/emqx.conf

## Value: ignore | disconnect
acl_deny_action = ignore

在 MQTT v3.1 和 v3.1.1 协议中发布操作被拒绝后服务器无任何报文错误返回,这是协议设计的一个缺陷。但在 MQTT v5.0 协议上已经支持应答一个相应的错误报文
 

超级用户(superuser)

  1. 认证鉴权插件启用超级用户功能后,发布订阅时 EMQ X 将优先检查客户端是否为超级用户身份
  2. 超级用户拥有最高权限,不受 ACL 限制


ACL 鉴权链

当同时启用多个 ACL 插件时,EMQ X 将按照插件开启先后顺序进行链式鉴权:

  • 一通过授权,终止链并允许客户端通过验证
  • 一旦授权失败,终止链并禁止客户端通过验证
  • 直到最后一个 ACL 插件仍未通过,根据默认授权配置判定
    • 默认授权为允许时,允许客户端通过验证
    • 默认授权为禁止时,禁止客户端通过验证


ACL 缓存 [默认已经开启]

ACL 缓存允许客户端在命中某条 ACL 规则后,便将其缓存至内存中,以便下次直接使用,客户端发布、订阅频率较高的情况下开启 ACL 缓存可以提高 ACL 检查性能。
在 etc/emqx.conf 可以配置 ACL 缓存大小与缓存时间:

# etc/emqx.conf

## 是否启用
enable_acl_cache = on

## 单个客户端最大缓存规则数量
acl_cache_max_size = 32

## 缓存失效时间,超时后缓存将被清除
acl_cache_ttl = 1m

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值