RunMQTT 将设备身份与 Topic 规则分开管理。这样可以让凭证保持最小权限,也便于在设备规模扩大后审查访问范围。
策略模板
一个模板代表一种设备角色,例如只读看板、现场传感器、网关或指令服务。同一模板下的设备使用相同的 Topic 策略,但不会共享凭证。
每条策略包含:
- Topic Filter;
- 发布、订阅或双向权限;
- 可选的说明,便于后续审查。
Topic Filter 设计
Topic 应使用稳定的层级结构,先表达归属范围,再表达数据类型:
tenants/acme/sites/shanghai/devices/sensor-42/telemetry
tenants/acme/sites/shanghai/devices/sensor-42/state
tenants/acme/sites/shanghai/devices/sensor-42/commands
+ 只匹配一层,# 会匹配剩余的整棵 Topic 树。# 应仅用于可信网关或后端服务身份。
建议为遥测和指令分别设置规则。负责上报遥测的传感器通常不需要发布指令;只订阅状态的看板也通常不需要设备级发布权限。
设备凭证
每台设备都有独立的连接凭证。凭证只属于一个 Broker 和一份策略模板。删除或轮换设备身份不会改变账户登录,也不会影响其他设备。
即使多个测试客户端使用同一设备密钥,也应为每个并发连接使用不同的 Client ID。Broker 会将同时在线的 Client ID 分别计入连接数。
安全发布流程
- 先用最小 Topic 范围创建模板。
- 从模板创建一台测试设备。
- 验证允许的发布与订阅操作。
- 验证超出范围的 Topic 会被拒绝。
- 确认策略符合预期后,再添加生产设备。
共享模板的变更可能影响所有关联设备。调整通配符时,应像审查应用权限变更一样谨慎。